IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Sessions PHP : besoin d'aide !!


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Points : 13
    Points
    13
    Par défaut Sessions PHP : besoin d'aide !!
    Je suis débutant en PHP, jusqu'à présent je n'ai fais que de l'ASP.
    Je n'ai pas bien compris comment marche l'histoire des sessions en PHP alors qu'en ASP cela me parait tout simple.
    En utilisant les options de DreamWeaver j'arrive à peu près à faire à protéger l'accès de mes pages mais c'est du tout cuit et quand je relis mon script je n'y comprend pas la moitié!!

    En fait, si vous pouviez m'aider, j'aimerai reproduire le script suivant ASP en PHP :

    verif.asp
    <%
    id=request.Form("i")
    pass=request.Form("p")
    if id="" or pass="" then
    response.Redirect "ident.asp?error=vide"
    end if

    set connecteur = server.CreateObject("adodb.connection")
    chaine = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &("\stage12\DATA\formasp.mdb")
    pw = "*****"
    connecteur.open chaine,,pw

    set rs=server.CreateObject("adodb.recordset")
    requete="SELECT * FROM Identifiants WHERE id='"&id&"' AND pwd='"&pass&"'"
    rs.open requete, connecteur,1,2,1
    if rs.recordcount>0 then
    session("user")=rs("droits")
    session("pseudo")=rs("pseudo")
    rs.close
    connecteur.close
    set rs=nothing
    set connecteur=nothing
    response.redirect "liste3.asp"

    else
    rs.close
    connecteur.close
    set rs = nothing
    set connecteur = nothing
    response.redirect "ident.asp?error=faux"

    end if
    %>

    j'ai bien entendu auparavant un formulaire avec 2 champs : i et p


    Et ce script la c'est le test à faire à chaque page qui est consultable par l'administrateur, mais comme je n'arrive pas gérer les sessions je ne vois pas comment l'écrire en PHP :

    testadmin.asp
    <%
    response.cachecontrol = "no-cache"
    if (session ("user")<>"ADMIN") then
    Response.redirect("../erreur_session.htm")
    end if
    %>



    Merci d'avance pour votre aide!!!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Points : 362
    Points
    362
    Par défaut
    Tu comprends pas les sessions?????

    Tu as pas du chercher des masses sur le web en tutoriel.

    Y a rien de plus simple.

    tu veux affecter une variable de session du fais $_SESSION['nom_variable'] = ce_que_tu_veux;

    et cette variable est transmise de page en page.

    tu veux recuperer la valeur.

    $mavaleur = $_SESSION['nom_variable'];


    Voila je vois rien de compliqué la dedans pour un début.

    Après y a des suptilités comme pour tout.

  3. #3
    Invité
    Invité(e)
    Par défaut
    n'oublie pas le session_start au debut de chaque page sinon ça sert a rien

  4. #4
    Membre averti Avatar de johweb
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 342
    Points : 367
    Points
    367
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <%
    response.cachecontrol = "no-cache"
    if (session ("user")<>"ADMIN") then
    Response.redirect("../erreur_session.htm")
    end if
    %>
    devrait pouvoir être traduit par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?
    session_start();
    if ($_SESSION["user"]!="ADMIN"){
    die('<META HTTP-equiv="refresh" content=0;URL="../erreur_session.htm">');
    }
    ?>

  5. #5
    Membre éclairé Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Points : 846
    Points
    846
    Par défaut
    Pour les sessions, tu dois débuter toutes tes pages à "protéger" par:
    <?php
    session_start
    ();
    ?>
    ensuite pour récupérer les valeurs de tes champs du formulaire, tu dois utiliser la variable $_POST ou $_GET selon que l'envoi de ton formulaire par la méthode post ou get.

    enfin tu protège tes pages et redirige vers la page login par:

    <?php
    if(!isset(_SESSION&#91;'login'])) header('location: login.php');
    ?>
    Si tu as du mal pour ecrire ton script, je t'invite à lire les tutoriels présents sur ce site: http://php.developpez.com/cours/
    Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés

  6. #6
    Invité
    Invité(e)
    Par défaut
    Si ça peut t'aider c'est trés bien expliquer :
    http://cyberzoide.developpez.com/php4/faqsession/

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 77
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par rbaatouc
    n'oublie pas le session_start au debut de chaque page sinon ça sert a rien
    session_start à mettre avant tout affichage de code HTML bien sûr!

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par fuhraih
    session_start à mettre avant tout affichage de code HTML bien sûr!
    oui c'est vrai ça me paraissait evident

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 77
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par rbaatouc
    oui c'est vrai ça me paraissait evident
    Oui, mais combien de messages sont envoyés sur ce forum à cause de ça!!! lol

  10. #10
    Membre averti Avatar de johweb
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 342
    Points : 367
    Points
    367
    Par défaut
    Citation Envoyé par fuhraih
    Oui, mais combien de messages sont envoyés sur ce forum à cause de ça!!! lol
    Ben.... 10 par jour, non ?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Bonjour tout le monde, j'ai encore besoin de vous, je vous explique :

    j'ai créé une page ident.php qui comporte un formulaire ensuite j'ai une page verif.php :

    <?php
    session_start();
    $db_stag=$_POST['logs'];
    $db_pass=$_POST['pwds'];
    //Connection à mysql et sélection de la base de données
    $connection = mysql_connect('localhost', '****', '****') or die(mysql_error());
    mysql_select_db('bdd', $connection) or die(mysql_error());
    //Préparation de la requête
    $query = "SELECT * FROM stagiaire
    WHERE login_stag='$db_stag' AND pwd_stag='$db_pass'";
    //exécution de la requête et récupération du nombre de résultats
    $result = mysql_query($query, $connection);
    $affected_rows = mysql_num_rows($result);
    //S'il y a exactement un résultat, l'utilisateur est authentifié, sinon, on l'empêche d'entrer
    if($affected_rows == 1) {
    //On ajoute l'utilisateur aux variables de session
    $_SESSION['username'] = $db_stag;
    $_SESSION['userlevel'] = 'Stagiaire';
    header("Location: menu_stag.php");
    }
    else {
    header("Location: ident.php");
    }
    ?>

    Ensuite j'ai une page VerifyLogin.php :

    <body>
    <?php
    session_start();
    if(!isset($_SESSION['login']) || ($_SESSION['userlevel'])!='Stagiaire') {
    header("Location: erreur_session.htm"); }
    ?>
    </body>

    Et donc pour protéger mes pages j'inclus dans le script ceci :

    <?php
    include("VerifyLogin.php");
    ?>

    Je me retrouve avec ces erreurs :

    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp1-8\www\php\identification\VerifyLogin.php:11) in c:\program files\easyphp1-8\www\php\identification\VerifyLogin.php on line 12

    Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\php\identification\VerifyLogin.php:11) in c:\program files\easyphp1-8\www\php\identification\VerifyLogin.php on line 14

    Comment les corriger svp?? Merci encore pour votre aide!!!!

  12. #12
    Invité
    Invité(e)
    Par défaut
    c'etait deja ecrit plus haut mais je le redis, rien avant le start session;

    Ensuite j'ai une page VerifyLogin.php :

    <body>
    <?php
    session_start();
    if(!isset($_SESSION['login']) || ($_SESSION['userlevel'])!='Stagiaire') {
    header("Location: erreur_session.htm"); }
    ?>
    </body>

    devient :

    Ensuite j'ai une page VerifyLogin.php :

    <?php
    session_start();
    if(!isset($_SESSION['login']) || ($_SESSION['userlevel'])!='Stagiaire') {
    header("Location: erreur_session.htm"); }
    ?>

    pas de body

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Ok merci, c'était une erreur bête de ma part.
    Dernière petite question, quel est la différence entre :
    • header (Location:...),
    • die('<META HTTP-equiv="refresh" content=0;URL=".....">'),
    • include("...").
    Je ne sais jamais lequel utilisé, merci beaucoup!

  14. #14
    Membre éclairé Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Points : 846
    Points
    846
    Par défaut
    header('location: ...') redirige ta page sans même afficher un code html

    echo '<META HTTP-equiv="refresh" content=0;URL=".....">' fait la même chose que header et est pratique lorsque les entêtes sont déjà envoyés

    include("...") "appelle" (inclus) la page spécifié dans la page en cours.
    Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés

Discussions similaires

  1. Début avec PHP, besoin d'aide sur outils
    Par Enill dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 06/08/2011, 15h28
  2. [PHP] Besoin d'aide pour débutant
    Par franzy51 dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 12/08/2008, 13h52
  3. Réponses: 4
    Dernier message: 08/06/2006, 20h41
  4. [Word] PHP : besoin d'aide
    Par zamoto dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 01/05/2006, 17h32
  5. [Upload] Code php, besoin d'aide
    Par tilou dans le forum Langage
    Réponses: 3
    Dernier message: 08/02/2006, 13h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo