PHP/SQL Session Login-Password

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : PHP/SQL Session Login-Password

Re: PHP/SQL Session Login-Password

par xTG » 13 févr. 2012, 23:19

$_POST c'est ce qui provient d'un formulaire, et comme avec $_GET c'est perdu après tout changement de page.
Pour conserver des variables on passe généralement par les sessions => $_SESSION

Re: PHP/SQL Session Login-Password

par stylz882 » 13 févr. 2012, 17:01

	<?php 
			if(isset($_POST['login']) && isset($_POST['mdp']))                               // je dois me tromper quelque part ^^
				{
					$log=$_POST['login'];
					echo 'Bonjour, vous êtes :'.$log['login'].'<br />';
				}

			?> 
	
	  <BR /><BR />
	  
	<a href="demanderdv.php"><img src"Images\Mail.png" border=0 width=15 height=30 alt="Demande de rendez-vous"></a>
	
	</body>
	
</html>

<?php
echo 'Bonjour, ',$_SESSION['logSession'];
?>


It's ok pour ce poblème là ^^


Pour le booléen, je ne vois pas trop comment le faire à vrai dire.

Re: PHP/SQL Session Login-Password

par xTG » 13 févr. 2012, 16:40

Tu ne créés pas $_SESSION['login'] lorsque les identifiants sont corrects. ;)

Sinon ton schéma de bdd n'est pas top...
Un élève est une personne, un professeur est une personne qui a des droits en plus.
Donc c'est la même entité !
Il suffit de tout mettre dans une même table et de rajouter un booléen pour les distinguer.

PHP/SQL Session Login-Password

par stylz882 » 13 févr. 2012, 16:24

Salut,

Voici que je fais plusieurs test de manière différentes pour pouvoir me connecter sur mon site sans qu'il n'y ai de problème !!

J'ai trois pages et une BD.

index.html ( Page où est les deux inputs Login et Password et le bouton submit )
connect.php ( Page qui vérifie le login et le password + appel à la BD )
test.php ( Affiche les résultats lorsqu'on est log. )

Ma BD est composé pour cette partie de 3 tables ( Par contre je peux me planter, merci de me mettre sur une bonne voie s'il manque des champs !! )

ELEVE ( ID_E , Nom_E , Prenom_E )
PROF ( ID_P , Nom_P, Prenom_P )
Compte ( N°compte , Nom_compte , MDP_compte )

Donc, index.html :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr" dir="ltr">

	<head>
		<title>Page test</title>
		<meta name="author" content="Peter" >
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" >
		<link rel="stylesheet" type="text/css" href="commun.css" >
	</head>
	
	<body>

			<div id="bas">
			
				<p id="foot"><form method="POST" action="connect.php">
								Identifiant: <input type="text" name="login" value="">
								Mot de passe: <input type="password" name="mdp" value="">
								<input type="submit" value="Connecter">
							</form></p>
			</div>
	</body>
</html>	

La page connect.php
<?php
	//ouverture d'une session
	session_start();
	
	//Appel de la fonction
	include('fonction.php');
	
	if(isset($_POST['login']) && isset($_POST['mdp']))
	{
		// Récupération des données saisies dans le formulaire d'accueil

		$log=$_POST['login'];
		$mdp=$_POST['mdp'];
	
		$_SESSION['logSession']=$log;
	
		//Appel de la procédure connexion
		connexion();
	
		//Recherche du login et du mot de passe de l'administrateur dans la base
		$req="SELECT * 
			FROM prof, eleve, compte
			WHERE Nom_compte='$log' 
			AND MDP_compte='$mdp'";
		  
		// Execution de la requête
		$sql=mysql_query($req) or die("La requête a échoué");
	
		if(mysql_num_rows($sql)==0)
		{
			echo("Mauvais mot de passe ou identifiant");
			header('Refresh: 3; URL=index.html');
		}
		else
		{
			echo("Vous vous êtes connecté avec succès.");
		header('Refresh: 3; URL=test.php');
		}
		//Appel de la procédure deconnexion
		deconnexion();
	}
	else
	{
		echo "Veuillez entrer votre login et votre mot de passe";
		header('Refresh: 3; URL=index.html');
	}
test.php :
<?php
	session_start();
	if ((!isset($_SESSION['login'])) || (empty($_SESSION['login'])))
	{
		// la variable 'login' de session est non déclaré ou vide
		echo '  <p>Veuillez vous connecter avant. <a href="index.html" title"Connexion">Retour</a></p>'."\n";
		exit();
	}
?>
<?php

if(isset($_SESSION['prof'])){$statut=$_SESSION['eleve'];}    //        ? #-o 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
	<title></title>
	<link rel="stylesheet" type="text/css" href="commun.css" media="sceen" />
<?php
	//dans un fichier css 'commun.css' Ce qui est commun aux deux
	// fichiers css pour les background et tout ce qui est spécifique
	if($statut=='prof'){	
		echo '<link rel="stylesheet" type="text/css" href="prof.css" media="sceen" />';
	}elseif($statut=='eleve'){
		echo '<link rel="stylesheet" type="text/css" href="eleve.css" media="screen" />';
	}
?>
</head>
<body>	
	Bonjour
	<?php 
			if(isset($_POST['login']) && isset($_POST['mdp']))                               // je dois me tromper quelque part ^^
				{
					$log=$_POST['login'];
					echo 'Bonjour, vous êtes :'.$log['login'].'<br />';
				}

			?> 
	
	  <BR /><BR />
	  
	<a href="demanderdv.php"><img src"Images\Mail.png" border=0 width=15 height=30 alt="Demande de rendez-vous"></a>
	
	</body>
	
</html>

Ma fonction.php a la connexion à la BD.

Niveau de la connexion ça marche, mais ce qui me perturbe depuis pas mal de temps c'est que Si je me connecte avec un compte ELEVE il faut que ça m'affiche un fond d'écran de eleve.css si je me connecte en tant que PROF que ça me mette un fond d'écran que j'ai mis dans prof.css ( Le PROF doit pouvoir MODIFIER/AJOUTER des notes, alors que l'eleve ne peut juste Regarder )

Il y à aussi le probleme de la page sécurisée, lorsque je met le lien directement, ça me met le message comme quoi il faut que je me connect, mais lorsque je me connecte, ça me le met aussi... :lol:
Des idées ?

D'avance merci :)