Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/02/2007, 00h26   #1
Invité de passage
 
Inscription : mai 2005
Messages : 46
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 46
Points : 4
Points : 4
Par défaut Pb erreur Notice: Undefined index: pseudo

Voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<html>
<head>
  <title>identification.php</title>
</head>
<body>
Identifiez-vous <br>
<body bgcolor="#0066CC">
</body>
<form action="identification.php" method=GET>
<p>
 
<br>Pseudo <input name="pseudo" type="text" size="35" maxlength="30"><br>
<br>Mot de passe <input name="pass" type="password" size="45" maxlength="40"><br>
 
 
 
 
<br><INPUT TYPE="submit" NAME="identifier" VALUE="Valider">  <INPUT TYPE="reset" VALUE="Effacer">
</p>
</FORM>
</html>
<?php
// Connexion au serveur de base de données
$dbcnx = @mysql_connect("localhost","root", "");
if (!$dbcnx) {
echo( "<P>Impossible de se connecter " .
"au serveur en ce moment.</P>" );
exit();
}
// Sélectionner votre base de données
if (! @mysql_select_db("dvdthèque") ) {
echo( "<P>Impossible de trouver la base de données " .
"<votre-bdd> en ce moment.</P>" );
exit();
}
 
 
$pseudo = $_POST["pseudo"]; 
$pass = $_POST["pass"]; 
 
		// identification
 
 
 
$sql= "SELECT pseudo FROM utilisateurs WHERE pseudo = '$pseudo'";
 
		$result= mysql_query($sql) or die ("impossible d'executer la requete");
		$num= mysql_num_rows($result);
		IF ($num==1)
		{ $sql= "SELECT pseudo from utilisateurs 
				 WHERE pseudo='$_POST[pseudo]'
				 AND motdepasse=password('$_POST[pass]')";
				 $result2= mysql_query($sql) or die ("impossible d'executer la requete");
				 $num2= mysql_num_rows($result2);
			If ($num2 > 0)
			{  
				echo "vous êtes connecté '$_POST[pseudo]'";
			}
		}
 
?>
Les erreurs à l'exécution du formulaire sont:
Citation:
Notice: Undefined index: pseudo in c:\...on line 38
Notice: Undefined index: pass in c:\...on line 39
Les lignes 38 et 39 sont :
$pseudo = $_POST["pseudo"];
$pass = $_POST["pass"];


J'ai modifié plusieurs fois le code mais il m'indique toujours la même erreur.
Pourriez-vous m'aider s'il vous plaît ?

Merci d'avance...
PAINCO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2007, 00h31   #2
Membre actif
 
Étudiant
Inscription : août 2005
Messages : 161
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 161
Points : 170
Points : 170
Normal c'est $_GET['pseudo']
poof65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2007, 00h33   #3
Membre régulier
 
Inscription : janvier 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 85
Points : 80
Points : 80
En fait il y a deux problemes.
Le premier est que tu utilise la methode GET pour ton formulaire et la methode POST pour le traitement des infos.

Le second est que tu ne teste pas l'existence des variables avant de les utiliser. (raison de l'erreur qui apparait)

@++
__________________
"Soyez les changements que vous aimeriez voir dans le monde" Mahatma Gandhi
p.legal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2007, 01h07   #4
Invité de passage
 
Inscription : mai 2005
Messages : 46
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 46
Points : 4
Points : 4
Tout d'abord ,merci de vos réponses...

Voilà j'ai fait les modifications :

<form action="identification.php" method=POST> (j'ai donc mis POST)
.
.
.
{if ($_POST["pseudo"] <> "" and $_POST["pass"] <> "")

$pseudo = $_POST["pseudo"];
$pass = $_POST["pass"];


Maintenant, il m'affiche 3 erreurs:
Notice: Undefined index: pseudo in ... on line 37

Notice: Undefined index: pass in ... on line 40

Notice: Undefined variable: pseudo in ... on line 46

Les lignes 37,40 et 46 sont :
{if ($_POST["pseudo"] <> "" and $_POST["pass"] <> "")

$pass = $_POST["pass"];

$sql= "SELECT pseudo FROM utilisateurs WHERE pseudo = '$pseudo'";
PAINCO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2007, 01h14   #5
Membre actif
 
Étudiant
Inscription : août 2005
Messages : 161
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 161
Points : 170
Points : 170
Bizarre ...
Déjà replace le </body> au bon endroit dans le code html.

Et c'est sur que la premiere fois que tu va appeler la page les variables $_POST n'existeront pas. A toi de détecter si le formulaire à été soumis ou pas.
poof65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2007, 17h56   #6
Membre expérimenté
 
Avatar de mathieugamin
 
Inscription : octobre 2006
Messages : 572
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2006
Messages : 572
Points : 562
Points : 562
Salut
Pour la forme du form :
Code :
<form action="identification.php" method=GET>
Mets GET entre guillements, comme "identification.php"

Ensuite pour tester la soumission de ton formulaire, comme le dit poof65, il faut utiliser la fonction isset() :
Code :
1
2
3
if (isset($_POST['pseudo']){
  // instructions
}
Là tu devrais plus avoir de soucis...

N'oublie pas de lire les tutos de http://www.developpez.com sur le php, il sont vraiment bien fait

Enfin, utilise les balises de code pour tes messages
__________________
GAMIN !!!!
_______________________________________________
PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX
mathieugamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2007, 17h15   #7
Invité de passage
 
Inscription : mai 2005
Messages : 46
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 46
Points : 4
Points : 4
Merci de vos suggestions ...

J'ai donc modifié le code et les erreurs ne s'affichent plus à l'ouverture de la page. Mais maintenant j'ai un problème lorsque je valide des pseudos, il ne m'affiche pas mes echos , après plusieurs tentatives je n'arrive pas à savoir d'où cela vient.

Merci d'avance....



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
session_start();
?>
 
<html>
<head>
  <title>identification.php</title>
</head>
<body>
Identifiez-vous <br>
<body bgcolor="#0066CC">
</body>
<form action="identification.php" method=POST>
<p>
 
<br>Pseudo <input name="pseudo" type="text" size="35" maxlength="30"><br>
<br>Mot de passe <input name="pass" type="password" size="45" maxlength="40"><br>
 
 
 
 
<br><INPUT TYPE="submit" NAME="identifier" VALUE="Valider">  <INPUT TYPE="reset" VALUE="Effacer">
</p>
</FORM>
</html>
<?php
 
 
 
 
$logok=false;
include "include/connexion.php";
 
//on verifie si des données sont entrées.
if(isset($_POST['verifier']))
if($_POST["pseudo"]<> "" and $_POST["pass"]<>"")
{
//on selectionne le mot de passe associé au login de la table administrators.
$pseudo=$_POST["pseudo"];
$pass=$_POST["pass"];
 
$sql="SELECT pseudo FROM utilisateurs WHERE pseudo = '$pseudo'";
 
$req=mysql_query($sql);
if(!$req)
{echo "erreur" . mysql_error();
 exit();
}
 
//on verifie si le login est correct.
if (mysql_num_rows($req) > 0) {
 
$row= mysql_fetch_assoc($req);
 
 
$password2=$row["pass"];
 
if($password2==$pass)
{$logok=true;
}
else{ echo "mot de passe incorrect";
       exit();
       }
}
else{
    echo "login incorrect";
     exit();
     }
 
if($logok)
{
$_SESSION["pseudo"]=$row["pseudo"];
$date=date('r');
echo "Bonjour " . $_SESSION["pseudo"] . ", nous sommes le " . "$date" ";
 
 
}
 
}
 
?>
PAINCO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2007, 17h31   #8
Membre éclairé
 
Inscription : août 2006
Messages : 379
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : août 2006
Messages : 379
Points : 383
Points : 383
Code :
echo 'Bonjour ' . $_SESSION["pseudo"] . ', nous sommes le ' . $date;
Bonne journée.
SpiritOfDoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2007, 20h20   #9
Invité de passage
 
Inscription : mai 2005
Messages : 46
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 46
Points : 4
Points : 4
MERCI pour la réponse mais malheureusement toujours rien ne se passe quand je met un bon ou mauvais pseudo...
PAINCO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 09h26   #10
Membre expérimenté
 
Avatar de mathieugamin
 
Inscription : octobre 2006
Messages : 572
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2006
Messages : 572
Points : 562
Points : 562
Salut,
Tu pourrais payer une cure d'amincissement à ton code car il y a beaucoup de redondances et de parties inutiles...
Le problème, me semble-t-il vient du fait qu'il y avait des doubles quotes en trop dans ton code et une accolade manquante pour tester ta première condition...

Ensuite, veille à ne pas utiliser des structures conditionnelles à chaque partie de test que tu fais : fais un if et traite tout ce qui est en rapport avec dans la boucle, une fois pour toute. Ce sera plus clair pour toi et ton successeur si tu dois donner le projet à quelqu'un.

Voici le code qui devrait fonctionner :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
 
$logok=false;
include "include/connexion.php";
 
//on verifie si des données sont entrées.
if(isset($_POST['verifier'])){
if($_POST['pseudo']<> '' and $_POST['pass']<>'')
{
//on selectionne le mot de passe associé au login de la table administrators.
$pseudo=$_POST['pseudo'];
$pass=$_POST['pass'];
 
$sql="SELECT pseudo FROM utilisateurs WHERE pseudo = '$pseudo'";
 
$req=mysql_query($sql);
if(!$req)
{echo "erreur" . mysql_error();
 exit();
}
 
//on verifie si le login est correct.
if (mysql_num_rows($req) > 0) {
 
$row= mysql_fetch_assoc($req);
 
$password2=$row['pass'];
 
if($password2==$pass)
{$logok=true;
}
else{ echo 'mot de passe incorrect';
       exit();
       }
}
else{
    echo 'login incorrect';
     exit();
     }
 
if($logok){
 
$_SESSION['pseudo']=$row['pseudo'];
$date=date('r');
echo 'Bonjour ' . $_SESSION['pseudo'] . ', nous sommes le ' . '$date';
   }
  }
}
 
?>
__________________
GAMIN !!!!
_______________________________________________
PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX
mathieugamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 15h45   #11
Invité de passage
 
Inscription : mai 2005
Messages : 46
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 46
Points : 4
Points : 4
Merci Mahtieugamin mais décidément j'ai pas de chance ça fonctionne pas ... Mais est-ce que je peux mettre la page "identification.php" dans ACTION ? Parce que là j'ai le formulaire et le code php sur la même page mais je pense pas que ça pose problème...

Qu'en pensez-vous ?
PAINCO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 15h55   #12
Membre expérimenté
 
Avatar de mathieugamin
 
Inscription : octobre 2006
Messages : 572
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2006
Messages : 572
Points : 562
Points : 562
Non, ça pose pas de problème, mais si tu veux être sûr, tu laisses seulement les quotes.
Mets également les quotes à POST dans ton formulaireCe serait mieux que le code PHP soit tout en haut de la page et que le code HTML soit en dessous...

Ce qui serait bien aussi c'est de voir si ta session démarre vraiment.

Essaie avec un test bidon de faire un print_r() de ton tableau de session car tu as peut-être un problème par là...
__________________
GAMIN !!!!
_______________________________________________
PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX
mathieugamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 15h58   #13
Membre expérimenté
 
Avatar de mathieugamin
 
Inscription : octobre 2006
Messages : 572
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2006
Messages : 572
Points : 562
Points : 562
C'est aussi mieux (je me suis fait avoir) de mettre les noms qui correspondent :
Code :
<INPUT TYPE="submit" NAME="identifier" VALUE="Valider">
Code :
if(isset($_POST['verifier'])){
Là, il faut changer 'verifier' en 'identifier' et ça devrait fonctionner....
__________________
GAMIN !!!!
_______________________________________________
PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX
mathieugamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 16h01   #14
Membre expérimenté
 
Avatar de mathieugamin
 
Inscription : octobre 2006
Messages : 572
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2006
Messages : 572
Points : 562
Points : 562
Finalement, dernier truc, les balises HTML en majuscules, c'est mal ...
__________________
GAMIN !!!!
_______________________________________________
PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX
mathieugamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 18h18   #15
Invité de passage
 
Inscription : mai 2005
Messages : 46
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 46
Points : 4
Points : 4
Merci bcp ça fonctionne ! Je l'ai vu aussi après pour le nom du bouton...
PAINCO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 18h20   #16
Membre expérimenté
 
Avatar de mathieugamin
 
Inscription : octobre 2006
Messages : 572
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2006
Messages : 572
Points : 562
Points : 562
Cool !
__________________
GAMIN !!!!
_______________________________________________
PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX
mathieugamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h12.


 
 
 
 
Partenaires

Hébergement Web