Aide pour page de connexion php

Résolu/Fermé
KamiTeru Messages postés 3 Date d'inscription dimanche 10 mai 2009 Statut Membre Dernière intervention 10 mai 2009 - 10 mai 2009 à 00:53
KamiTeru Messages postés 3 Date d'inscription dimanche 10 mai 2009 Statut Membre Dernière intervention 10 mai 2009 - 10 mai 2009 à 17:32
Bonjour, je suis en terminale stg gsi et travaillant sur le php avec une page de connexion qui pause problème.

J'ai plus précisément Undefined variable comme erreur que j'ai réussi à enlever pour les variables définies au début. Bien sûr, je n'ai pas fini de sécuriser je pense qu'il manque quelques trucs avant que cela soit correct^^
Voici les erreurs:
Notice: Undefined variable: Identifiant in c:\program files\easyphp1-8-modgsi\www\ambulance maurin\connexion3.php on line 30

Notice: Undefined variable: motdepasse in c:\program files\easyphp1-8-modgsi\www\ambulance maurin\connexion3.php on line 30




<html>
	<head>
<title>Connexion</title> 
	</head>
	<body>
	
<form method="POST" action="connexion3.php">
<h4>Connexion au site</h4>
<p>
<label>Pseudo : </label><br>
<input>
</p>
<p>
<label>Code secret : </label><br>
<input type="password">
</br><input type="submit" value="Se connecter">
</p>

</form>

	</body>
</html>




<?php
  session_start();
	
	// Récupération des données saisies dans le formulaire d'accueil
	
	// Avant d'utiliser $_POST['identifiant']
if (isset($_POST['identifiant']))
{
         $Identifiant = $_POST['identifiant'];  // Instructions si $_POST['identifiant'] existe
}
	
	
	// Avant d'utiliser $_POST['motdepasse']
if (isset($_POST['motdepasse']))
{
         $motdepasse = $_POST['motdepasse'];  // Instructions si $_POST['motdepasse'] existe
}
	
	
	// Création d'une variable de session (le numéro de client)		
		$_SESSION['NumSalSession']='$Identifiant';

	// Connexion au serveur MySQL
		$db=mysql_connect('localhost','root','***') or die("erreur de connexion".mysql_error());
	
	// Ouverture de la base 
		mysql_select_db("ambulance maurin",$db) or die("erreur de connexion à la base");
		
	// Requête de recherche du mot de passe du client à partir du numéro de client saisi		
		$req="SELECT * FROM salariés WHERE Identifiant='$Identifiant' and motdepasse='$motdepasse';";
		
	// Execution de la requête
		$sql=mysql_query($req);
		
		if (mysql_numrows($sql)==1)
			// La requête renvoie au plus un résultat (le client recherché)
			
			{
			header('Location: Accueil_connecte.html');
			}		
			
		else 
			// La requête ne renvoie aucun résultat, l'identifiant est inconnu
			// et/ou le mot de passe est incorrect (on ne distingue pas les deux cas)
			{ 
			echo 'Identifiant et/ou mot de passe incorrects. <a href=connexion1.html>Veuillez réessayer.</a>';
			}

		
		// Fermeture de la connexion à MySQL
		mysql_close();
	
?>




Merci d'avance pour ceux qui voudront bien m'aider (même si ça se peut que ça soit des erreurs bêtes, je débute^^')
A voir également:

2 réponses

Bonjour

Comme le message l'indique, ta variable $Identifiant n'est pas définie. PHP ne peut donc pas se servir de sa valeur, elle n'existe pas .
Tu croyais qu'elle était définie ? Parce que tu as fait if (isset($_POST['identifiant'])) etc... ?
Mais dans ton formulaire, il n'y a aucun champ qui s'appelle 'identifiant'. Si ce champ doit correspondre au pseudo, dans le formulaire, au lieu d'un simple <input> tu devrais avoir <input type="text" name="identifiant">
C'est le name= qui va créer les variables $_POST['qqchose'] quand tu envoies le formulaire
Tu as le même problème avac le champ motdepasse, le remède est le même (mais garde le type password bien sûr)

Pendant qu'on y est, petite remarque : tu devrait mettre un else à tes if (isset($_POST['identifiant'])) pour initialiser quand même ta variable $Identifiant (='') sinon si quelqu'un appelle ta page sans passer par le formulaire, tu retrouveras la même erreur, $Identifiant ne sera toujours pas défini
2
KamiTeru Messages postés 3 Date d'inscription dimanche 10 mai 2009 Statut Membre Dernière intervention 10 mai 2009
10 mai 2009 à 11:28
Merci pour les indications sur le code html, j'y avais même pas pensé^^'
pour ce qui est de rajouter les else aux if
elseif (isset($_POST['identifiant']))
{
         $Identifiant = $_POST['identifiant'];  // Instructions si $_POST['identifiant'] existe
}
	
	
	// Avant d'utiliser $_POST['motdepasse']
elseif (isset($_POST['motdepasse']))
{
         $motdepasse = $_POST['motdepasse'];  // Instructions si $_POST['motdepasse'] existe


Comme ça tu veux dire? j'ai parse error ligne 7 en passant directement par ma page sans aller sur le formulaire.
0
Je voulais dire
if (isset($_POST['identifiant']))
{
         $Identifiant = $_POST['identifiant'];  // Instructions si $_POST['identifiant'] existe
} else $Identifiant = '';

(idem pour ton mot de passe)
2
KamiTeru Messages postés 3 Date d'inscription dimanche 10 mai 2009 Statut Membre Dernière intervention 10 mai 2009
10 mai 2009 à 17:32
Ah d'accord je comprend mieux
merci pour ton aide ;)
0