2014-06-13 7 views
0

je crée un webservice et j'appelle une fonction pour confirmer l'utilisateur, mais chaque fois que j'appelle la fonction, je reçois le message "inscription confirmée" même si j'envoie le mauvais vercode, voici mon l'implémentation de la fonction, considère ckey est constante et non modifiable et vercode est modifiable pour chaque utilisateur, je pense que le problème concerne les instructions mysql.ma fonction PHP sélectionnée ne fonctionne pas correctement

// RPC method 2 (confirm user) 
function confuser($ckey, $vercode) { 
    $db = mysql_connect("localhost","root"); 
    if(!$db){ 
     return 'Error: cannot open the connection'; 
     exit; 
    } 

    mysql_select_db('user_info'); 
     $query = "select * from personal where vercode='".$vercode."' and ckey='".$ckey."' "; 
     $result = mysql_query($query, $db); 
     if($result){ 
      return 'registration confirmed'; 
      } 
      else{ 
       return 'wrong verification , send it again!'; 
      } 
} 
+0

utilisation 'mysql_num_rows' pour voir s'il y a des lignes ou non http://www.php.net//manual/en/function .mysql-num-rows.php –

Répondre

0

mysql_query() retourne une poignée de résultat sur toute requête réussie. Cela inclut les requêtes qui ont renvoyé des lignes ZERO. Un résultat de ligne zéro est toujours un résultat valide, il arrive juste d'avoir rien dedans. Vous n'obtiendrez PAS de «faux» retour sur les requêtes à ligne zéro.

Vous devez vérifier le nombre de lignes trouvées, par ex.

$result = mysql_query(...); 
if (!$result) { 
    die(mysql_error()); // in case something did blow up 
} 
if (mysql_num_rows($result) == 0) { 
    ... wrong verification ... 
} 
0
mysql_select_db('user_info') or die(mysql_error()); 
$query = "select * from personal where vercode='$vercode' and ckey='$ckey'"; 
$result = mysql_query($query, $db) or die(mysql_error()); 
if(mysql_num_rows($result) > 0) 
    return 'registration confirmed';  
return 'wrong verification , send it again!'; 

S'il vous plaît noter que vous devez sécuriser vos variables vercode de $ et de CKEY $. mysql_real_escape_string() a été utilisé pour être la méthode d'échappement, mais maintenant mysql_real_escape_string(), et la plupart des fonctions que vous avez utilisées seront obsolètes à partir de php 5.5.0. Vous pouvez également utiliser PDO prepared statements

2

Vous pouvez utiliser quelque chose comme ceci:

if(mysql_num_rows($result) > 0){ 
    return 'registration confirmed'; 
} 
else{ 
    return 'wrong verification , send it again!'; 
} 
+0

Vous voudrez utiliser la réponse de @vivek sharma. $ result retournera toujours vrai s'il a été exécuté avec succès. Le comptage du nombre de lignes retournées est le meilleur moyen de vérifier s'il existe ou non avec les informations données. – user1890328

Questions connexes