2013-01-15 3 views
0

J'ai un script d'inscription sur ma page, et il est traité comme ceci:PHP validation de formulaire ne fonctionne pas correctement

<?php 
include "inc/config.php"; 
     $firstname = $_POST['firstname']; 
     $lastname = $_POST['lastname']; 
     $email = $_POST['email']; 
     $pass = $_POST['pass']; 
     $conditions = $_POST['conditions']; 
     if($firstname==""||$lastname==""||$email==""||$pass==""||$conditions==""){ 
     echo " 
     <p>Tiedoissa oli puutteita :(</p> 
      <ul>"; 
      if($firstname == ""){ 
       echo "<li>Etunimi puuttuu.</li>"; 
      } 
      if($lastname == ""){ 
       echo "<li>Sukunimi puuttuu. </li>"; 
      } 
      if($email == ""){ 
       echo "<li>Sähköposti puuttuu. </li>"; 
      } 
      if($pass == ""){ 
       echo "<li>Salasana puuttuu. </li>"; 
      } 
      if($conditions == ""){ 
       echo "<li>Luitko ehdot? </li>"; 
      } 
     echo "</ul>"; 
     return false; 
     } 
     $rq = "INSERT INTO Users (Firstname,Lastname,Email,Password) VALUES ($firstname,$lastname,$email,$pass)"; 
     if(!mysqli_query($dblink,$rq)){ 
      echo "Rekisteröityminen epäonnistui tuntemattomasta syystä! :("; 
     } 
     else{ 
      echo "Rekisteröinti onnistui!<br> 
      Käyttäjätunnuksesi on <strong>$email</strong> ja salasanasi on <strong>$pass</strong>.<br> 
      Voit nyt kirjautua sisään. 
      "; 
     } 


?> 

Je vais avoir du mal à trouver la bonne méthode de comparaison de la valeur de forme, comme je l'ai essayé ==, === et NULL sur la comparaison. Mais je reçois toujours tous les messages d'erreur, ou aucun d'entre eux. Qu'est-ce que je fais mal?

est ici le code html du formulaire:

<form class="form-horizontal span6" method="post" id="registrationform"> 
      <div class="control-group"> 
      <label class="control-label">Etunimi</label> 
      <div class="controls"> 
       <input type="text" name="firstname"> 
      </div> 
      </div> 
      <div class="control-group"> 
      <label class="control-label">Sukunimi</label> 
      <div class="controls"> 
       <input type="text" name="lastname"> 
      </div> 
      </div> 
      <div class="control-group"> 
      <label class="control-label">Sähköposti</label> 
      <div class="controls"> 
       <input type="text" name="email"> 
      </div> 
      </div> 
      <div class="control-group"> 
      <label class="control-label">Salasana</label> 
      <div class="controls"> 
       <input type="password" name="pass"> 
      </div> 
      </div> 
      <div class="control-group"> 
      <div class="controls"> 
       <label class="checkbox"> 
       <input type="checkbox" name="newsletter"> Tilaan uutiskirjeen 
       </label> 
       <label class="checkbox"> 
       <input type="checkbox" name="conditions"> Hyväksyn ehdot 
       </label> 
       <button type="submit" class="btn btn-success" id="registerbtn">Rekisteröidy</button> 
      </div> 
      </div> 
     </form> 
+0

utilisez la fonction vide http://in3.php.net/manual/fr/fonction.empty.php pour comparer – Afsar

+0

Pouvez-vous ajouter print_r ($ _ POST) en haut du script, recharger dans le navigateur et mettre à jour votre post avec ce qu'il affiche? Et quand vous dites que vous obtenez "tous les messages d'erreur" pouvez-vous préciser qui exactement? Parce qu'il semble peu probable que vous puissiez voir l'écho de vos déclarations d'écho, et ceux qui sont importants – Hans

+1

Vous êtes vulnérable à l'injection SQL. Vous devez soit échapper à votre entrée, ou, puisque vous utilisez déjà mysqli, pourquoi ne pas utiliser des instructions préparées? –

Répondre

1

Étant donné que votre code n'est pas en fonction donc return false; ne fonctionne pas comme prévu, et le code continue à s'exécuter ci-dessous. Vos comparaisons peuvent déjà être bien. Modifier que renvoie false; à die();

Ok alors voici est probablement là le problème

if($firstname=="" || $lastname=="" || $email=="" || $pass=="" || $conditions==""){ 

Vous vérifiez pour cela et que l'enregistrement fonctionne même lorsque vous ne soumettez le formulaire et il apparaît comme tout a une erreur. Vous devez donc effectuer cette comparaison uniquement lorsque le formulaire est soumis et non lors d'une charge normale. Alors envelopper votre code php autour de certains isset comme

if(isset($_POST["firstname"]) && isset($_POST["lastname"])) 
{ 
// all your php code 
} 

Autre que cela, votre code fonctionne bien. Il compare comme vous l'attendez.

+0

L'a fait, mais il ne fonctionne toujours pas comme il se doit. J'ai tous les champs remplis de texte, et la case cochée, mais il est toujours dit que tous les champs ne sont pas remplis. –

+0

@ChristianNikkanen pouvez-vous également poster votre code html s'il vous plaît –

+0

Là, ajouté. Rien d'étrange? –

1

Salut, vous pouvez utiliser fonction php par exemple utiliser si (isset ($ prenom)!) Ou si (vide ($ prenom)) si vous voulez maintenant si $ prenom est nul

Questions connexes