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

Signaler
-
 fzsf -
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. :)

17 réponses

Messages postés
62
Date d'inscription
mercredi 8 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011
37
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 ^^
18
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 56744 internautes nous ont dit merci ce mois-ci

Messages postés
62
Date d'inscription
mercredi 8 septembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011
37
Eh bien Melooo est plus rapide que moi ^^
Messages postés
1405
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
18 mars 2013
77
Hihi :)
je vous remercie beaucoup!!
Messages postés
1405
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
18 mars 2013
77
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"/> 
sa semble maintenant marcher je t'en reparle plus tard merci :)
Messages postés
1405
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
18 mars 2013
77
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
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
3549
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
447
Je pense qu'il va falloir penser a revoir certaines base du PHP.
Un tour sur ce site s'impose: https://openclassrooms.com/fr/
tu ne pense pas que si je post ici c'est que j'ai lu au moins le site du zero
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
1405
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
18 mars 2013
77
Bon cours :)
Bonne journée
sa ne marche pas :( j'ai toujours la même erreur dans le else ($username n'existe pas)
Messages postés
1405
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
18 mars 2013
77
Montres 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
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>
sa ne fonctionne toujours pas
Messages postés
3549
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
447
Remet ton code avec les mises a jours et entre les balises <code></code>.
Messages postés
1405
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
18 mars 2013
77
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...
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>
Messages postés
3549
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
447
Rien ne me permet de le penser...
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> 
Messages postés
3549
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
447
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
Messages postés
3549
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
447
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 ^^