registreer script werk niet helemaal

Status
Niet open voor verdere reacties.

fonville

Gebruiker
Lid geworden
8 dec 2011
Berichten
93
ik heb een registreer script maar die werkt niet helemaal.
als je op registren drukt zonder iets in tevullen zegt ie dat je bent grergistreert en als je iets fout in typet gaat de form weg
PHP:
$formulier .= '<form method=post acion="">
<table>
   <tr>
      <td>
         <font face=verdana size=1>gebruikersnaam:
      </td>
      <td>
         <input type="text" name="name" maxlength="15">
      </td>
   </tr>
   <tr>
   <td>
   <font face=verdana size=1>email:
   </td>
   <td>
   <input type="text" name="email">
   </td>
   </tr>
   <tr>
      <td>
         <font face=verdana size=1>wachtwoord:
      </td>
      <td>
         <input type="password" name="pass1">
      </td>
   </tr>
   <tr>
      <td>
         <font face=verdana size=1>herhaal wachtwoord:
      </td>
      <td>
            <input type="password" name="pass2">
      </td>
   </tr>
<tr>
<td>
<input type="checkbox" name="brief" value="brief" /> ik wil me aan melden voor de nieuws brief
 </td>
 </tr>
   <tr>
      <td>
         <input type="submit" value=registreer name="submit">
      </td>
      <td>
         <input type="reset">
      </td>
   </tr>
</table>
</form>';


if(isset($_REQUEST['submit'])){
   //request everything
   $dead = "false";//We make 'dead' if some fields are not filled in don't check for pass and name in db.
   $message = "<font face=verdana size=1>vul alle velden goed in:<br>";
   $username = $_POST['name'];
   $email = $_POST['email'];
   $pass1 = $_POST['pass1'];
   $pass2 = $_POST['pass2'];
   //begin search for errors
   if($username <= 1 or $username >=15){
      $dead = "true";
      $message .= "gebruikersnaam (2-14)<br>";

   }
   if($pass1 <= 6 or $pass1 >= 20 or $pass1 !== $pass2 ) {
      $dead = "true";
      $message .= "wachtwoord (6-20) of de 2 wachtwoorden zijn niet het zelfde";
   } 
   if($dead = "false"){
include("database.php");
mysql_connect("$server","$user", "$passw"); 
mysql_select_db($database);
      $username = strtolower(trim(strip_tags($username)));
      $pass1 = trim($pass1);
      $pass1 = md5($pass1);
      $query = mysql_query("SELECT * FROM members WHERE username ='$username'");
      $aantalrijen = mysql_num_rows($query);                   
      if($aantalrijen == 1){         
         print "<font face=verdana size=1>Sorry, je gebruikers naam is al geregistreert."; 

      }
      else{
         $query1 = "INSERT INTO members(username, password, email) VALUES ('$username','$pass1','$email')";
         if(mysql_query($query1)){
             print "<font face=verdana size=1>je bent succesvol geregistreert.";
         }   
      }
      
   }
   elseif($dead == "true"){
         print $message;
		 print $formulier;
   }
}  
else{
echo $formulier;}            
?>
 
de lengte van een string bepaal je door str_len($string)
dus:
str_len($pass1) <= 6 or str_len($pass1) >= 20 or $pass1 !== $pass2

Dat is een fout die ik zo in 2 tellen al ff zag.
 
kan ik dat ook gebruiken bij username of is ddar een dandere code voor?
 
ik heb het geprobeert maar dan krijg ik deze error
Code:
Fatal error: Call to undefined function str_len() in /public_html/registreer.php on line 74
 
heb je je code aangepast? want deze staat niet op line 74
ook is het verstandig om mysql_real_escape_string te gebruiken tegen sql injection
 
ik heb het geprobeert maar dan blijft het als de code die ik in het begin gaf
 
Op regel 70 mis je een '='-teken.
PHP:
if($dead = "false")
moet zijn
PHP:
if($dead == "false")

Waarom gebruik je "true" en "false" trouwens als strings en niet als booleans?
 
ik krijg nu een andere error
Code:
Parse error: syntax error, unexpected '<' in /public_html/registreer.php on line 69
PHP:
    <h1>registreren</h1>

    <p>
      <script type="text/javascript">ddlevelsmenu.setup("1", "topbar","0","0")</script>


<?
$formulier .= '<form method=post acion="">
<table>
   <tr>
      <td>
         <font face=verdana size=1>gebruikersnaam:
      </td>
      <td>
         <input type="text" name="name" maxlength="15">
      </td>
   </tr>
   <tr>
   <td>
   <font face=verdana size=1>email:
   </td>
   <td>
   <input type="text" name="email">
   </td>
   </tr>
   <tr>
      <td>
         <font face=verdana size=1>wachtwoord:
      </td>
      <td>
         <input type="password" name="pass1">
      </td>
   </tr>
   <tr>
      <td>
         <font face=verdana size=1>herhaal wachtwoord:
      </td>
      <td>
            <input type="password" name="pass2">
      </td>
   </tr>
<tr>
<td>
<input type="checkbox" name="brief" value="brief" /> ik wil me aan melden voor de nieuws brief
 </td>
 </tr>
   <tr>
      <td>
         <input type="submit" value=registreer name="submit">
      </td>
      <td>
         <input type="reset">
      </td>
   </tr>
</table>
</form>';


if(isset($_REQUEST['submit'])){
   //request everything
   $dead = "false";//We make 'dead' if some fields are not filled in don't check for pass and name in db.
   $message = "<font face=verdana size=1>vul alle velden goed in:<br>";
   $username = $_POST['name'];
   $email = $_POST['email'];
   $pass1 = $_POST['pass1'];
   $pass2 = $_POST['pass2'];
   //begin search for errors
   if($username == <2 or $username == >15){
      $dead = "true";
      $message .= "gebruikersnaam (2-14)<br>";

   }
   if($pass1 == <6 or $pass1 == >20 or $pass1 !== $pass2 ) {
      $dead = "true";
      $message .= "wachtwoord (6-20) of de 2 wachtwoorden zijn niet het zelfde";
   } 

   if($dead == "false"){
$database ="@@@@@@@";
$server ="@@@@@@@@";
$user ="@@@@@@@@";
$passw ="@@@@@@@";
mysql_connect("$server","$user", "$passw"); 
mysql_select_db($database);
      $username = strtolower(trim(strip_tags($username)));
      $pass1 = trim($pass1);
      $pass1 = md5($pass1);
      $query = mysql_query("SELECT * FROM members WHERE username ='$username'");
      $aantalrijen = mysql_num_rows($query);                   
      if($aantalrijen == 1){         
         print "<font face=verdana size=1>Sorry, je gebruikers naam is al geregistreert."; 

      }
      else{
         $query1 = "INSERT INTO members(username, password, email) VALUES ('$username','$pass1','$email')";
         if(mysql_query($query1)){
             print "<font face=verdana size=5>je bent succesvol geregistreert.";
         }   
      }
      
   }
   elseif($dead == "true"){
         print $message;

   }
   if($dead == "true"){
   		echo"$formulier";}
 if(isset($_POST['brief'])){
mysql_query("INSERT INTO brief(naam, email) VALUES ('$username','$email')") or die (mysql_error()); 
}
}  
else{
echo $formulier;}            
?>
 
als ik nu probeer te registreren komt er te staan dat het wachtwoord te kort of telang is
PHP:
    <h1>registreren</h1>

    <p>
      <script type="text/javascript">ddlevelsmenu.setup("1", "topbar","0","0")</script>


<?
$formulier .= '<form method=post acion="">
<table>
   <tr>
      <td>
         <font face=verdana size=1>gebruikersnaam:
      </td>
      <td>
         <input type="text" name="name" maxlength="15">
      </td>
   </tr>
   <tr>
   <td>
   <font face=verdana size=1>email:
   </td>
   <td>
   <input type="text" name="email">
   </td>
   </tr>
   <tr>
      <td>
         <font face=verdana size=1>wachtwoord:
      </td>
      <td>
         <input type="password" name="pass1">
      </td>
   </tr>
   <tr>
      <td>
         <font face=verdana size=1>herhaal wachtwoord:
      </td>
      <td>
            <input type="password" name="pass2">
      </td>
   </tr>
<tr>
<td>
<input type="checkbox" name="brief" value="brief" /> ik wil me aan melden voor de nieuws brief
 </td>
 </tr>
   <tr>
      <td>
         <input type="submit" value=registreer name="submit">
      </td>
      <td>
         <input type="reset">
      </td>
   </tr>
</table>
</form>';


if(isset($_REQUEST['submit'])){
   //request everything
   $dead = "false";//We make 'dead' if some fields are not filled in don't check for pass and name in db.
   $message = "<font face=verdana size=1>vul alle velden goed in:<br>";
   $username = $_POST['name'];
   $email = $_POST['email'];
   $pass1 = $_POST['pass1'];
   $pass2 = $_POST['pass2'];
   //begin search for errors
   if($username  <= 2 or $username >= 14){
      $dead = "true";
      $message = "je gebruikersnaam is te kort of te lang(2-14)<br>";

   }

   if($pass1 !== $pass2){
		$dead = "true";
		$message = "de 2 wachtwoorden zijn niet het zelfde";
		}
	if($pass1 <= 6 or $pass1 >= 20) {
      $dead = "true";
      $message = "je wachtwoord is te kort of te lang(6-20) ";
   } 
   if($dead == "false"){
$database ="@@@@@@@";
$server ="@@@@@@@@@";
$user ="@@@@@@@@@@";
$passw ="@@@@@@@@@@";
mysql_connect("$server","$user", "$passw"); 
mysql_select_db($database);
      $username = strtolower(trim(strip_tags($username)));
      $pass1 = trim($pass1);
      $pass1 = md5($pass1);
      $query = mysql_query("SELECT * FROM members WHERE username ='$username'");
      $aantalrijen = mysql_num_rows($query);                   
      if($aantalrijen == 1){         
         print "<font face=verdana size=1>Sorry, je gebruikers naam is al geregistreert."; 

      }
      else{
         $query1 = "INSERT INTO members(username, password, email) VALUES ('$username','$pass1','$email')";
         if(mysql_query($query1)){
             print "<font face=verdana size=5>je bent succesvol geregistreert.";
         }   
      }
      
   }
   elseif($dead == "true"){
         print $message;

   }
   if($dead == "true"){
   		echo $formulier;}
 if(isset($_POST['brief'])){
 $database ="@@@@@@@@@@@";
$server ="@@@@@@@";
$user ="@@@@@@@@@@@@";
$passw ="@@@@@@@@";
mysql_connect("$server","$user", "$passw"); 
mysql_select_db($database);
mysql_query("INSERT INTO brief(naam, email) VALUES ('$username','$email')") or die (mysql_error()); 
}
}  
else{
echo $formulier;}            
?>
 
je hebt nog een fout zitten in de controle van de 2 wachtwoord

moet zijn
Code:
$pass1 != $pass2
 
waarom zet je trouwens 3x achter elkaar een if-statement ?

Als je na de eerste een "else" zet, kan je dat hele $dead gebeuren weg laten.
en nogmaals, controleer op sql injection !

vooral belangrijk bij een inlogsysteem

Een tip om misschien je database gegevens te includen vanuit een andere file, zodat je deze niet steeds in je script hoeft te zetten.
Wellicht makkelijk om een class te maken voor de connection.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan