Erreur en PHP
Kuromi
Messages postés
55
Date d'inscription
Statut
Membre
Dernière intervention
-
Kuromi Messages postés 55 Date d'inscription Statut Membre Dernière intervention -
Kuromi Messages postés 55 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis en apprentissage du PHP, et certaines choses me sont encore inconnues, et je n'ai pour l'instant aucunes réponses précises pour mon script.
Suite à la réalisation d'un petit script (permettant des envois de données dans ma DB), lorsque je visite la page pour un test, il m'affiche 3 erreurs.
C'est là que l'on se dit que mes variables ne sont pas (ou mal) déclarées.
Mais elle le sont bien un peu plus loin dans le scipt.
Maintenant, cette erreur ne se produit que lors du premier lancement du script.
En appuyant sur "Enregistrer" il remet une page vierge normale.
Question:
-Comment retirer les erreur qui s'affichent lors de la première visite sur la page ?
-Pourquoi lorsque l'on appuis sur "Enregistrer" il ne met pas le message "Vous n'avez pas rempli tous les champs."? Je suppose que c'est parce que le message n'est envoyé que si l'un des 3 champs est remplis, mais où est-ce écrit qu'il renvois la page si aucuns des champs n'est remplis ?
Voici le code pour plus de clarté. (avec la partie HTML en bas)
Je suis en apprentissage du PHP, et certaines choses me sont encore inconnues, et je n'ai pour l'instant aucunes réponses précises pour mon script.
Suite à la réalisation d'un petit script (permettant des envois de données dans ma DB), lorsque je visite la page pour un test, il m'affiche 3 erreurs.
Notice: Undefined index: login in C:\wamp\www\Zephyr\register.php on line 10 Notice: Undefined index: pass in C:\wamp\www\Zephyr\register.php on line 10 Notice: Undefined index: cpass in C:\wamp\www\Zephyr\register.php on line 10
C'est là que l'on se dit que mes variables ne sont pas (ou mal) déclarées.
Mais elle le sont bien un peu plus loin dans le scipt.
Maintenant, cette erreur ne se produit que lors du premier lancement du script.
En appuyant sur "Enregistrer" il remet une page vierge normale.
Question:
-Comment retirer les erreur qui s'affichent lors de la première visite sur la page ?
-Pourquoi lorsque l'on appuis sur "Enregistrer" il ne met pas le message "Vous n'avez pas rempli tous les champs."? Je suppose que c'est parce que le message n'est envoyé que si l'un des 3 champs est remplis, mais où est-ce écrit qu'il renvois la page si aucuns des champs n'est remplis ?
Voici le code pour plus de clarté. (avec la partie HTML en bas)
<?php if(!@include("connection.php"))die("Cette page n'existe pas sur le serveur, merci d'informer le webmaster du site si ce problème venait à se reproduire."); $connect = @mysql_connect($db_serv, $db_user, $db_pass); @mysql_select_db($db_name, $connect); $ip=$_SERVER['REMOTE_ADDR']; if($_POST['login']!='' || $_POST['pass']!='' || $_POST['cpass']!='') { if($_POST['login']!='' && $_POST['pass']!='' && $_POST['cpass']!='') { function l2j_encrypt($db_password) { return base64_encode(pack("H*", sha1(utf8_encode($db_password)))); } $login = $_POST['login']; $db_passw = l2j_encrypt($_POST['pass']); $cpassw = l2j_encrypt($_POST['cpass']); $ok = 1; if($db_passw==$cpassw) { if($ok==1) { $checkaccexist = @mysql_query("SELECT login FROM accounts WHERE login = '$login'"); $checknum = @mysql_num_rows($checkaccexist); if($checknum==1) { echo '<form action="" method="POST">Le compte "'.$login.'" existe déjà.<br /><input type="submit" value="Ressayer"></form>'; } else { $lastactive = 0; $db_pass = $_POST['pass']; @mysql_query("INSERT INTO accounts(login, password, lastactive, lastIP) VALUES ('$login', '$db_passw', '$lastactive', '$ip') ;"); echo '<form action="" method="POST">Accompte "'.$login.'" crée à partir de l ip: '.$ip.'<br /><input type="submit" value="OK"></form>'; } } } else { echo '<form action="" method="POST">Mot de passe incorrecte.<br /><input type="submit" value="Ressayer"></form>'; } } else { echo '<form action="" method="POST">Vous navez pas rempli tous les champs.<br /><input type="submit" value="Ressayer"></form>'; } } @mysql_close($connect); ?> <p class="title">Enregistrer un nouveau compte</p> <center> <table> <form action="" method="POST"> <tr><td>Identifiant: <td><input name="login" type="text"> <tr><td>Mot de Passe: <td><input name="pass" type="password"> <tr><td>Confirmer Passe: <td><input name="cpass" type="password"> <tr><td><td><input name="submit" type="submit" value="Enregister"> </form> </table></center> </p>
A voir également:
- Erreur en PHP
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Expert php pinterest - Télécharger - Langages
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
2 réponses
pour les erreurs Undefined index c'est normal car tes variables sont récupérés à partir du formulaire , et comme quand tu rentre dans la page tu n'as donc pas pas rempli le formulaire alors le script php n'a rien à récupérer , donc il faut dire au script php de s'éxécuter que si les variable $_POST sont défini . pour cela il faut utiliser la fonction isset() , tu fais
if( isset($_POST['login'] && isset($_POST['pass']) && isset($_POST['cpass']) )
{
TON SCRIPT PHP
}
et pour afficher le message "Vous n'avez pas rempli tous les champs." tu utilise la fonction empty() au lieu de $variable != ""
empty() vérifie si la variable est vide
!empty verifie si la variable n'est pas vide
if( !empty($_POST['login']) && !empty($_POST['pass']) && !empty($_POST['cpass']))
{
}
if( isset($_POST['login'] && isset($_POST['pass']) && isset($_POST['cpass']) )
{
TON SCRIPT PHP
}
et pour afficher le message "Vous n'avez pas rempli tous les champs." tu utilise la fonction empty() au lieu de $variable != ""
empty() vérifie si la variable est vide
!empty verifie si la variable n'est pas vide
if( !empty($_POST['login']) && !empty($_POST['pass']) && !empty($_POST['cpass']))
{
}
En tout cas tout est claire maintenant, merci infiniment !