Probléme sur les sessions en PHP

idrichoue Messages postés 161 Statut Membre -  
idrichoue Messages postés 161 Statut Membre -
Bonjour tout le monde, je suis nouveau en PHP et j'ai des probléme pour la connection à ma session. Au fait je veux créer un formulaire qui permet d'identifier un groupe d'utilisateur bien determiné à savoir identite qui est une table sur la base de données qui se nomme personnel mais à chaque fois que je me logue il n'ya pas de verification sur l'utilisateur et meme si on remplit pas les champs et que je click sur connexion j'ai automatiquement la page login.php qui est sensé géré la session. Les champs de la table identite sont nom, prenom, pseudo et motpasse. Mais je crois aussi que c'est la facon dont j'ai crée la BD qui pose probléme car j'ai essayé avec dreamweaver et il m'indique que la BD ne contient pas de table. Voila le script php de la session :

<?php
$login=$_POST['login'];
$pass=$_POST['password'];
$con = mysql_connect('localhost','root','');
mysql_select_db('personnel', $con);

$sql = "SELECT * FROM identite WHERE pseudo=$login and motpasse=$pass";
$res = mysql_query($sql);
$exist = ($res);
if(!$exist)
{
echo "<center>Veuillez vérifier vos données</center>";
}
else {

session_start();
session_register("login");
echo "<center>Bienvenue sur votre espace membre : $login</center>";
$sess_nom = session_name();
$sess_id = session_id();
echo "Le nom de la session est :<br> ";
echo $sess_nom." et l'Id est : ".$sess_id."";

}
?>
<html>
<body>
<p><STRONG><H1><U><font face="comic sans ms"><center>INNOVA</center></font></U></H1></STRONG><br></p>
<table width="1000" bgcolor="#0a0f0b" CELLSPACING="0" BORDER="1">
<TR>
<TD><a href="equipement.html"><STRONG><CENTER>Mise à jour équipements</CENTER></STRONG></a></td>
<TD><a href="logiciels.html"><STRONG><CENTER>::Mise à jour Logiciels::</CENTER></STRONG></a></td>
<TD><a href="personnels.html"><STRONG><CENTER>::Consultations/Editions::</CENTER></STRONG></a></td>
</TR>
</TABLE>
</TABLE>
</body>
</html>
A voir également:

17 réponses

Utilisateur anonyme
 
^^
J'ai regardé ton code te y' a beaucoup de fonction php que je connais pas.
Mais, le session_start() doit être mis en tout début de page, avant tout autre code php... Sinon, ça marche pas.
0
idrichoue Messages postés 161 Statut Membre 7
 
ok donc je dois mettre la session start ou effectivement avant
$con = mysql_connect('localhost','root','');
mysql_select_db('personnel', $con);
ou bien c'est aprés et pour les fonctions que tu connais pas c'est lesquelles merci d'avance
0
lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
 
bonsoir , essaye comme ça

<?php
session_start(); 
if(isset($_POST['login']) && isset($_POST['password'])) // on verifie qu'il existe bien des valeur post
{
$login=$_POST['login'];
$pass=$_POST['password'];
$con = mysql_connect('localhost','root','');
mysql_select_db('personnel', $con);

$sql = "SELECT pseudo,motpasse  FROM identite WHERE pseudo=$login and motpasse=$pass"; //je selectionne uniquement le champ pseudo et motde passe
$res = mysql_query($sql);

list($pseudo, $psw)=mysql_fetch_array($res); //je place le resultat de la requete dans un tableau,comme tu faisais c'etait toujours obligatoirement bon quelquesoit les valeurs

   if($pseudo==$login && $psw==$pass) // si le resultat est strictement egale au valeurs pos c'est ok
   {
   echo "<center>Bienvenue sur votre espace membre : $login</center>"; 
   //.......
  //...
  //tu continue l'affichage de ta page
   }
}
else
{
echo "<center>Veuillez vérifier vos données</center>"; 
le resultat de if($pseudo==$login && $psw==$pass) est pas bon donc echec d'authentification
}
?>


voila j'ai pas testé mais ça devrais le faire.

session start doit toujours etre placé au debut du code avant tout autre chose
pense a crypter tes mot de passe en md5 pour plus de securité
et pour les bases de données n'utilise pas dreamweaver,mais phpmyadmin par exemple
en esperant t'avoir eclairé un pezu
@+
0
idrichoue Messages postés 161 Statut Membre 7
 
est ce que quelqu'un pourrait m'aider à y voir plus clair
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
idrichoue Messages postés 161 Statut Membre 7
 
J'ai essayé avec ton code mais j'ai une erreur à la ligne 13 :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\AGL\ccm.php on line 13
Encore merci Lewis34
0
lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
 
ok alors essie de remplacer list($pseudo, $psw)=mysql_fetch_array($res); par
$row=mysql_fetch_array($res);
$pseudo=$row['pseudo'];
$pasw=$row['motpasse'];


modifie egalament ta requete en remettant *
$sql = "SELECT * FROM identite WHERE pseudo='".$login."' and motpasse='".$pass."' ";
0
idrichoue Messages postés 161 Statut Membre 7
 
Ca marche mais le seul probléme maintenant est que meme si je remplit pas les champs et que je click sur connexion j'accéde à la page de session. Je crois que j'ai un probléme de base de données avec mon wamp serveur.
0
lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
 
tu a bien rajouté cette ligne

if(isset($_POST['login']) && isset($_POST['password'])) ?
0
idrichoue Messages postés 161 Statut Membre 7
 
Oui j'ai rajouté la ligne
0
lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
 
alors remplace if(isset etc..
par if(empty($_POST['login']) || empty($_POST['motpasse']))
{
echo 'lcertains champs sont vide';
//tu renvoie a la page precedente
}
else
{
//tu continue la vérif
}
0
idrichoue Messages postés 161 Statut Membre 7
 
ok je vais essayer et aprés je te dirais et encore une fois merci de ton aide
0
idrichoue Messages postés 161 Statut Membre 7
 
Bof je l'ai essayé mais ca marche pas
0
lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
 
bizzare..
remet ton nouveau code qu'on regarde
0
idrichoue Messages postés 161 Statut Membre 7
 
Excusez moi du retard voila le nouveau code :

<?php
session_start();
if(isset($_POST['login']) && isset($_POST['password'])) // on verifie qu'il existe bien des valeur post
{
$login=$_POST['login'];
$pass=$_POST['password'];
$con = mysql_connect('localhost','root','');
mysql_select_db('personnel', $con);

$sql = "SELECT * FROM identite WHERE pseudo='".$login."' and motpasse='".$pass."' "; //je selectionne uniquement le champ pseudo et motde passe
$res = mysql_query($sql);

$row=mysql_fetch_array($res);
$pseudo=$row['pseudo'];
$pasw=$row['motpasse'];

if($pseudo==$login && $psw==$pass) // si le resultat est strictement egale au valeurs pos c'est ok
{
echo "<center>Bienvenue sur votre espace membre : $login</center>";
//.......
//...
//tu continue l'affichage de ta page
}
}
else
{
echo "<center>Veuillez vérifier vos données</center>";

}
?>
0
lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
 
je te file un code que j'ai fait et qui fonctionne tu 'aura plus qu'a l'adapter à ton cas

session_start();
$origine=$_SERVER['HTTP_REFERER']; // l'adresse d'ou on vient

//******************** recherche dans la table utilisateur
if (empty ($_POST['pseudo']) OR empty($_POST['password']))
{
	//si c'est le pseudo
	if (empty($_POST['pseudo']))
	 {
	 ?>
	 <script language="javascript" type="text/javascript">
	 alert('Vous n\avez pas saisi votre pseudo');
	 window.location.replace('la page ou que tu veut qu'il soit redirigé');
	 </script>
	 <?PHP
	//echo 'Le champ pseudo est vide';
	//exit();
	}
		//si c'est le psw
		if (empty($_POST['password'])) 
		{
		?>
	 <script language="javascript" type="text/javascript">
	 alert('Vous n\avez pas entré de mot de passe');
	 window.location.replace('la page ou que tu veut qu'il soit redirigé');
	 </script>
	 <?PHP
		}
}
// attention c'est du mysqli,la syntaxe est legerement # de mysql
$connexion=mysqli_connect('tes param de connexion') or die('connexion impossible au serveur verif php' .mysqli_error());


//les champs sont remplis
$client = htmlspecialchars(addslashes($_POST['pseudo'] ));
//recup de ladresse d'origine

$crypt=md5($_POST['password']); // je crypte le pasw si toi tu ne la pas stocké crypté c'est pas la peine


//je lance la recherche dans la table

$sql = "SELECT Login FROM ita_table WHERE Login='$client' AND Mot_passe='$crypt'" ;

       $req = mysqli_query($connexion,$sql) or die('Erreur  !<br/>'.$sql.'<br/>'.mysqli_error()); 
    $infomembres = mysqli_fetch_array($req);
			
$utilisateur=$infomembres['Login'];
//affichage des resultats

if (($utilisateur==$client))
 {


// si on obtient une réponse, alors l'utilisateur est un membre 
   
 //creation d'un cookie php duree de vie 1 heure accesible depuis partout
setcookie('login', $utilisateur,time()+3600,'/');
$_SESSION['visiteur'] = $utilisateur;
//print_r($_SESSION);
//msg d'erreur
echo 'urlorigine'.$urlorigine.'<br/>';

//redirection vers la page d'origine


//header ('Location:'.$origine);

	 }
	 else
	 {
	 ?>
	 <style type="text/css">

body {
	background-color: #330000;
}

</style>
<table border="0" align="center" bgcolor="#FF6666">
  <th> <h4>D&eacute;sol&eacute; ,le pseudo ou le mot de passe sont inconnus.</h4></th>
  <tr>
    <td><input type="button" id="new_essai" value="Refaire un essai ! " onClick="javascript:history.back()">
  
  <input type="button" id="accueil" value="Retourner à l'accueil..." onClick="javascript:window.location.href='/index.php'" />
  </td></tr>

</table>
</div>	
	 <?PHP 

}
?>
		
</body>

</html>



voila avec ça ca devrais marcher ce code est fonctionnel
@+
0
idrichoue Messages postés 161 Statut Membre 7
 
Ok c'est le code en javascript qui me pose probléme car je l'ai jamais fait, donc je m'y retrouve pas en java.
0
lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
 
??
y'a pas de javascript c'est que du php
si tu parle de ça
javascript:window.location.href='/index.php
c'est simplement pour rediriger sur ton index
0
idrichoue Messages postés 161 Statut Membre 7
 
Ok je vais essayer et encore merci.
0