Probleme avec les sessions en php

Fermé
ramrouma_2012 Messages postés 7 Date d'inscription dimanche 2 juin 2013 Statut Membre Dernière intervention 3 juin 2013 - Modifié par irongege le 2/06/2013 à 22:05
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 - 3 juin 2013 à 01:53
Salut, j'ai un probleme avec les sessions en php, j'ai une application avec le php, je dois travailler avec les sessions , mon encadreur me demande de creer une application authentification signifie, je dois creer une formulaire, je saisie login et mot de passe, si le mot de passe est d'un administrateur, une session d'un adminstrateur s'ouvre dont laquelle on peut geree les utilisateur et geree les documents, et si le mot de passe d'un simple utilsateur une session s'ouvre dont laquelle on peut gerer seulemet les dossiers,
en utilsant un lien a la base des donnees, table user contient deux champ login et mot_passe, merci...............
A voir également:

12 réponses

JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
2 juin 2013 à 22:04
Et, ou est le problème exactement ?
0
ramrouma_2012 Messages postés 7 Date d'inscription dimanche 2 juin 2013 Statut Membre Dernière intervention 3 juin 2013
2 juin 2013 à 22:17
le probleme c'est comment je peux travailler avec les session en php] pour resoudre ce probleme, merci donnez le moi code exacte,
0
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
2 juin 2013 à 22:19
tu doit utiliser $session_start();
0
ramrouma_2012 Messages postés 7 Date d'inscription dimanche 2 juin 2013 Statut Membre Dernière intervention 3 juin 2013
2 juin 2013 à 22:21
moi je veux un code complet avec session_start();
0

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

Posez votre question
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
2 juin 2013 à 22:25
il faut que tu récupère les données de ton formulaire, que tu face une requête pour comparer si le login et mot de passe existe bien dans la bdd et qu'ils correspondent l'un de l'autre. Si c'est le cas, tu ouvre une session. Si ne n'est pas le cas, tu affiche un message d'erreur. Regarde sur le net, il y a plein de chose sur le ssession
0
ShayFmw Messages postés 106 Date d'inscription samedi 12 janvier 2013 Statut Membre Dernière intervention 10 juillet 2013 43
Modifié par ShayFmw le 2/06/2013 à 22:31
Bonsoir,
Et moi je voudrais une vie remplie de bonheur et de paix, mais je trouve vraiment pas, faut dire que je n'ai pas le sens de l'orientation mais je soupçonne autre chose.

Pour les sessions c'est plus ou moins comme ça, après cela ne se déclare seulement lorsque ton formulaire de connexion à bien été rempli et que les informations sont correctes

session_start();
et tu déclares tes sessions
$_SESSION['login'] = $variable
$_SESSION['name'] = $variable2
Ce sont des exemples, tu affectes des variables (imaginons que $variable soit un nom de compte et $variable2 un nom de famille) à des sessions, ensuite cela permet de récupérer cette information sur une autre page et de voir si l'utilisateur a bien été soumis au formulaire de connexion pour accéder à une page sécurisée.

if (isset($_SESSION['login'])) {
//on affiche le contenu
} else {
//non soumis au formulaire de connexion on affiche autre chose
}

Sur ton index.php par exemple tu démarres une session (ce que j'ai marqué au dessus) et tu peux les récupérer sur une autre page
echo $_SESSION['login']; t'affichera la variable $variable affecté à cette session précédemment.

Passionné d'informatique et de jeux vidéos.
0
ramrouma_2012 Messages postés 7 Date d'inscription dimanche 2 juin 2013 Statut Membre Dernière intervention 3 juin 2013
2 juin 2013 à 22:30
merci tortue60 pout la reponse moi je fais tout ca, mais il m'a dit non, c'est pas , voici toute la code que ja'i cree,
**page login.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<?php
include("config.php");
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST")
{
// username and password sent from Form
$myusername=addslashes($_POST['username']);
$mypassword=addslashes($_POST['password']);

$sql="SELECT id FROM admin WHERE username='$myusername' and passcode='$mypassword' ";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
$active=$row['active'];
$count=mysql_num_rows($result);
$id1=$row['role'];


// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1 && $myusername== 'admin')
{
session_register("myusername");
$_SESSION['login_user']=$myusername;

header("location: page1.php");
}

if($count==1 && $myusername != 'admin')
{
session_register("myusername");
$_SESSION['login_user']=$myusername;

header("location: page1.php");
}

else
{
echo "Your Login Name or Password is invalid" ;
}
}
?>
<form action="" method="post">
<label>UserName :</label>
<input type="text" name="username"/><br />
<label>Password :</label>
<input type="password" name="password"/><br/>
<input type="submit" value=" Submit "/><br />
</form>
</body>
</html>

*********page dbase.php
<?PHP
mysql_connect("localhost","root","mysql");
mysql_select_db("etudiants");
?>
*********page logout.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<?php
session_start();
if(session_destroy())
{
header("Location: login.php");
}
?>
</body>
</html>
page ************ lock.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<?php
include('config.php');
session_start();
$user_check=$_SESSION['login_user'];

$ses_sql=mysql_query("select username from admin where username='$user_check' ");

$row=mysql_fetch_array($ses_sql);

$login_session=$row['username'];

if(!isset($login_session))
{
header("Location: login.php");
}
?>
</body>
</html>
**************page1.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<?php
include('lock.php');
session_start();
?>

<body>

<h1>Welcome <?php echo $login_session; ?></h1><br /><br /><br /><br /><br /><br /><br />
<a href="page.html">GESTION UTILISATEUR</a><br />
<a href="page2.html">GESTION DOCUMENTS</a><br />
<a href="page3.html">DECONNEXION</a><br />
</body>
</html>

mais il me dit c'est pas
0
ramrouma_2012 Messages postés 7 Date d'inscription dimanche 2 juin 2013 Statut Membre Dernière intervention 3 juin 2013
2 juin 2013 à 22:37
merci Shay Fmw, je fais tout ca il me dit nn,..........; c'est pas une session, il veut une seule page variable selon l'utilisateur, si l'utilsateur est un administrateur elle devient page admin avec les acces d'un adminstrateur, si l'utilsateur est un simple utilisateur la meme page devient une page d'utilisateur avec les acces d'un utilsateur, signifie quant fait appelle à une seule page dans les 2 cas, mais moi je ne sais pas comment et c'est tres interessant pour moi, merci d'avance
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
2 juin 2013 à 22:51
Comment ça le code complet, on est supposé créer ton projet ?!
Une variable de session est utilisé comme une simple variable.

La différence :
Une variable simple est supprimé dés que le chargement de la page se termine.
Une variable de session n'est supprimé qu'après avoir passer un bon moment sans avoir recharger la page.

En gros ce n'est pas une question de session !

Est ce que tu t'y connais en orienté objets, les classes ?
0
ramrouma_2012 Messages postés 7 Date d'inscription dimanche 2 juin 2013 Statut Membre Dernière intervention 3 juin 2013
2 juin 2013 à 23:36
oui j'ai connait l'orienté objet et les classes, mais il me demande de travailler avec les sessions php, je ne sais pas comment wallah ,je ne sais pas comment, merci beaucoup , vraiment merci beaucoup, par ce que tu as consacré du temps pour m'aider,
0
ramrouma_2012 Messages postés 7 Date d'inscription dimanche 2 juin 2013 Statut Membre Dernière intervention 3 juin 2013
3 juin 2013 à 00:16
<?php
session_name('utilisateur');
session_start(); // Création de la première session
[...] // Utilisation de la première session
session_write_close(); // Fermeture de la première session, ses données sont sauvegardées.
session_name('admin'); // Indication du nom de la seconde session
session_start(); // Ouverture de la seconde session
[...] // Utilisation de la seconde session.
?>
EST CE QUE JE PEUX TROUVER UNE SOLUTION AVEC CE CODE
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 3/06/2013 à 01:54
Comme je l'ai dis, ce n'est pas une question de session, les sessions sont juste des variables !

J'ai invoqué les classes parce qu'ils peuvent te faciliter le travail.

Donc tu crée une classe "Administrateur" et "Utilisateur".
Si l'administrateur peut faire tout ce que l'utilisateur fait, alors "Administrateur" hérite de la classe "Utilisateur".
Sinon, si l'administrateur et l'utilisateur possède des actions et attributs pareils, alors tu dois créer une classe mere "UtilisateurCommun", et tu y mets tout les points de ressemblance entre l'administrateur et l'utilisateur, puis "Administrateur" et "Utilisateur" hériteront de la classe "UtilisateurCommun".

Les attributs communs sont par exemple : nom, prenom, type ...
Les actions communes sont par exemple : authentification, deconnexion ...
Les actions propres a l'administrateur : gererUtilisateur, gererDocument ...
Les actions propres a l'utilisateur : gererDossier ...

-------------

La méthode authentification doit retourner deux types d'objets, soit un objet de type "Administrateur" soit un objet de type "Utilisateur".

Donc tu fais par exemple :
$currentUser = UtilisateurCommun::authentification($username, $password);

A l'intérieur de la méthode, tu interroge la base de données, pour voir si le couple $username et $password sont correct, si c'est le cas, alors tu vérifie le type de l'utilisateur, si c'est un Administrateur, alors tu retourne une nouvelle instance de la classe Administrateur, sinon Utilisateur.

Exemple :
public static function authentification($user, $pass) {
    //Requete SELECT
    //Recuperation de resultat de la requete dans la variable "$data"
    
    if(empty($data)) return null; //Utilisateur introuvable
    elseif($data['type'] == 'Administrateur') return new Administrateur();
    else return new Utilisateur();
}

Voila, ceci n'est qu'un exemple basique (non testé).

---------

Quant aux sessions :
Il faut toujours lancer la session au début de la page avec session_start().
Si l'utilisateur envoi le formulaire de connexion, tu vérifie en premier que le contenu des champs est bien valide, si c'est le cas, tu appele la méthode de connexion comme montré plus haut, si la méthode retourne un résultat non null, alors la connexion a réussi, donc tu crée une session pour l'utilisateur en cours (peut importe son type).

Exemple :
//Si tout les champs sont valides
$currentUser = UtilisateurCommun::authentification($username, $password);

if($currentUser != null) $_SESSION['user'] = serialize($currentUser);
else //On affiche des erreurs.


Il faut que tu sache que dans une variable de session, on peut pas enregistrer des valeurs non linéaires, comme des tableaux, des objets ... c'est pour ça qu'on utilise serialize, pour linéariser l'objet.

---------

Voila, donc pour vérifier que l'utilisateur est connecté :
if(isset($_SESSION['user'])) ...


Pour vérifier le type de l'utilisateur (admin ou simple) :
$currentUser = unserialize($_SESSION['user']);
$leType = $currentUser->getType();


Mettez en résolu quand c'est résolu -.- ...
0