2013-04-28 2 views
1

Je suis encore un débutant de php et j'ai rencontré un peu de problème avec l'opérateur logique & &. J'ai un jeton et un script de réponse secret qui sont les deux zones de texte. Quand un utilisateur soumet le jeton et y répond, le script va dans la base de données et si toutes les vérifications sont effacées (messages d'erreur, etc.), alors il passe à l'étape suivante (taper dans le nouveau mot de passe). Le script fonctionne très bien dans mon site en ligne mais pour une raison quelconque, il ne fonctionne pas localement sur mon ordinateur (ce qui m'a rendu un peu paranoïaque pour être honnête, juste au cas où ce n'est pas sûr à 100%). Avec beaucoup de tester les points de script pour ce morceau de code:Opérateur logique (&&) ne fonctionne pas localement dans php

if(isset($uid) && isset($uidTwo)) { 
      header('Location: reset.php'); 
      exit(); 
     } 

$ UID stocke les users_id de la base de données des utilisateurs et les uidTwo $ stocke les tables_id de la base de données de réponse (qui a également a id_utilisateur comme l'un des ses colonnes primaires). Lorsque les deux sont mis en correspondance (True), le script passe à la page de réinitialisation.

J'ai fait beaucoup de tests, en changeant le & & en || semble fonctionner et le traiter jusqu'à la page suivante, mais cela fonctionne seulement pour la boîte à jetons et vous pouvez taper n'importe quoi dans la boîte de réponse comme (ftgyhh) par exemple, donc ce n'est pas bon.

J'ai vérifié les en-têtes déjà envoyés etc parce que j'ai des messages d'erreur, mais rien ne semble fonctionner pour le script localement.

Cela veut-il que quelqu'un a des idées que je ne pouvais manquer de? EDIT: J'ai fait un var_dump sur $ uidTwo et j'ai trouvé qu'il était NULL, puis j'ai réalisé que ça pourrait être le côté de la base de données, donc j'ai importé une version antérieure de la base de données et j'ai trouvé ça. Le script fonctionne maintenant localement, mais en lisant les fichiers sql de la base de données avant et après, je ne vois pas ce que j'ai fait de mal. Eh bien, ces choses sont là pour nous essayer. Vive les gars pour votre aide

+2

Pouvez-vous afficher le code qui définit '$ uid' et' $ uidTwo'? – Ryan

+0

Ouais le code pour le $ uid est: list ($ uid) = mysql_fetch_array ($ result); et c'est la même chose pour $ uidTwo – bluefiredragon

+0

Juste un indice: isset peut vérifier plusieurs variables de sorte que l'opérateur logique n'est pas nécessaire. Voir le manuel de PHP [isset()] (http://php.net/manual/de/function.isset.php) – SirDerpington

Répondre

3

Il n'y a pas assez d'informations ici pour répondre. Pour votre information, vous pouvez faire:

if (isset($uid, $uidTwo)) { 
    header('Location: reset.php'); 
    exit(); 
} 

au lieu d'utiliser la & &.

je ferais quelque chose comme

echo $uid ? "Uid is set" : "Uid is not set"; 
echo $uidTwo ? "Uid2 is set" : "Uid2 is not set"; 

avant l'en-tête et commencer à travailler le chemin du retour jusqu'à ce qu'ils ne sont pas ce que je pense qu'ils devraient être.

+0

Cela fonctionne mieux que &&. Salutations pour le post-mate – bluefiredragon

0

isset() vérifie si une variable existe. vous voulez probablement utiliser empty() pour voir si une variable contient une valeur, comme celui-ci:

if(empty($uid) && empty($uidTwo)) { 
     header('Location: reset.php'); 
     exit(); 
} 
Questions connexes