Page 1 sur 1

Problème avec le controle de session

Posté : 08 mars 2013, 03:39
par Cappie
Bonjour,

J'ai un petit problème de contrôle de session afin que l'utilisateur qui se connecter puisse naviguer sur le site mais lorsque qu'il se déco il ne peut pas faire précèdent pour revenir dans le site et continuer a naviguer:

Mon bout de code contrôle de session :

<?php

// on lance la session
session_start();
/// vérification qu'il n'existe PAS une variable de session login (créée uniquement si on se connecte avec succès)
if (!isset($_SESSION['login'])) {
die ("ERREUR: Acces interdit!");
}
// Sinon et bien c'est que la variable existe, donc on ne fait rien de spécial et le script continue sa route (et affiche ta page).
else {
}

?>



Mon bout de code connexion:

<?php
require_once('connexion.php');

/*
-----------------------------------
------ SCRIPT DE PROTECTION -------
DBProtect V1.2
-----------------------------------
*/
session_start(); // début de session
if (isset($_POST['login'])){ // execution uniquement apres envoi du formulaire (test si la variable POST existe)
$id = addslashes($_POST['id']);
$login = addslashes($_POST['login']); // mise en variable du nom d'utilisateur
$pass = addslashes(sha1($_POST['pass'])); // mise en variable du mot de passe chiffré à l'aide de md5 (I love md5)

// requete sur la table administrateurs (on récupère les infos de la personne)
mysql_select_db($database_database, $database);
$verif_query=sprintf("SELECT * FROM users WHERE login='$login' AND pass='$pass'"); // requête sur la base administrateurs
$verif = mysql_query($verif_query, $database) or die(mysql_error());
$row_verif = mysql_fetch_assoc($verif);
$users = mysql_num_rows($verif);
if ($users) { // On test s'il y a un utilisateur correspondant
// déclaration des variables de session
$_SESSION['rang'] = $row_verif['rang']; // le privilège de l'utilisateur (permet de définir des niveaux d'utilisateur)
$_SESSION['id'] = $row_verif['id'];
$_SESSION['login'] = $row_verif['login']; // Son Login
$_SESSION['pass'] = $row_verif['pass']; // Son mot de passe (à éviter)
if($row_verif["rang"] == "1") //les infos correspondent à un compte admin
header('Location: Administration.php');//on redirige vers la partie admin
else if($row_verif["rang"] == "0") //les infos correspondent à un compte utilisateur
header('Location: Page accueil.php');//on redirige vers la partie utilisateur

}
else {
header("Location:index.php?erreur=login"); // redirection si utilisateur non reconnu
}
}
// Gestion de la déconnexion
if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){ // Test sur les paramètres d'URL qui permettront d'identifier un contexte de déconnexion
$login = $_SESSION['login']; // On garde le prénom en variable pour dire au revoir (soyons polis :-)
session_unset("authentification");
header("Location:index.php?erreur=delog&login=$login");
}
?>



Merci d'avance pour votre aide

Re: Problème avec le controle de session

Posté : 08 mars 2013, 09:25
par xTG
J'ai un petit problème de contrôle de session afin que l'utilisateur qui se connecter puisse naviguer sur le site mais lorsque qu'il se déco il ne peut pas faire précèdent pour revenir dans le site et continuer a naviguer:
Si c'était une page protégée cela me semble le cas le plus normal au monde.
Pourrais-tu détailler ton problème ?

Re: Problème avec le controle de session

Posté : 08 mars 2013, 11:45
par sirakawa
Mets ton session_start(); comme première instruction partout.
Ce n'est pas la réponse, mais c'est plus prudent.

Re: Problème avec le controle de session

Posté : 08 mars 2013, 14:33
par Cappie
J'ai un petit problème de contrôle de session afin que l'utilisateur qui se connecter puisse naviguer sur le site mais lorsque qu'il se déco il ne peut pas faire précèdent pour revenir dans le site et continuer a naviguer:
Si c'était une page protégée cela me semble le cas le plus normal au monde.
Pourrais-tu détailler ton problème ?

Bonjour,

Dés que j'arrive sur ma page index.php je me connecte sur ma page administration ou page accueil cela dépend des rang des utilisateurs. Avec le formulaire cité en second au poste suivant le formulaire et la connexion fonctionne cependant je veux mettre un contrôle de session à chaque page intégrer avec la fonction include "control-session.php"; cependant quand je me connecte une page m'affiche :
Not Found

The requested URL /livegamessession/index.php.erreur was not found on this server.


par contre quand j'enlève le session start de control session sa se connecte bien.

Merci pour votre aide .

Re: Problème avec le controle de session

Posté : 08 mars 2013, 16:06
par xTG
Le fichier index.php.erreur ?
De plus je reste perplexe, ce n'est pas ajouter ou supprimer une instruction PHP qui va te provoquer une page blanche avec erreur 404.

Re: Problème avec le controle de session

Posté : 08 mars 2013, 16:16
par Cappie
Le fichier index.php.erreur ?
De plus je reste perplexe, ce n'est pas ajouter ou supprimer une instruction PHP qui va te provoquer une page blanche avec erreur 404.

J'ai trouvé l'erreur du index.php.erreur c'est mon bouton déconnexion sur la page Administration

cependant j'ai cette erreur la maintenant

SCREAM: Error suppression ignored for
( ! ) Notice: A session had already been started - ignoring session_start() in C:\wamp\www\livegamessession\control-session.php on line 4

Re: Problème avec le controle de session

Posté : 08 mars 2013, 20:55
par moogli
le session_start doit être avant TOUT affichage hors toi tu affiche quelque chose avant la ligne 4 de control-session.php

Attention une ligne ou un espace vide en dehors des tags php c'est un affichage.

plus vicieux, si tu as encodé ton fichier en utf-8 avec bom tu aura ce problème car php ne sais pas l'interpréter.


@+

Re: Problème avec le controle de session

Posté : 08 mars 2013, 21:21
par Cappie
J'ai refait plein de truc et sa fonctionne maintenant cependant je veux faire un controle de sesion avec le login mais aussi le rang pour que les utilisateur n'accède pas a mes pages admin : mon code

<?php
session_start();
/// vérification qu'il n'existe PAS une variable de session login rang (créée uniquement si on se connecte avec succès)
if (!isset($_SESSION['login'])) && (!isset($_SESSION['rang'] == '1')) {
die ("Acces interdit! Veuillez vous connecter");
}
// Sinon et bien c'est que la variable existe, donc on ne fait rien de spécial et le script continue sa route (et affiche ta page).
else {
}

?>

Ce code ne fonctionne pas par contre :

<?php
session_start();
/// vérification qu'il n'existe PAS une variable de session id_user (créée uniquement si on se connecte avec succès)
if (!isset($_SESSION['login'])) {
die ("Acces interdit! Veuillez vous connecter");
}
// Sinon et bien c'est que la variable existe, donc on ne fait rien de spécial et le script continue sa route (et affiche ta page).
else {
}

?>

Cela fonctionne que pour le login!

Merci de votre aide

Re: Problème avec le controle de session

Posté : 08 mars 2013, 21:25
par moogli
(!isset($_SESSION['rang'] == '1')) {

tu fait un isset sur la comparaison .......

(!isset($_SESSION['rang']) && $_SESSION['rang']==1)


@+

Re: Problème avec le controle de session

Posté : 09 mars 2013, 01:07
par Cappie
(!isset($_SESSION['rang'] == '1')) {

tu fait un isset sur la comparaison .......

(!isset($_SESSION['rang']) && $_SESSION['rang']==1)


@+
J'ai mis comme ça mais cela ne fonctionne pas

<?php
session_start();
/// vérification qu'il n'existe PAS une variable de session id_user (créée uniquement si on se connecte avec succès)
if (!isset($_SESSION['login']))
if (!isset($_SESSION['rang']) && $_SESSION['rang']==1) {
die ("Acces interdit! Veuillez vous connecter");
}
// Sinon et bien c'est que la variable existe, donc on ne fait rien de spécial et le script continue sa route (et affiche ta page).
else {
}

?>

je me connecte bien cependant quand je me connecte et fait precedent je peux revenir sur la page

Re: Problème avec le controle de session

Posté : 09 mars 2013, 02:12
par Cappie
avec :

<?php
session_start();
/// vérification qu'il n'existe PAS une variable de session id_user (créée uniquement si on se connecte avec succès)
if($_SESSION['rang'] != 1)
{
die ("Acces interdit! Veuillez vous connecter");
}
// Sinon et bien c'est que la variable existe, donc on ne fait rien de spécial et le script continue sa route (et affiche ta page).
else {
}

?>

avec cela je me connecte et déconnecte et précédent me met bien accès interdit et quand je me connecte avec un compte utilisateur et marque une page admin il y a aussi accès interdit par contre je voulais savoir si c plus sécuriser de vérifier la session login avec car je n'arrive pas a mettre les deux session

Par contre quand je fais precedent il me marque

Notice: Undefined index: rang in C:\wamp\www\livegamessession\control-sessionad.php on line 4
Call Stack
# Time Memory Function Location
1 0.0015 151144 {main}( ) ..\Administration.php:0
2 0.0020 152400 include( 'C:\wamp\www\livegamessession\control-sessionad.php' ) ..\Administration.php:2
Acces interdit! Veuillez vous connecter

Re: Problème avec le controle de session

Posté : 09 mars 2013, 11:25
par moogli
Dans le ode précédent c'est !=1 et pas ==1

Il faut quand même vérifier ce que l'on te donne un minimum, une boulette ça arrive ....


Et l'index Rang n'existe pas, d'où le isset, tu donc avoir un problème au niveaux de la connexion.


@+

Re: Problème avec le controle de session

Posté : 09 mars 2013, 17:08
par Cappie
Dans le ode précédent c'est !=1 et pas ==1

Il faut quand même vérifier ce que l'on te donne un minimum, une boulette ça arrive ....


Et l'index Rang n'existe pas, d'où le isset, tu donc avoir un problème au niveaux de la connexion.


@+
Donc j'ai essayer cela

<?php
session_start();
/// vérification qu'il n'existe PAS une variable de session id_user (créée uniquement si on se connecte avec succès)
if (!isset($_SESSION['login']))
if (!isset($_SESSION['rang']) && $_SESSION['rang']!=1) {
die ("Acces interdit! Veuillez vous connecter");
}
// Sinon et bien c'est que la variable existe, donc on ne fait rien de spécial et le script continue sa route (et affiche ta page).
else {
}

?>

et la je peux me connecter avec l'admin mais un utilisateur peux venir sur la page donc se n'est pas bon.

Et pour le problème avec rang cela vient pas de mon code déconnexion ?

voila mon code :

<?php
session_start();
unset($_SESSION);
unset($_COOKIE);
session_destroy();
header ('Location:index.php');
?>

et mon code connexion :

<?php
session_start();
require_once('connexion.php');
if (isset($_POST['login'])){ // execution uniquement apres envoi du formulaire (test si la variable POST existe)
$rang = addslashes($_POST['rang']);
$id = addslashes($_POST['id']);
$login = addslashes($_POST['login']); // mise en variable du nom d'utilisateur
$pass = addslashes(sha1($_POST['pass'])); // mise en variable du mot de passe chiffré à l'aide de md5 (I love md5)

// requete sur la table administrateurs (on récupère les infos de la personne)
mysql_select_db($database_database, $database);
$verif_query=sprintf("SELECT * FROM users WHERE login='$login' AND pass='$pass'"); // requête sur la base administrateurs
$verif = mysql_query($verif_query, $database) or die(mysql_error());
$row_verif = mysql_fetch_assoc($verif);
$users = mysql_num_rows($verif);
if ($users) { // On test s'il y a un utilisateur correspondant
// déclaration des variables de session
$_SESSION['rang'] = $row_verif['rang']; // le privilège de l'utilisateur (permet de définir des niveaux d'utilisateur)
$_SESSION['id'] = $row_verif['id'];
$_SESSION['login'] = $row_verif['login']; // Son Login
$_SESSION['pass'] = $row_verif['pass']; // Son mot de passe (à éviter)
if($row_verif["rang"] == "1") //les infos correspondent à un compte admin
header('Location: Administration.php');//on redirige vers la partie admin
else if($row_verif["rang"] == "0") //les infos correspondent à un compte utilisateur
header('Location: Page accueil.php');//on redirige vers la partie utilisateur

}
else {
header("Location:index.php?erreur=login"); // redirection si utilisateur non reconnu
}
}
// Gestion de la déconnexion
if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){ // Test sur les paramètres d'URL qui permettront d'identifier un contexte de déconnexion
$login = $_SESSION['login']; // On garde le prénom en variable pour dire au revoir (soyons polis :-)
session_unset("authentification");
header("Location:index.php?erreur=delog&login=$login");
}
?>

Re: Problème avec le controle de session

Posté : 09 mars 2013, 21:41
par moogli
Merci d'utiliser le bbcode (php) afin de coloriser ton code c'est plus lisible.
<?php
session_start();
/// vérification qu'il n'existe PAS une variable de session id_user (créée uniquement si on se connecte avec succès)
if (!isset($_SESSION['login']) || !isset($_SESSION['rang']) || (isset($_SESSION['rang']) && $_SESSION['rang'] != 1)) {
    die ("Acces interdit! Veuillez vous connecter");
}
ajoute un var_dump($_SESSION); après le session_start(); tu verra ce qu'il y a en session.

s'il n'y a rien alors que tu es connecté c'est que ça se passe mal dans ton code.


@+

Re: Problème avec le controle de session

Posté : 10 mars 2013, 00:03
par Cappie
Merci d'utiliser le bbcode (php) afin de coloriser ton code c'est plus lisible.
<?php
session_start();
/// vérification qu'il n'existe PAS une variable de session id_user (créée uniquement si on se connecte avec succès)
if (!isset($_SESSION['login']) || !isset($_SESSION['rang']) || (isset($_SESSION['rang']) && $_SESSION['rang'] != 1)) {
    die ("Acces interdit! Veuillez vous connecter");
}
ajoute un var_dump($_SESSION); après le session_start(); tu verra ce qu'il y a en session.

s'il n'y a rien alors que tu es connecté c'est que ça se passe mal dans ton code.


@+


Merci beaucoup sa fonctionne est j'ai plus d'erreur !!