2010-09-07 10 views
1

Je mon formulaire de connexion si je ne vérifie pas me rappeler case à cocher dans le script PHP il donne <b>Notice</b>: Undefined index: autologin in erreur. dans mon dossier .php je $check_autologin = $_POST['autologin']; Et je vérifie est l'utilisateur vérifiécase à cocher arrête mon script Jquery

if($check_autologin == 1) 
    { 
    $password_hash = $encrypted_mypassword;  
    setcookie ($cookie_name, 'usr='.$username.'&hash='.$password_hash, time() + $cookie_time); 
    } 

et ceci est mon champ de case à cocher <input type="checkbox" name="autologin" value="1">Remember Me<br />

Comment peut cocher la case peut retourner une valeur par défaut si elle est pas cochée ?

+1

est l'erreur vraiment dans votre script jQuery? Cela ressemble plus à une erreur PHP pour moi. – cori

+0

Si vous pensez que le problème est avec jquery, vous devriez publier votre javascript et non votre PHP. – jigfox

+0

aucun problème est dans php.But avec Jquery et Json je prends de la valeur dans le script php.S'il y a erreur que le script n'envoie pas de valeur et Jquery ne fonctionne pas. – Ercan

Répondre

2

Je soupçonne que le problème est lorsque votre case n'est pas cochée, la valeur n'existe pas dans le tableau $ _POST.

Essayez isolant votre chèque de valeur à l'aide

isset($_POST['autologin']) 

ainsi:

$check_autologin = false; 
if(isset($_POST['autologin'])) { 
    $check_autologin = $_POST['autologin']; 
} 
+1

+1 pour 'isset()'. Lorsque PHP est en mode strict, il produit un avis si vous n'avez pas vérifié l'existence avant d'utiliser un index. 'empty()' est une alternative utile. – jwueller

0

Undefined index signifie que vous demandez PHP pour vous dire la valeur d'un élément de tableau qui n'existe pas .

C'est un 'Avis', ce qui signifie que ce n'est pas une erreur fatale et n'empêche pas le programme de fonctionner, mais c'est une bonne idée de corriger. (il est également possible de configurer PHP afin qu'il ne signale pas les événements de niveau notification, mais encore une fois, mieux vaut simplement corriger le problème)

Comment le réparer?

a) Comme déjà suggéré, vérifiez si elle a été définie avant de vérifier quelle est la valeur. Ainsi, plutôt que de simplement dire si ($ _ POST [ 'x']) dire si (isset ($ _ POST [ 'x]) & & $ _POST [' x '])

b) SUPRESS Explicitement l'avertissement. PHP vous permet de le faire avec le symbole @. Donc, vous diriez si (@ $ _ POST ['x'])

c) Assurez-vous de ne faire référence qu'aux variables que vous connaissez. Cela signifierait une approche différente de votre code, mais pourrait être un début pour le rendre plus robuste en général. Par exemple, plutôt que de regarder directement les valeurs de $ _POST que vous attendez, vous pouvez écrire une boucle foreach ($ _ POST) qui vous permet de tout inspecter dans $ _POST. Cela vous permet également de repérer lorsque quelqu'un publie des valeurs que vous ne prévoyez pas recevoir.