Erreur en PHP
Kuromi
Messages postés
65
Statut
Membre
-
Kuromi Messages postés 65 Statut Membre -
Kuromi Messages postés 65 Statut Membre -
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
- Expert php pinterest - Télécharger - Langages
- Erreur 0x80070643 - Accueil - Windows
- Iptv erreur de lecture - Forum TV & Vidéo
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
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 !