2009-07-22 13 views
0

Salut, j'ai créé un reg.php. J'ai besoin d'inclure la validation du serveur en utilisant php. J'ai écrit le code et dissillé le script java dans mon navigateur. Mais il montre « que vous avez réussi même enregistré si je ne donne aucun field.this mon codevalidation côté serveur

<?php 
$hostname = "xxxx"; 
$username = "xxx"; 
$password = "xxx"; 
$dbName  = "xxx"; 
$conn  = mysql_connect($hostname,$username,$password) or die(mysql_error()); 
mysql_select_db($dbName); 
if(isset($_POST["submit"])) 
{ 
$username=$_POST['usr']; 
$address1=$_POST['addr1']; 
$address2=$_POST['addr2']; 
$password=$_POST['pswd']; 
$email=$_POST['email']; 
$errormsg; 
if($_POST['usr']=="") 
{ 
    $errormsg='enter the name S'; 
echo $errormsg; 
} 
elseif(trim($address1)=="") 
{ 
    $errormsg="entre the address1 S"; 
    } 
elseif(trim($address2)=="") 
{ 
    $errormsg="entre the address2 S"; 
    } 
elseif(trim($password)=="") 
{ 
    $errormsg="entre the password S"; 
    } 
elseif(trim($email)=="") 
{ 
    $errormessage="enter the email S"; 
} 

mysql_query("INSERT INTO `xxx` (`id` , `Name` , `Address1` , `Address2` , `password` , `email`) 
VALUES (
'', '$username', '$address1', '$address2', '$password', '$email' 
)")or die(mysql_error()); ; 
echo "you have successfully registered "; 
} 
?> 

<html> 

<head> 

<script type="text/javascript"> 

function fun() 
    { 
     valid=true; 

     if(document.reg1.usr.value =="") 
      { 

       alert("fill the name"); 
       valid=false; 
      } 
     if(document.reg1.addr1.value =="") 
      { 

       alert("fill the address"); 
       valid=false; 
      } 
     if(document.reg1.addr2.value =="") 
      { 

       alert("fill the address2"); 
       valid=false; 
      } 
    if(document.reg1.pswd.value =="") 
      { 

       alert("fill the password"); 
       valid=false; 
      } 
    if(document.reg1.email.value =="") 
      { 

       alert("fill the email id"); 
       valid=false; 
      } 
    return valid; 
    } 



</script> 
</head> 
<body> 
    <form name="reg1" action="try.php" method="post"> 
     <table border="0" cellpadding="2" cellspacing="2" width="1000" align="centre"> 
     <tr> 
     <th>Registration form</th></tr> 

     <tr><TD align="left">username<TD/> 
     <TD><input type="text" name= "usr"></TD></tr> 
     <tr> 

     <td align="left">address1<td/> 
     <td><input type="text" name="addr1"></td> 
     </tr> 
     <td align="left" width="15%">address2<td/> 
     <td><input type="text" name=addr2></td></tr> 
     <tr> 
     <td align="left">password<td/> 
     <td><input type="password" name="pswd"></td> 
     </tr> 
     <tr> 
     <td align="left">emailaddress<td/> 
     <td><input type="text" name="email"></td> 
     </tr> 
     <tr> 
     <tr><TD></TD> 
     <td><input type="submit" name="submit" value="submit" onclick="return fun();"></td></tr> 
     </table> 
    </form> 


</body> 
</html> 

quelqu'un peut-il aider plz ?????

Répondre

0

Vous devez tout séparer après la validation si extrémités à une autre partie du script

if (empty($errormsg)) 
{ 
    mysql_query("INSERT INTO `xxx` (`id` , `Name` , `Address1` , `Address2` , `password` , `email`) 
    VALUES (
    '', '$username', '$address1', '$address2', '$password', '$email' 
    )")or die(mysql_error()); ; 
    echo "you have successfully registered "; 
} 

Autres conseils:.

  • vous devez garder les messages d'erreur un tableau, et de les afficher dans une liste
  • vous pouvez utiliser un script différent pour un message de succès
0

le cas échéant, si les conditions souvent Vous devez arrêter le script échoue.

comme il est maintenant affichera une erreur, mais continuez à la partie de la requête.

vous pourriez mettre un autre {} autour de la partie de la requête pour résoudre ce problème.

0

Votre code d'insertion est exécuté même si un message d'erreur est défini. vous pouvez ajouter

if (empty($errormessage)) { 


mysql_query... 


} 
0

Eh bien, vous devez mettre votre

mysql_query("INSERT INTO `xxx` (`id` , `Name` , `Address1` , `Address2` , `password`  ,`email`) 
VALUES (
'', '$username', '$address1', '$address2', '$password', '$email' 
)")or die(mysql_error()); ; 

dans une instruction else après la dernière elseif:

[...] 
elseif(trim($email)=="") 
{ 
    $errormessage="enter the email S"; 
} 
else 
{ 
    mysql_query("INSERT INTO `xxx` (`id` , `Name` , `Address1` , `Address2` , `password` , `email`) 
    VALUES (
    '', '$username', '$address1', '$address2', '$password', '$email' 
    )")or die(mysql_error()); ; 
    echo "you have successfully registered "; 
} 
1

Première — être compatible avec vos variables. Vous ne pouvez pas vous décider entre $errormsg et $errormessage.

Deuxième — appliquer un peu de réflexion. if vous avez défini un message d'erreur, puis l'afficher else faire la requête SQL.

Troisième — pour l'amour du ciel, fix your huge SQL injection vulnerability.

+1

injection vulnérabilité? où :-D +1 pour cela –

+0

Il n'y a qu'un seul point où il y a un SQL, donc c'est facile à trouver (surtout avec les informations dans la question liée) – Quentin

+0

Salut merci pour votre suggestion précieuse .. J'ai tout fait à l'exception du querry . mais je reçois toujours la même chose –

Questions connexes