Problème avec les sessions PHP

Eléphanteau du PHP | 17 Messages

17 juin 2014, 22:25

Bonsoir, Svp j'ai besoin de votre aide :
j'utilise dans chaque fichier.php un code de php de session mais le problème c'est que quand je me connecte il me redirige vers la page d'accueil même si je me suis déjà authentifié voila le code :
<?php
session_start();r
if(empty($_SESSION['username']) && empty($_SESSION['password'])) 
{
  header('Location: index.php');
  exit();
}
?>

ZeCreamer
Invité n'ayant pas de compte PHPfrance

17 juin 2014, 23:28

Bah, on aurait plutot besoin de voir comment tu crée la variable de session à la connexion du membre. Juste avec ce que tu nous montre, on devine que probablement ta session n'existe tout simplement pas, OU, tu as pas entré de donnée à l'interieur.

Mais un simple test du genre
if( !isset( $_SESSION['user'] ) ){
   header('location:/');

}
fonctionnera à merveille !
Si la session user existe, bah, le membre, il est connecté hein :)
Pas besoin de faire le test sur le mot de passe, de toute manière, à mon sens, le mot de passe ne devrais jamais être dans une variable de session, puisque techniquement, tu ne t'en servira pas pour afficher nul part, ni faire un test quelqu'il soit, sauf, pour la connexion, et, à la connexion, la variable de session n'existe pas !

Mammouth du PHP | 1339 Messages

17 juin 2014, 23:50

Fait un print_r($_SESSION) apres ton session_start() pour voir ce qui est enregistré
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 17 Messages

18 juin 2014, 02:11

Tout d'abord je vous remercie pour vos réponses :)
voila le code la page traitement d'authentification que j'utilise:
<?php

  include('connect.inc');
  include('fonction.php');

      $username=$_POST['username'];
	  $password = md5($_POST["password"]) ;
	  $sql="select * from cheminot";
	  $row=mysql_query($sql);
	  $nbr=mysql_num_rows($row);
	  while($res=mysql_fetch_array($row)){
		  if($username==$res['username'] && $password==$res['password'] && $res['type']=='administrateur'){
			 session_start();
			 $_SESSION['username']==$username;
			 $_SESSION['password']==$password;
			 
             header('location:espaceadmin.php');
          
			  
			  }
			  if($username==$res['username'] && $password==$res['password'] && $res['type']==''){
			 session_start();
			 $_SESSION['username']==$username;
			 $_SESSION['password']==$password;
			 
             header('location:espaceuti.php');
          
			  
			  }
			  else {
			  alert('Username ou password est incorrect');}
			  
	  }
?>
J'ai testé avec ce que vous m'avez donné mais ça n'a pas marché :/
Merci pour votre aide!

Mammouth du PHP | 2278 Messages

18 juin 2014, 08:02

Mets donc le session_start comme première instruction;
tu fais suivre de
$_SESSION['username'] = "";
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 juin 2014, 08:08

Salut,

Qu'est ce le print_r($_SESSION) y' affiché ?

Je te conseil d'activer les erreurs et leur affichage (error_reporting = E_ALL et display_errors = on) tu devrais en avoir dans ton fichier de connexion.

Le problème viens du fait que tu confond l'égalité (==) et l'affectation (=) du coup $_SESSION['username'] == $username doit te retourner une erreur : undefined index username.
Ce qui est vrai vu quid tu souhaite comparer le contenu de $_SESSION['username'] avec $username.
La bonne syntaxe est $_SESSION['username'] = $username;

Même chose pour les autres

Attention le mot de passe n'est pas utile en session après tout l'utilisateur est déjà connecté ;)
Sinon ton test de vérification de connexion est correct (même si j'estime que la partie "password" ne devrait pas y être ;) )

@+
Il en faut peu pour être heureux ......