Undefined variable
Résolu
Sinistrus
Messages postés
1010
Date d'inscription
Statut
Membre
Dernière intervention
-
arthezius Messages postés 3756 Statut Membre -
arthezius Messages postés 3756 Statut Membre -
Bonjour,
Je rencontre ces deux erreurs en local que je n'arrives pas à résoudre. Pouvez-vous m'aider svp ?
Pourtant quand je lance le script sur mon site il ne m'envoie pas d'erreur...
Notice: Undefined variable: pass2 in C:\Program Files\EasyPHP-5.3.6.0\www\header.php on line 2
Notice: Undefined variable: email in C:\Program Files\EasyPHP-5.3.6.0\www\header.php on line 4
Je rencontre ces deux erreurs en local que je n'arrives pas à résoudre. Pouvez-vous m'aider svp ?
Pourtant quand je lance le script sur mon site il ne m'envoie pas d'erreur...
Notice: Undefined variable: pass2 in C:\Program Files\EasyPHP-5.3.6.0\www\header.php on line 2
if($pass2 !=1){$resultat="S'incrire à notre newsletter";}
Notice: Undefined variable: email in C:\Program Files\EasyPHP-5.3.6.0\www\header.php on line 4
if (strlen($email) >=1){Voici mon code :<?php
if($pass2 !=1){$resultat="S'incrire à notre newsletter";}
$test = 1;
if (strlen($email) >=1){
$email = str_replace("|","",$email);
if (ereg(".+(@.+)(\.[[:alpha:]]{2}([[:alpha:]]?))$",$email)){} else {$test = 0;$resultat = "<span class=MiniRouge>Erreur ! Adresse email invalide !</span>";$pass2=1;}
$fp = fopen("result.lst","r");
while (!feof($fp)){$ligne = fgets($fp,4096);$email2 = explode("|",$ligne);}
fclose($fp);
for($x=0;$x <= sizeof($email2)-1;$x++){
if ($email2[$x] == $email){$test=0;$resultat = "<span class=MiniRouge>Erreur ! Votre adresse email est déjà enregistrée</span>";$pass2=1;}}
if($test== 1 ){
$fp = fopen("result.lst","a");fputs($fp,"$email|");fclose($fp);
$resultat = "Votre inscription a bien été validé";$pass2=1;}}
?>
A voir également:
- Undefined variable
- Variable d'environnement temp ✓ - Forum Word
- Vba excel sélectionner une plage de cellules variable ✓ - Forum VB / VBA
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp - Forum Microsoft Office
- Vba range avec variable ✓ - Forum VB / VBA
- Vérifier variable d'environnement TEMP - Forum Word
9 réponses
c'est tout simplement que tes variables n'existent pas.
met un
if(!isset($pass2)||!isset($email))
{
die("les variables ne sont pas definies")
}
et ton problème est réglé :)
met un
if(!isset($pass2)||!isset($email))
{
die("les variables ne sont pas definies")
}
et ton problème est réglé :)
Désolé, je suis NUL en php :$ C'est pourquoi je pose des questions idiotes :p
En fait ce script enregistre dans un fichier les adresses email pour faire une sorte de newsletter.
Tu as déjà tout mon code à l'exception de celui-ci :
En fait ce script enregistre dans un fichier les adresses email pour faire une sorte de newsletter.
Tu as déjà tout mon code à l'exception de celui-ci :
<form method="post" action="index.php?pass2=$pass2"> <input name="email" type="text"> <input type="submit" name="submit" value=" OK "> <br> <? echo($resultat) ?> </form>
alors dans ton code PHP, il te manque ça :
$pass2 = $_GET['pass2'];
$email= $_POST['email'];
par contre, tu devrais vérifier ton URL : index.php?pass2=$pass2
là, tu assigne la valeur '$pass2' à ta variable $pass2
ça fonctionne comme ça : ?pass2=valeur
remplace juste valeur par la valeur textuelle ou numérique que tu souhaite :)
$pass2 = $_GET['pass2'];
$email= $_POST['email'];
par contre, tu devrais vérifier ton URL : index.php?pass2=$pass2
là, tu assigne la valeur '$pass2' à ta variable $pass2
ça fonctionne comme ça : ?pass2=valeur
remplace juste valeur par la valeur textuelle ou numérique que tu souhaite :)
Il m'envoie deux erreurs sur les deux lignes que tu m'as donné.
Undefined index: pass2
Undefined index: email
J'ai aussi changé comme ça :
index.php?pass2=1
Undefined index: pass2
Undefined index: email
C'est normal ?<?php
$pass2= $_GET['pass2'];
$email= $_POST['email'];
if($pass2 !=1){$resultat="S'incrire à notre newsletter";}
$test = 1;
if (strlen($email) >=1){
$email = str_replace("|","",$email);
if (ereg(".+(@.+)(\.[[:alpha:]]{2}([[:alpha:]]?))$",$email)){} else {$test = 0;$resultat = "<span class=MiniRouge>Erreur ! Adresse email invalide !</span>";$pass2=1;}
$fp = fopen("result.lst","r");
while (!feof($fp)){$ligne = fgets($fp,4096);$email2 = explode("|",$ligne);}
fclose($fp);
for($x=0;$x <= sizeof($email2)-1;$x++){
if ($email2[$x] == $email){$test=0;$resultat = "<span class=MiniRouge>Erreur ! Votre adresse email est déjà enregistrée</span>";$pass2=1;}}
if($test== 1 ){
$fp = fopen("result.lst","a");fputs($fp,"$email|");fclose($fp);
$resultat = "Votre inscription a bien été validé";$pass2=1;}}
?>
<form method="post" action="index.php?pass2=100"><input name="email" type="text">
<input type="submit" name="submit" value=" OK "><br><? echo($resultat) ?></form>
J'ai aussi changé comme ça :
index.php?pass2=1
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Non, rien avoir avec l'index tout le code que je t'ai envoyé Templier Nocturne, je ne travail pour l'instant que sur la page header.php
Le code complet que j'ai posté plus haut n'est qu'au fichier header.php :s
Penses tu que c'est normal que <?php fasse erreur et que <? résoude le problème ?
Le code complet que j'ai posté plus haut n'est qu'au fichier header.php :s
Penses tu que c'est normal que <?php fasse erreur et que <? résoude le problème ?
Ton formulaire:
Quand tu envoi ton formulaire (en cliquant sur le bouton Ok) tu es redirigé vers la page index.php?pass2=1
Autrement dit, sur la page index.php, tu as le script PHP qui te permet de traiter ton formulaire. Tu as donc sur cette page le script suivant:
Le script de traitement est donc sur la même page que le formulaire.
Il te faut donc ajouter une condition qui vérifie si le formulaire est bien envoyé ou non.
Dans le cas contraire, le script PHP est exécuté à chaque affichage de la page ce qui n'est pas le but.
<?php
if(isset($_POST['submit']) && $_POST['submit']=='Ok')
{
// Le script PHP
}
?>
Note: Je me suis permis de supprimer les espaces en trop sur le bouton submit et de fermer la balise (avec />)
Ta page donne donc (avec les correctifs):
J'ai également rendu ton code plus lisible en ajoutant d'avantage de saut de ligne ainsi que des tabulations.
Voilà qui devrait mieux fonctionner.
Edit: si tu travail sur un fichier header.php, il faut que tu modifie l'url en fonction sur la balise <form>
« La recherche commence là où s'arrête la connaissance. »
<form method="post" action="index.php?pass2=$pass2"> <input name="email" type="text"> <input type="submit" name="submit" value="OK "> <br> <? echo($resultat) ?> </form>
Quand tu envoi ton formulaire (en cliquant sur le bouton Ok) tu es redirigé vers la page index.php?pass2=1
Autrement dit, sur la page index.php, tu as le script PHP qui te permet de traiter ton formulaire. Tu as donc sur cette page le script suivant:
<?php
$pass2= $_GET['pass2'];
$email= $_POST['email'];
if($pass2 !=1){$resultat="S'incrire à notre newsletter";}
$test = 1;
if (strlen($email) >=1){
$email = str_replace("|","",$email);
if (ereg(".+(@.+)(\.[[:alpha:]]{2}([[:alpha:]]?))$",$email)){} else {$test = 0;$resultat = "<span class=MiniRouge>Erreur ! Adresse email invalide !</span>";$pass2=1;}
$fp = fopen("result.lst","r");
while (!feof($fp)){$ligne = fgets($fp,4096);$email2 = explode("|",$ligne);}
fclose($fp);
for($x=0;$x <= sizeof($email2)-1;$x++){
if ($email2[$x] == $email){$test=0;$resultat = "<span class=MiniRouge>Erreur ! Votre adresse email est déjà enregistrée</span>";$pass2=1;}}
if($test== 1 ){
$fp = fopen("result.lst","a");fputs($fp,"$email|");fclose($fp);
$resultat = "Votre inscription a bien été validé";$pass2=1;}}
?>
<form method="post" action="index.php?pass2=100">
<input name="email" type="text">
<input type="submit" name="submit" value="OK "><br><? echo($resultat) ?></form>
Le script de traitement est donc sur la même page que le formulaire.
Il te faut donc ajouter une condition qui vérifie si le formulaire est bien envoyé ou non.
Dans le cas contraire, le script PHP est exécuté à chaque affichage de la page ce qui n'est pas le but.
<?php
if(isset($_POST['submit']) && $_POST['submit']=='Ok')
{
// Le script PHP
}
?>
Note: Je me suis permis de supprimer les espaces en trop sur le bouton submit et de fermer la balise (avec />)
<input type="submit" name="submit" value="OK" />
Ta page donne donc (avec les correctifs):
<?php
if(isset($_POST['submit']) && $_POST['submit']=='Ok')
{
$pass2= $_GET['pass2'];
$email= $_POST['email'];
if($pass2 !=1)
{
$resultat="S'incrire à notre newsletter";
}
$test = 1;
if (strlen($email) >=1)
{
$email = str_replace("|","",$email);
if (ereg(".+(@.+)(\.[[:alpha:]]{2}([[:alpha:]]?))$",$email))
{}
else{
$test = 0;
$resultat = "<span class=MiniRouge>Erreur ! Adresse email invalide !</span>";
$pass2=1;
}
$fp = fopen("result.lst","r");
while (!feof($fp))
{
$ligne = fgets($fp,4096);$email2 = explode("|",$ligne);
}
fclose($fp);
for($x=0;$x <= sizeof($email2)-1;$x++)
{
if ($email2[$x] == $email)
{
$test=0;
$resultat = "<span class=MiniRouge>Erreur ! Votre adresse email est déjà enregistrée</span>";
$pass2=1;
}
}
if($test== 1 )
{
$fp = fopen("result.lst","a");
fputs($fp,"$email|");
fclose($fp);
$resultat = "Votre inscription a bien été validé";
$pass2=1;
}
}
}
?>
<form method="post" action="index.php?pass2=100">
<input name="email" type="text" />
<input type="submit" name="submit" value="OK" />
</form>
<?php
if(isset($resultat)) echo '<br>'.$resultat;
?>
J'ai également rendu ton code plus lisible en ajoutant d'avantage de saut de ligne ainsi que des tabulations.
Voilà qui devrait mieux fonctionner.
Edit: si tu travail sur un fichier header.php, il faut que tu modifie l'url en fonction sur la balise <form>
« La recherche commence là où s'arrête la connaissance. »