Menu

Php Notice: Undefined index: [Résolu/Fermé]

- - Dernière réponse :  dija - 9 juin 2018 à 23:12
Bonjour, je vous présente mon problème.
Je fait sans doute un de mes premiers site web en php et j'ai un formulaire(menu.php) qui envoie mes donner à cible.php et je veux que si l'utilisateur a déjà entré ses identifiants le menu (menu.php) affiche sont nom avec le menu déconnexion mais lorsque je fait un echo:

echo "$username";

et bien sa maffiche cette erreur: Notice: Undefined index: username in C:\wamp\www\menu.php on line 13

à cette ligne il y a ceci:

$username = $_POST['username'];


si vous pouvez m'aider s.v.p. :)

Afficher la suite 

17 réponses

Meilleure réponse
Messages postés
62
Date d'inscription
mercredi 8 septembre 2010
Dernière intervention
8 janvier 2011
39
11
Merci
Bonjour,

lorsque tu es confronté à ce genre de problème (undefined index username) ça veut dire que l'array $_POST ne possède pas de clé (index) 'username' dans sa liste.
Et pour dans ton cas, lors du chargement de la page la première fois, le formulaire n'étant pas envoyé, la variable $_POST['username'] n'existe pas. Résultat PHP pleure car ne sait pas quoi faire de cette variable.
Solution : remplacer

$username = $_POST['username'];


par

if (isset($_POST['username'])) {
    $username = $_POST['username'];
}


ça c'est pour changer au minimum ton code actuel, mais il y a plus propre ^^

Dire « Merci » 11

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 53885 internautes nous ont dit merci ce mois-ci

Stouffi
Messages postés
62
Date d'inscription
mercredi 8 septembre 2010
Dernière intervention
8 janvier 2011
39 -
Eh bien Melooo est plus rapide que moi ^^
Melooo
Messages postés
1406
Date d'inscription
vendredi 28 novembre 2008
Dernière intervention
18 mars 2013
91 -
Hihi :)
je vous remercie beaucoup!!
Messages postés
1406
Date d'inscription
vendredi 28 novembre 2008
Dernière intervention
18 mars 2013
91
2
Merci
Bonjour,
Pourquoi avoir deux formulaires ?
Pourquoi ne pas faire :
<form action="cible.php" method="post">

<p class="menu">

Connexion<br />

<!--Connexion-->

Nom de compte:                   <input type="text" name="username" style="width:80px;" title="Saisissez votre nom de compte"/><br />

Mot de pass:                         <input type="password" name="password" style="width:80px;" title="Saisissez votre mot de pass"/><br />

Confirmation du mot de pass: <input type="password" name="confirm" style="width:80px;" title="Re saisissez votre mot de pass"/><br />

<!--Bouton-->

                                                                    <input type="submit" class="bouton"/> 

Et ensuite pour le code PHP :
if(isset($_POST['bouton']))
{
// traitement pour la verif de la connexion
}

Tu dois mettre un nom à ton bouton si tu souhaite faire le if que je viens de mettre ci desus
Messages postés
1406
Date d'inscription
vendredi 28 novembre 2008
Dernière intervention
18 mars 2013
91
2
Merci
Plusieurs trucs qui vont pas :
1) on écrit session_start(); et non SESSION_START()
Il manque donc le point virgule
2) Lors de la premiere connexion sur la page $username n'existe pas donc normal que tu es une erreur il faut faire le test suivant :
if(isset($_POST['bouton']))
{
//traitement
}

et rajoute un name à ton bouton :
  <input type="submit" class="bouton" name="bouton"/> 
2
Merci
sa semble maintenant marcher je t'en reparle plus tard merci :)
2
Merci
Maintenant plus rien n'est affiché excepté mon footer et mon arrière plan mais je n'ai plus de message d'erreur
voici mon code:

<?php
session_start();
?>
<html>
<head>
<title="Accueil"/>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="css/design.css" />
</head>

<body><form action="cible.php" method="get">
<?php
if (isset($_POST['username'])) {
$username = $_POST['username'];
}
IF(isset($connected) AND isset($username) AND $connected == FALSE){
?>
<form action="cible.php" method="post">

<p class="menu">

Connexion<br />

<!--Connexion-->

Nom de compte: <input type="text" name="username" style="width:80px;" title="Saisissez votre nom de compte"/><br />

Mot de pass: <input type="password" name="password" style="width:80px;" title="Saisissez votre mot de pass"/><br />

Confirmation du mot de pass: <input type="password" name="confirm" style="width:80px;" title="Re saisissez votre mot de pass"/><br />

<!--Bouton-->

<input type="submit" class="bouton"/>
<?php
}

ELSE{
echo "$username";
}

?>
</p>
</body>
</html>


Aussi non je vais essayer avec une base de donner SQL
Messages postés
3551
Date d'inscription
jeudi 15 mai 2008
Dernière intervention
11 septembre 2016
551
2
Merci
Je pense qu'il va falloir penser a revoir certaines base du PHP.
Un tour sur ce site s'impose: http://siteduzero.fr/
2
Merci
tu ne pense pas que si je post ici c'est que j'ai lu au moins le site du zero
Messages postés
1406
Date d'inscription
vendredi 28 novembre 2008
Dernière intervention
18 mars 2013
91
1
Merci
Montres le code
Messages postés
1406
Date d'inscription
vendredi 28 novembre 2008
Dernière intervention
18 mars 2013
91
0
Merci
Bonjour,
Donne le bout de code avant, car ca doit venir de la,
j'ai une petite idée pour cette erreur, mais je préfère voir ton code avant de me prononcer...
0
Merci
Voici tout le code ;)

<?php
SESSION_START()
?>
<html>
<head>
<title="Accueil"/>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="css/design.css" />
</head>

<body><form action="cible.php" method="get">
<?php
$username = $_POST['username'];
If(isset($connected) AND isset($username) AND $connected == FALSE){
?>
<form action="cible.php" method="post">

<p class="menu">

Connexion<br />

<!--Connexion-->

Nom de compte:                   <input type="text" name="username" style="width:80px;" title="Saisissez votre nom de compte"/><br />

Mot de pass:                         <input type="password" name="password" style="width:80px;" title="Saisissez votre mot de pass"/><br />

Confirmation du mot de pass: <input type="password" name="confirm" style="width:80px;" title="Re saisissez votre mot de pass"/><br />

<!--Bouton-->

                                                                    <input type="submit" class="bouton"/>
<?php
}

ELSE{
echo "$username";
}
?>
</p>
</body>
</html>
0
Merci
Merci pour ta réponse je vais tester plus tard puisque la je dois aller a l'école >.< (je suis québécois)
Messages postés
1406
Date d'inscription
vendredi 28 novembre 2008
Dernière intervention
18 mars 2013
91
0
Merci
Bon cours :)
Bonne journée
0
Merci
sa ne marche pas :( j'ai toujours la même erreur dans le else ($username n'existe pas)
0
Merci
<?php
SESSION_START()
?>
<html>
<head>
<title="Accueil"/>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="css/design.css" />
</head>

<body><form action="cible.php" method="get">
<?php
if(isset($_POST['bouton']))

{
?>
<form action="cible.php" method="post">

<p class="menu">

Connexion<br />

<!--Connexion-->

Nom de compte:        <input type="text" name="username" style="width:80px;" title="Saisissez votre nom de compte"/><br />

Mot de pass:             <input type="password" name="password" style="width:80px;" title="Saisissez votre mot de pass"/><br />

Confirmation du mot de pass: <input type="password" name="confirm" style="width:80px;" title="Re saisissez votre mot de pass"/><br />

<!--Bouton-->

                                                                    <input type="submit" class="bouton"/>

</p>
<?php
}
else{
echo "$username";
}

?>
</body>
</html>
Messages postés
3551
Date d'inscription
jeudi 15 mai 2008
Dernière intervention
11 septembre 2016
551
0
Merci
Rien ne me permet de le penser...
0
Merci
sa ne fonctionne toujours pas
arthezius
Messages postés
3551
Date d'inscription
jeudi 15 mai 2008
Dernière intervention
11 septembre 2016
551 -
Remet ton code avec les mises a jours et entre les balises <code></code>.
0
Merci
voila le code je tiens à dire que je ne sais pas où mettre le nouveau if que vous m'avez présenté.
<?php   
session_start();   
?>   
<html>   
<head>   
<title="Accueil"/>   
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />   
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="css/design.css" />   
</head>   

<body><form action="cible.php" method="get">   
<?php   
if (isset($_POST['username'])) {   
$username = $_POST['username'];   
}   
IF(isset($connected) AND isset($username) AND $connected == FALSE){   
?>   
<form action="cible.php" method="post">   

<p class="menu">   

Connexion<br />   

<!--Connexion-->   

Nom de compte: <input type="text" name="username" style="width:80px;" title="Saisissez votre nom de compte"/><br />   

Mot de pass: <input type="password" name="password" style="width:80px;" title="Saisissez votre mot de pass"/><br />   

Confirmation du mot de pass: <input type="password" name="confirm" style="width:80px;" title="Re saisissez votre mot de pass"/><br />   

<!--Bouton-->   

<input type="submit" class="bouton"/>   
<?php   
}   

ELSE{   
echo "$username";   
}   

?>   
</p>   
</body>   
</html> 
arthezius
Messages postés
3551
Date d'inscription
jeudi 15 mai 2008
Dernière intervention
11 septembre 2016
551 -
Je me suis permis pas mal de correction.
Prends le temps de bien étudier ce que j'ai corrigé.

<?php
session_start();
echo'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Accueil</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="css/design.css" />
</head>

<body>';
if (isset($_POST['envoi']) && $_POST['envoi']=='Envoyer')
	{
	if($_POST['password']!=$_POST['confirm'])
		{
		echo'<p>Les deux mot de passe sont différent.</p>
		<p><a href="cible.php">Retour</p></p>';
		}
	else{
		$username = $_POST['username'];
		echo '<p>'.$username.'</p>';
		}
	}
else{
	echo'<form action="cible.php" method="post">
	<p class="menu">
	<strong>Connexion</strong><br />
	<!--Connexion-->
	Nom de compte: <input type="text" name="username" style="width:80px;" title="Saisissez votre nom de compte"/><br />
	Mot de passe: <input type="password" name="password" style="width:80px;" title="Saisissez votre mot de pass"/><br />
	Confirmation: <input type="password" name="confirm" style="width:80px;" title="Re saisissez votre mot de pass"/><br />
	<!--Bouton-->
	<input type="submit" name="envoi" value="Envoyer" class="bouton"/>';
	}	
echo'</p>
</body>
</html>';
?>


La page contient un formulaire.
En l'état, quand tu l'envoi, une vérif est faite pour vérifier que les deux mots de passe sont identique. Si c'est le cas, on affiche le pseudo.
ton code marche mais ne fait toujours pas se que j'attendais mais se n'est pas grave pour le reste je vais insérer du sql merci
arthezius
Messages postés
3551
Date d'inscription
jeudi 15 mai 2008
Dernière intervention
11 septembre 2016
551 -
On va pas te macher tout le travail non plus. J'ai déjà résolu le premier problème.
je ne voulais pas tout resoudre non plus xD je veux travailler aussi ^^