Menu

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

mathrules4 - 16 déc. 2010 à 13:41 - 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 

26 réponses

Meilleure réponse
Stouffi 62 Messages postés mercredi 8 septembre 2010Date d'inscription 8 janvier 2011 Dernière intervention - 16 déc. 2010 à 16:30
10
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 ^^

Merci Stouffi 10

Avec quelques mots c'est encore mieux Ajouter un commentaire

CCM a aidé 24080 internautes ce mois-ci

Stouffi 62 Messages postés mercredi 8 septembre 2010Date d'inscription 8 janvier 2011 Dernière intervention - 16 déc. 2010 à 16:32
Eh bien Melooo est plus rapide que moi ^^
Melooo 1406 Messages postés vendredi 28 novembre 2008Date d'inscription 18 mars 2013 Dernière intervention - 16 déc. 2010 à 16:36
Hihi :)
Melooo 1406 Messages postés vendredi 28 novembre 2008Date d'inscription 18 mars 2013 Dernière intervention - 16 déc. 2010 à 13:50
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
Melooo 1406 Messages postés vendredi 28 novembre 2008Date d'inscription 18 mars 2013 Dernière intervention - 16 déc. 2010 à 16:12
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"/> 
mathrules4 - 16 déc. 2010 à 16:15
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
arthezius 3551 Messages postés jeudi 15 mai 2008Date d'inscription 11 septembre 2016 Dernière intervention - 16 déc. 2010 à 23:45
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/
mathrules4 - 17 déc. 2010 à 00:47
2
Merci
tu ne pense pas que si je post ici c'est que j'ai lu au moins le site du zero
Melooo 1406 Messages postés vendredi 28 novembre 2008Date d'inscription 18 mars 2013 Dernière intervention - 16 déc. 2010 à 16:05
1
Merci
Montres le code
Melooo 1406 Messages postés vendredi 28 novembre 2008Date d'inscription 18 mars 2013 Dernière intervention - 16 déc. 2010 à 13:43
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...
mathrules4 - 16 déc. 2010 à 13:45
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>
mathrules4 - 16 déc. 2010 à 13:52
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)
Melooo 1406 Messages postés vendredi 28 novembre 2008Date d'inscription 18 mars 2013 Dernière intervention - 16 déc. 2010 à 13:52
0
Merci
Bon cours :)
Bonne journée
mathrules4 - 16 déc. 2010 à 16:00
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>
arthezius 3551 Messages postés jeudi 15 mai 2008Date d'inscription 11 septembre 2016 Dernière intervention - 17 déc. 2010 à 01:04
0
Merci
Rien ne me permet de le penser...
mathrules4 - 17 déc. 2010 à 01:20
0
Merci
sa ne fonctionne toujours pas
arthezius 3551 Messages postés jeudi 15 mai 2008Date d'inscription 11 septembre 2016 Dernière intervention - 17 déc. 2010 à 01:23
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 3551 Messages postés jeudi 15 mai 2008Date d'inscription 11 septembre 2016 Dernière intervention - 17 déc. 2010 à 08:51
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 3551 Messages postés jeudi 15 mai 2008Date d'inscription 11 septembre 2016 Dernière intervention - 17 déc. 2010 à 13:15
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 ^^