[RESOLU] Problème "Undefined variable" dans un formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Problème "Undefined variable" dans un formulaire

Re: Problème "Undefined variable" dans un formulaire

par Zorals » 25 mai 2011, 16:18

Heu non, il n'y a pas de lien vers ce tuto.

Mais tu le trouve dans un livre http://www.amazon.fr/PHP-MySQL-CSS-Jean ... 300017598l

Et j'ai pas trouvé les fichiers sur le net.

J'ai fais par rapport au bouquin et à mes variables.

Cela me permet de comprendre les rouages du php dans un 1er temps.
Mais également à en faire une utilisation pratique.
Et comprendre les bugs.

Re: Problème "Undefined variable" dans un formulaire

par Maitrepylos » 25 mai 2011, 14:44

et si tu nous donnais le lien de ce tuto, pour que on puisse voir de quoi il retourne .

Re: Problème "Undefined variable" dans un formulaire

par Zorals » 25 mai 2011, 14:42

Bonjour,

En faite $email existe bien.
Elle est récupéré via inscription_p1.php
Elle existe dans la base de donnée.
CREATE TABLE IF NOT EXISTS `membres` (
  `clef` int(11) NOT NULL AUTO_INCREMENT,
  `nom_usage` varchar(25) NOT NULL DEFAULT '',
  `mot_passe` varchar(20) NOT NULL DEFAULT '',
  `prenom` varchar(30) NOT NULL DEFAULT '',
  `code_postal` varchar(12) NOT NULL DEFAULT '',
  `ville` varchar(35) NOT NULL DEFAULT '',
  `pays` char(3) NOT NULL,
  `email` varchar(50) NOT NULL DEFAULT '',
  `date_inscription` date NOT NULL,
  `date_misajour` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `question` char(50) NOT NULL COMMENT 'Quel est le nom de jeune fille de votre mère?',
  `reponse` char(50) NOT NULL,
  PRIMARY KEY (`clef`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=23 ;

La problématique c'est que cette partie doit être noté dans
inscription_p2.php
$sql="select clef from membres where email='$email'";
$resultat=@mysql_query($sql, $id_link);
$nombre=mysql_num_rows ($resultat);
if ($nombre >0){
$auth=1;
include "inscription_p1.php";
exit;
}

Et la partie de récupération doit être noté dans
inscription_p1.php
if ($auth==1){
	echo "<p><front color=\"#FF0000\">Vous êtes déjà membre et vous avez peut-être 
	<a href=\"oubli.php\">oublié votre mot de passe</a>.</font></p>";
	}
Et pas comme expliqué dans ce tuto, que j'ai démarré.

Il y a d'autres erreurs, sur d'autres pages.
Cela ne dérange personne si je continue ici, comme ça pas de vilain doublon.
Je trouve que cela est un bon début pour comprendre le code.
Et ça pourra servir un jour à quelqu'un qui souhaite le refaire.

Re: Problème "Undefined variable" dans un formulaire

par moogli » 25 mai 2011, 14:33

alors avec ton code on peux voir que $auth ne pose pas de problème car il s'agit d'une affectation et dans ce cas la déclaration est implicite si la variables n'existe pas.

Par contre $email, elle n'existe pas, je suppose que cela vient de l'url ou d'un formulaire ? dans ce cas il faut utiliser $_GET ou $_POST => http://phpdebutant.org/article56.php

@+

Re: Problème "Undefined variable" dans un formulaire

par Zorals » 25 mai 2011, 14:28

Oui,

Je sais bien que le poste est ancien.
Mais comme cela parle exactement de la même chose et que bon faire des doublons c'est mauvais pour le carma, lol.

Alors :

Si je comprend bien ma vérification sur le champ email c'est ça :
<?php

// Requête sql ou je sélectionne la variable email.
$sql="select clef from membres where email='$email'";

//Le résultat de la requête et la liaison à la table
$resultat=@mysql_query($sql, $id_link);

//Le nombre qui prend en compte mon résultat.
$nombre=mysql_num_rows ($resultat);

// La on boucle.
if ($nombre >0){

//Heu mon problème et heu je sais pas je trouve pas ma variable
$auth=1;

// et le résultat si l'email et déjà deux fois dans la base
include "inscription_p1.php";

//La sortie
exit;}?>
C'est plus lisible comme cela.
Effectivement variable pas déclaré c'est bien cela.

Merci pour vos réponses.

Re: Problème "Undefined variable" dans un formulaire

par Maitrepylos » 25 mai 2011, 14:08

Oufti #-o un post vieux de 5 ans, ça ne me rajeunis pas.

Comment est utilisé $auth ?, toujours la même question

Re: Problème "Undefined variable" dans un formulaire

par moogli » 25 mai 2011, 13:50

hum,

un seul code de la page en question permettrais d'y voir clair (la y a des bout partout on sais pas trop ce que c'est).

mais clairement la variable $auth n'existe pas, il faut donc revoir sa provenance (comme indiqué sur le message précendent ;) ).

@+

Re: Problème "Undefined variable" dans un formulaire

par Zorals » 25 mai 2011, 13:20

Bonjour,

Et bien je suis tombé sur ce message et comme je suis en train de faire cette même activité.
Je viens ici car je rencontre des difficultés.

Moi c'est dans : inscription_p2.php

J'ai cette erreur là :
0){ $auth=1; include "inscription_p1.php"; exit; } ?> Veuillez maintenant choisir le nom d'usage que vous porterez dans le club et le mot de passe pour y accéder. Vous pourrez ainsi rencontrer d'autres membres et modifier votre profil, voire le supprimer éventuellement.
Votre nom d'usage existe déjà dans la base de données. Soit vous êtes déjà membre et vous avez oublié votre mot de passe. Soit il s'agit d'une simple coïncidence, dans lequel cas, entrez un nouveau nom d'usage...
"; } ?>


Notice: Undefined variable: auth in ****\*****\www\inscription_p2.php on line 64


et le code de la page est :
<?php
include "commun/connexion.inc.php";

if (isset($_POST['prenom']))
{
// Instructions si $_POST['truc'] existe
	$_POST['prenom']=$prenom;
}
//$prenom = $_POST['prenom'];
if (isset($_POST['code_postal']))
{
	$_POST['code_postal']=$code_postal;
}
//$code_postal = $_POST['code_postal'];
if(isset($_POST['ville']))
{
	$_POST['ville']=$ville;
}
//$ville = $_POST['ville'];
if(isset($_POST['email']))
{
	$_POST['email']=$email;
}
//$email = $_POST['email'];

$sql = "INSERT INTO membres (prenom, code_postal, ville, pays, email) VALUES ('$prenom', '$code_postal', '$ville', '$pays', '$email')";
@mysql_query($sql, $id_link);

$sql="select clef from membres where email='$email'";
$resultat=@mysql_query($sql, $id_link);
$nombre=mysql_num_rows ($resultat);

if ($nombre >0){
$auth=1;
include "inscription_p1.php";
exit;
}
?>
<html>
<head>
<title>Inscription</title>
</head>
<body>
Veuillez maintenant choisir le nom d'usage que vous porterez dans le club et le mot de passe pour y accéder. Vous pourrez ainsi rencontrer
d'autres membres et modifier votre profil, voire le supprimer éventuellement.
<form action="traitement_id.php" method="post" name="page_2">
<table cellspacing="2" cellpadding="2" border="0">
<tr>
	<td>Votre nom</td>
	<td><input type="text" name="nom_usage"></td>
<?
	if ($auth==2){
	echo "<p><font color=\"#FF0000\">Votre nom d'usage existe déjà dans la base de données. Soit vous êtes déjà
	membre et vous avez <a href=\"oubli.php\">oublié votre mot de passe</a>. Soit il s'agit d'une simple coïncidence,
	dans lequel cas, entrez un nouveau nom d'usage...</font><p>";
	}
	?>
</tr>
<tr>
	<td>Votre mot de passe</td>
	<td><input type="password" name="mot_passe"></td>
<?php
	if ($auth==1){
	echo "<p><front color=\"#FF0000\">Vous êtes déjà membre et vous avez peut-être 
	<a href=\"oubli.php\">oublié votre mot de passe</a>.</font></p>";
	}
	?>
</tr>
<tr>
	<td>Retapez votre mot de passe</td>
	<td><input type="password" name="mot_passebis"></td>
</tr>
<tr>
	<td>Votre question secrète en cas d'oubli</td>
	<td><input type="text" name="question" value="Quel est le nom de jeune fille de votre mère?" size="50"></td>
</tr>
<tr>
	<td>Votre réponse</td>
	<td><input type="text" name="reponse"></td>
</tr>
</table>
</form>
</body>
</html>

par Maitrepylos » 23 mars 2006, 16:33

Bonjour,

dans "inscription_1", comment est définit la variable
$auth==1
, si tu veux récupérer la valeur d'un champs d'un formulaire que tu proposes(j'imagine login et passwd).

Alors la valeur doit être récupérer soit par
$_POST['auth']
soit par
$_GET['auth']
.

De plus pour faciliter la relecture de ton code utilise les tags php ci-dessus pour colorer ton post

Problème "Undefined variable" dans un formulaire

par Knockedwonder » 23 mars 2006, 16:03

Hello,

Voilà, je commence seulement à travailler avec html, php et javascript. Puisque c'est en forgeant qu'on devient forgeron, je monte un petit site dans lequel je demande au visiteur de s'inscrire en trois étapes :

- inscription_p1.php
- inscription_p2.php
- traitement_id.php

Le gros problème c'est qu'apparemment, je n'ai défini aucune variable et je ne sais pas comment faire pour y arriver (pardonnez mon ignorance svp) . Mes pages s'affichent mais avec les messages d'erreurs suivants (les portions de code sont à la fin du message) :

Page inscription_p1.php


Notice: Undefined variable: auth in c:\program files\easyphp1-8\www\mon site\inscription_p1.php on line 6



Page inscription_p2.php


Notice: Undefined variable: prenom in c:\program files\easyphp1-8\www\mon site\inscription_p2.php on line 5

Notice: Undefined variable: email in c:\program files\easyphp1-8\www\mon site\inscription_p2.php on line 5

Notice: Undefined variable: code_postal in c:\program files\easyphp1-8\www\mon site\inscription_p2.php on line 5

Notice: Undefined variable: ville in c:\program files\easyphp1-8\www\mon site\inscription_p2.php on line 5

Notice: Undefined variable: pays in c:\program files\easyphp1-8\www\mon site\inscription_p2.php on line 5

Notice: Undefined variable: email in c:\program files\easyphp1-8\www\mon site\inscription_p2.php on line 8

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\mon site\inscription_p2.php on line 10

Notice: Undefined variable: auth in c:\program files\easyphp1-8\www\mon site\inscription_p2.php on line 16



Page traitement_id.php


Notice: Undefined variable: reponse in c:\program files\easyphp1-8\www\mon site\traitement_id.php on line 7

Notice: Undefined variable: login in c:\program files\easyphp1-8\www\mon site\traitement_id.php on line 8

Notice: Undefined variable: date_inscription in c:\program files\easyphp1-8\www\mon site\traitement_id.php on line 9

Notice: Undefined variable: question in c:\program files\easyphp1-8\www\mon site\traitement_id.php on line 9

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\mon site\traitement_id.php on line 14

Notice: Undefined variable: prenom in c:\program files\easyphp1-8\www\mon site\traitement_id.php on line 25

Notice: Undefined variable: email in c:\program files\easyphp1-8\www\mon site\traitement_id.php on line 27

Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c:\program files\easyphp1-8\www\mon site\traitement_id.php on line 27


Voici les portions de code qui posent problème :

inscription_p1.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/xhtml/DTD/xhtml1-transitional.dtd"">

<?php
include "commun/connexion.inc.php";

if ($auth==1) {
echo "<p>Vous êtes déjà membre et vous avez <a href=\"oubli.php\">oublié votre mot de passe</a>?</p>";
}
?>

inscription_p2.php

<?php
include "commun/connexion.inc.php";
$sql="INSERT INTO membres (prenom, email, code_postal, ville, pays, email) Values ('$prenom', '$email', '$code_postal', '$ville', '$pays')";
@mysql_db_query($dbname,$sql,$id_link);

$sql="select clef from membres where email='$email'";
$resultat=@mysql_db_query($dbname,$sql,$id_link);
$nombre=mysql_num_rows ($resultat);
if ($nombre >0){
$auth=1;
include "inscription_p1.php";
exit;
}
if ($auth==2){
echo "<P>Votre pseudo existe déjà dans la base de données. Soit vous êtes déjà membre et vous avez <a href=\"oubli.php\">oublié votre mot de passe</a>. Soit il s'agit d'une pure coïncidence, auquel cas, entrez un nouveau pseudo.</p>";
}
?>

traitement_id.php

<?php
include "commun/connexion.inc.php";
/*//////////////////////////////////DATE AAAAMMJJ/////////////////////////////////*/
$moment=date ("Ymd", mktime (0,0,0,date("m"),date("d"),date("y")));
$reponse= strtolower($reponse);
$login= strtolower($login);
$sql="INSERT INTO membres (date_inscription, login, password, adresse, question, reponse) VALUES ('$date_inscription', '$login', '$password', '$question', '$reponse')";
@mysql_db_query($dbname, $sql, $id_link);

$sql="SELECT clef FROM membres WHERE login='$login'";
$resultat=@mysql_db_query($dbname, $sql, $id_link);
$nombre=mysql_num_rows ($resultat);
if ($nombre >0){
$auth=2;
include "inscription_p2.php";
exit;
}

Voilà. Il y a également un problème lié à la base de données ... j'espère pouvoir le résoudre après avoir fait une requête avec Phpadmin ...
Merci d'avance à ceux qui auront au moins eu le courage de me lire jusqu'au bout et, peut-être, qui auront pu m'aider ...

Knockedwonder