Hallo allemaal,

Ik heb een probleem met een Mobile Money script (www.mobilemoney.com) waarmee je na het betalen een account kan maken op mijn website.

De bedoeling is dat je een 0909 nummer belt en dan een pincode krijgt die je moet invullen op de site.
Als het pincode correct is kan je je registreren en zo een account aanmaken.

Ik heb zelf gebeld om te kijken of alles werkt, na de betaling kan ik een account aanmaken maar klik ik op verder dan krijg ik deze error:

''Je hebt geen pincode ingevoerd!
Ga terug''

Ik gebruik het Groot Inlogsysteem versie 2 van Jorik Berkepas.

Hier is het betaal/registreer script:


<?php
include("htmltop.php");

if($_SERVER['REQUEST_METHOD'] == "POST"){ // Als er op submit gedruk is...

if(empty($_POST['pincode'])){ // Controleer of er wel een pincode is ingevoerd
echo "Je hebt geen pincode ingevoerd!<br /><a href=\"javascript&#058;history.back();\">Ga terug</a>";
} else {
//Er is een pincode ingevoerd, controleer of de pincode geldig is.

$username="MIJNAAM"; // De gebruikersnaam voor het inloggen op mobilemoney site
$password="MIJNPASS"; // Het wachtwoord voor de gebruikersnaam
$pincode = "".$_POST['pincode']."";
$layout = "valid"; //De manier waarop de ouput wordt weergegeven, zie http://www.mobilemoney.com/index.asp?page=affiliates&action=settings&subaction=validate   voor de opties

$url = "http://www.mobilemoney.biz/validate.asp?username=$username&password=$password&pincode=$pincode&output=$layout";
$result = implode ('', file($url));

if($result == "-1" OR $result == "-3") {
print "De ingegeven pincode klopt niet! Ga terug en probeer het opnieuw!";
} elseif($result == "-2") {
print "De ingegeven pincode klopt niet! Ga terug en probeer het opnieuw!";
} elseif($result == "1") {
/*Hier komt dat het afgeschermde gedeelte van je website*/
?>
<?
// Groot Inlogsysteem versie 2
// Copyright Jorik Berkepas
// Support by [email protected] (MSN|Email)
// Pagina: registreer.php: Registreren voor nieuw account
include("config.php");
include("htmltop.php");

if(!isset($_SESSION['user_id'])) {
if(isset($_POST['submit'])) {
  // Uitvoeren
  // Velden controleren
  if($_POST['user'] != "" AND $_POST['pass1'] != "" AND $_POST['pass2'] != "" AND $_POST['email'] != "") {
   // Gebuikersnaamcheck
   $sql = "SELECT id FROM gebruikers WHERE naam='".$_POST['user']."'";
   $query = mysql_query($sql);
   $tellen = mysql_num_rows($query);
   if($tellen == 0) {
    // E-mailcheck
    if(preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,6}$/i", $_POST['email'])) {
     // Email correct
     if($_POST['pass1'] == $_POST['pass2']) {
      $actcode = mt_srand((double)microtime()*100000);
      while(strlen($actcode) <= 10) {
       $i = chr(mt_rand (0,255));
       if(eregi("^[a-z0-9]$", $i)) {
        $actcode = $actcode.$i;
       }
      }
      $md5pass = md5($_POST['pass1']);
      $sql = "INSERT INTO gebruikers (naam,wachtwoord,status,email,actief,actcode) VALUES ('".$_POST['user']."','".$md5pass."',0,'".$_POST['email']."',0,'".$actcode."')";
      $query = mysql_query($sql);
      if($query == TRUE) {
       $sql = "SELECT id FROM gebruikers WHERE naam='".$_POST['user']."'";
       $query = mysql_query($sql);
       $rij = mysql_fetch_object($query);
       $dbid = htmlspecialchars($rij->id);
       $bericht = "Beste ".$_POST['user'].",\nJe hebt je geregistreerd op de site ".$sitenaam.", dit is de activatie mail van je registratie.\nOm je account te activeren, druk je op de link onderaan deze mail.\n\n";
       $bericht .= "REGISTRATIE BEVESTIGEN: ".$forgoturl."activeren.php?id=".$dbid."&code=".$actcode."&registratie=true \n\n";
       $bericht .= "Zodra je op deze link geklikt hebt, kun je inloggen met:\n";
       $bericht .= "Gebruikersnaam: ".$_POST['user']."\n";
       $bericht .= "Wachtwoord: ".$_POST['pass1']."\n";
       $bericht .= "** Dit is een automatisch verzonden bericht **";
       $mail = mail($_POST['email'],"Registratie ".$sitenaam,$bericht,"From: ".$sitenaam." <".$sitemail.">");
       if($mail == TRUE) {
        echo "Je bent succesvol geregistreerd! Zodra je de link in de mail hebt bezocht kun je inloggen.<br />\n<a href=\"inloggen.php\">&laquo; Naar de inlogpagina</a>";
       }else{
        echo "Fout opgetreden tijdens verzenden van e-mail. Neem contact op met <a href=\"mailto:".$sitemail."\">".$sitemail."</a>.";
       }
      }else{
       echo "Er is een fout opgetreden tijdens het toevoegen van je account. Probeer het later nog eens.<br />\n<a href=\"javascript&#058;history.back()\">&laquo; Ga terug</a>";
      }
     }else{
      echo "De door jou opgegeven wachtwoorden komen niet overeen.<br />\n<a href=\"javascript&#058;history.back()\">&laquo; Ga terug</a>";
     }
    }else{
     echo "Het e-mailadres dat jij opgaf, komt niet overeen met hoe een e-mailadres eruit zou moeten zien ([email protected]).<br />\n<a href=\"javascript&#058;history.back()\">&laquo; Ga terug</a>";
    }
   }else{
    echo "De gebruikersnaam '".$_POST['user']."' is reeds in gebruik. Probeer een andere gebruikersnaam.<br />\n<a href=\"javascript&#058;history.back()\">&laquo; Ga terug</a>";
   }
  }else{
   echo "Je bent vergeten één of meerdere velden in te vullen.<br />\n<a href=\"javascript&#058;history.back()\">&laquo; Ga terug</a>";
  }
}else{
  // Formulier
 
  # Email
  # User
  # Pass + check
  # emailcheck (uitvoeren)
  ?>
  <form method="post" action="registreer.php">
   <table>
    <tr>
     <td>Gebruikersnaam:</td><td><input type="text" name="user" maxlength="50" /></td>
    </tr>
    <tr>
     <td>Wachtwoord:</td><td><input type="password" name="pass1" /></td>
    </tr>
    <tr>
     <td>Herhaal:</td><td><input type="password" name="pass2" /></td>
    </tr>
    <tr>
     <td>E-mailadres:</td><td><input type="text" name="email" maxlength="100" /></td>
    </tr>
    <tr>
     <td></td><td><input type="submit" name="submit" value="Registreer" /></td>
    </tr>
   </table>
  </form>
  <small>Na de registratie zal er een e-mail naar je e-mailadres gestuurd worden ter activatie. Tot die tijd kun
  je nog niet inloggen.</small>
  <?
}
}else{
echo "Je bent momenteel ingelogd, registreren is niet mogelijk terwijl je bent ingelogd!";
}

include("htmlbottom.php");
?>

<?
}
}

} else {
//Er is nog niet op submit gedrukt, laat het pincode veld zien
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">
<center><img src=\"images/header.gif\" width=\"300\" height=\"60\" border=\"0\"><br><br>Bel voor het krijgen van je pincode 0909 - 90 999 79 (&euro; 1.15/gesprek) <p>
Pincode:<br>
<input type=\"text\" name=\"pincode\">
<br /><br><input type=\"submit\" value=\"Verzend pincode\">
</form></center>";
}

?>


De bedoeling is dus dat ik dit bericht krijg "Je bent succesvol geregistreerd! Zodra je de link in de mail hebt bezocht kun je inloggen" en dat het registreren werkt en niet de error: ''Je hebt geen pincode ingevoerd! Ga terug''

Alvast bedankt

mvg,
Sync

PS: Als ik nog meer informatie moet neerzetten wil ik graag weten welke.
Je mist de ACCOUNT-TOKEN. Zie de documentatie daar.
Overigens is er een recentere versie van dat inlogsysteem, misschien even kijken welke bugs er zijn en dergelijke?
@ Aar

Ik denk niet dat het daaraan ligt, ik ging bellen en kreeg gewoon het geld op mijn MobileMoney account.
De pincode deed het ook gewoon goed en het registreer gedeelte kwam zoals het hoort.
Alleen hij geeft altijd de error Je hebt geen pincode ingevoerd! Ga terug.
Hij geeft die ook als je een onjuist email doet, dan hoort hij een andere error message te geven.
Je kan ook gewoon alles openlaten in het registreer form en klikken op registreer, dan geeft hij nog steeds dezelfde error...
@ Evert

Als ik deze php pagina verander met de originele registreer.php (van het inlogsysteem) werkt het wel.
Voordat ik een MobileMoney script zocht heb ik het inlogsysteem uitgebreid getest om te kijken of het wat is, alles werkte gewoon goed.

ps: bedankt voor de reacties btw :)
schopke
kick
kick
niemand die het probleem ziet? :(
Ik ga even wat vragen stellen... zodat je het zelf ziet (ipv 4 keer kicken).

Hoeveel <forms> heb je?
Naar welke pagina laat je het formulier verzenden?
Wanneer krijg je (vanaf de kant van php) die melding?


Ik stel deze vragen zodat je het ziet.
De eerste vraag zal waarschijnlijk de oplossing zijn.
De tweede is veiligheid.
Omdat je $_SERVER['PHP_SELF'] gebruikt kan ik dus bepalen waar het formulier heen gaat ;).
index.php?page=register&nogiets=watikwil maakt dus een extra _GET aan.
En dat wil je wellicht niet, want daarmee kan je heel veel fout doen.
Zeker omdat je hem niet controleerd (omdat je niet weet dat ie er is!).

En de melding is wel leuk, maar houdt inderdaad niets tegen. Er zit geen actie aan vast, behalve 1 echo.
Na je PB toch maar eens meer in je code gedoken (wat een bende...) en ontdekt dat php exact doet wat je wilt.

Oplossing kan zijn:

Onderaan je php-script verander je:
Van <input type=\"text\" name=\"pincode\">
Naar <input type=\"text\" name=\"pincode\"><input type=\"hidden\" name=\"check_pincode\" value=\"1\">

Je maakt dus een verborgen veld aan.
Die geeft aan of je op pincode checkt of niet.

Dan weer helemaal naar boven.
Daar verander je:
Van if(empty($_POST['pincode'])){
Naar if(empty($_POST['pincode']) AND $_POST['check_pincode'] == 1){

En dat zal de truc waarschiijnlijk doen.
Nu voer je die laatste php-controle alleen uit als $_POST['check_code'] 1 is.
En dat is alleen als je het formulier verzend met de pincode.
Doe je dat niet, dan krijg je de melding niet.

Tuurlijk is dit met cUrl etc wel te bypassen, maar ach.


Bedankt voor het nogmaals kijken van de code.
Helaas werkt het nog niet.
Ik krijg de volgende error:

"De ingegeven pincode klopt niet! Ga terug en probeer het opnieuw!"

De pincodes die je krijgt kan je maar 1 keer gebruiken.
Nadat je hem op het begin hebt ingevuld doet hij het dus niet meer in dat verborgen veld.
Zo een manier had ik al eens geprobeerd.

Reageren