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 ou cookies


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de simotaqi
    Inscrit en
    Février 2010
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 144
    Points : 117
    Points
    117
    Par défaut Sessions ou cookies
    bonjour tout le monde
    j'ai un grand prob, j'ai mis dans mon site un login pour entrer username et password , et ca marche bien dans mon pc, de facon que lorsqu'un utilisateur entre son username et password, un cookie contenant le username et password encrypté va être cree dans le dossier des fichiers temporaires.pour memoriser l'utilisateur pour la prochaine visite.(pour ne pas retaper le motde passe).

    pourtant ca ne marche pas dans un autre ordinateur..

    1-est ce que le probleme est le bloquage des cookies par certains nav
    si c'est le cas, est ce qu'il y a un autre choix autre que les cookies (comme les sessions), et comment l'utiliser?

    2-s'il ya un probleme dans mon code php , je serai pret a l'envoyer

    et merci d'avance
    Tous les chemins menent a la connaissance. Lequel est le plus court?
    de meme , Tous les chemins menent a l'ignorance, Lequel est le plus long?


    -------- ^ ^----------
    ------SMOoOTQ-------
    ---------( - )---------

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 127
    Points : 179
    Points
    179
    Par défaut
    Bonjour,


    Oui il y a un problème avec le code php, localement il a accès au disque dur de votre machine mais pas depuis un hébergement sur internet.
    Vous pouvez demander au navigateur du visiteur de stocker un cookies mais ce n'est pas dans les fichiers temporaires.

    Bon dev

  3. #3
    Membre régulier Avatar de simotaqi
    Inscrit en
    Février 2010
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 144
    Points : 117
    Points
    117
    Par défaut
    merci pour votre reponse ,
    voici le code php de mon fichier login.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <?php
    $dns='mysql:host=localhost;dbname=nombd;';
    try{
    $dbh=new PDO($dns,'user','password');
    $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    $cmd='select * from membre where Username="'.$_POST['username'].'" and Password="'.$_POST['password'].'"';
    foreach ($dbh->query($cmd) as $row){
            if (isset($row)){
                             if (isset($_POST['keeplog'])){
     
    				      header('location:../accueil');
                                          setcookie('username',$_POST['username'],time()+3600,'/','www.bahamman.com');
                                          setcookie('password',md5($_POST['password']),time()+3600,'/','www.bahamman.com');       
                             }
                             else{
    			              header('location:../accueil');
                                          setcookie('username',$_POST['username'],false,'/','www.bahamman.com');
                                          setcookie('password',md5($_POST['password']),false,'/','www.bahamman.com');
                             }
     
          }
    }
    }
    catch(PDOException $e){
    echo $e->getMessage();
    }
     
    ?>
    <?php
    if (isset($row)==false){
    header('location:../user/erreur.php');
    }
    ?>
    Tous les chemins menent a la connaissance. Lequel est le plus court?
    de meme , Tous les chemins menent a l'ignorance, Lequel est le plus long?


    -------- ^ ^----------
    ------SMOoOTQ-------
    ---------( - )---------

  4. #4
    Membre régulier Avatar de simotaqi
    Inscrit en
    Février 2010
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 144
    Points : 117
    Points
    117
    Par défaut problem avec cookie
    je remarque que le code marche bien sur certaines machines autres que mon pc personnel,

    ben, il marche bien sur le net avec certaines machine mais pas avec les autres
    Tous les chemins menent a la connaissance. Lequel est le plus court?
    de meme , Tous les chemins menent a l'ignorance, Lequel est le plus long?


    -------- ^ ^----------
    ------SMOoOTQ-------
    ---------( - )---------

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 127
    Points : 179
    Points
    179
    Par défaut
    Et en faisant le
    header(location ...)
    après les setcookies ?

  6. #6
    Membre régulier Avatar de simotaqi
    Inscrit en
    Février 2010
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 144
    Points : 117
    Points
    117
    Par défaut
    tu peux entrer dans le site web

    www.bahamman.com

    et entrer le username=a et password=a dans les champs a gauche

    et envoie moi ta remarque svp

    oui ca marche bien malgré header (location :../) aprés les cookies car ce cas et dans une condition if

    parceque header('location :..user/erreur.php') ne s'execute que si le mot de passe et le username sont erronés , alors pas de setcookie
    Tous les chemins menent a la connaissance. Lequel est le plus court?
    de meme , Tous les chemins menent a l'ignorance, Lequel est le plus long?


    -------- ^ ^----------
    ------SMOoOTQ-------
    ---------( - )---------

  7. #7
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Si il s'agit d'une identification d'un user, donc de le conserver en mémoire tout le long de sa navigation, les sessions sont à mon avis bien mieux adaptés que les cookies, pour la simple raison que les sessions sont cotés serveur (hébergement), et non pas coté client (navigateur), ce qui est théoriquement plus sécurisé.

    En reprenant le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (isset($_POST['keeplog'])) {
    	$_SESSION['user_id'] = $user_id;
    	header('location:../accueil');
    }
    header('location:../accueil');
    Il faudra tout de même démarrer la session avant.
    Ensuite, dans la page d'accueil, une vérification de l'existence de la variable de session $_SESSION['user_id'] permettra de savoir qu'on a affaire à un user identifié.
    On peu lancer par la suite une requête pour récupérer tout ou en partie les informations de ce user grâce à son identifiant user_id qui est unique (cela va de soit).

    Si le but est d'éviter de retaper un login/passe, et bien normalement tous les navigateurs permettent de mémoriser des login/pass, pourquoi s'embêter à le faire ?


    Petite remarque en passant.
    Je vois que tu fais une boucle foreach() alors que dans celle ci il y a un header(), une redirection.
    Ce n'est pas logique, cette boucle ne pourra jamais passer à l'élément suivant à cause du header. (si plusieurs éléments il y a).
    De plus, cela sous entends que la requête retournerait plusieurs lignes. Là aussi ce n'est théoriquement pas possible, car un couple username/password se doit être unique, sinon ça va coincer.
    Soit la requête retourne rien, soit 1 seule ligne.
    Une boucle ici est théoriquement inutile, sinon il faut modifier quelque chose.

    Par contre, si la boucle (le $row) a pour but de retourner chaque valeur de chaque champ de la Bdd, et de la seule ligne qu'elle retournera, alors le header devra être placé après la boucle, sinon il va manquer des infos.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Discussions similaires

  1. [Débutant]infos ds session sans cookie ? url rewriting ?
    Par Satanas_et_diabolo dans le forum ASP
    Réponses: 8
    Dernier message: 10/10/2006, 17h13
  2. [Struts][Tomcat] Session sans cookies
    Par tuxor dans le forum Struts 1
    Réponses: 2
    Dernier message: 13/01/2006, 12h06
  3. Sessions et Cookies sur C++ ?
    Par nabmoah dans le forum C++
    Réponses: 1
    Dernier message: 28/12/2005, 13h06
  4. [Sécurité] Session et Cookies
    Par amika dans le forum Langage
    Réponses: 3
    Dernier message: 28/09/2005, 22h14
  5. [debutant][jsp]Passage d'entier avec une session sans cookie
    Par o151181 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 04/02/2004, 18h22

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