case se souvenir de moi

timpisteur
Invité n'ayant pas de compte PHPfrance

20 mai 2006, 23:26

bonjour à tous, j'espere que vous aller pouvoir m'aider !!

sur ma page index.php j'ai les éléments suivants :

un formulaire qui renvoit vers index.php et si le login et le pass sont dans la base de donnée et que l'utilisateur a coché la case "se souvenir de moi" alors il créer un cookie comme ça :

Code : Tout sélectionner

if($_POST['souvenir']){ $timestamp_expire = time() + 365*24*3600; setcookie('login', $_POST['login'], timestamp_expire); setcookie('pass', $_POST['pass'], $timestamp_expire); }
et en fait le truc que j'arrive pas à faire c'est que lorsque l'utilisateur ferme la page et la réouvre, le cookie est reconnu et l'utilisateur est logué et renvoyé sur la page membre.php

j'ai voulu essayer avec un truc comme ça :

Code : Tout sélectionner

<? if (isset($_COOKIE['login']) && isset($_COOKIE['pass'])) { echo "<script>document.form.submit();</script>"; } ?>
form est le nom de mon formulaire mais je ne sais pas comment lui passer les variables login et pass pour qu'il se logue automatiquement.

Je ne sais pas si c'est comme ça qu'il faut faire, si ça créer des failles de sécurité ou pas, donc j'attends vos réponses avec impatience !!!

merci d'avance

Eléphant du PHP | 82 Messages

20 mai 2006, 23:36

Pourquoi repasser par le formulaire ? En l'utilisant de nouveau, tu vas repasser par cette partie de ton code :

Code : Tout sélectionner

if($_POST['souvenir']){ $timestamp_expire = time() + 365*24*3600; setcookie('login', $_POST['login'], timestamp_expire); setcookie('pass', $_POST['pass'], $timestamp_expire); }
Ce qui parait pas utile vu que justement tu les as gardé en cookie pour éviter d'avoir à se logger de nouveau.

Donc je redirigerais à ta place :
<?
if (isset($_COOKIE['login']) && isset($_COOKIE['pass']))
{
//
// Redirection vers la page member.php
//
}
?>


Apres pour la redirection comme tu preferes (cf : http://www.phpfrance.com/tutoriaux/inde ... edirection).
Sébastien.

timpisteur
Invité n'ayant pas de compte PHPfrance

21 mai 2006, 00:40

je galère pas mal avec tout ça en fait,

j'ai stocké le cookie ça c'est bon ça marche bien.
maintenant je n'arrive pas à faire en sorte que lorsque la personne a stocké un cookie sur son ordi, elle n'ai pas a retapé son login et son mot de passe et qu'elle aille directement sur la page membre.php, qui est elle même protéger de la façon suivante :

Code : Tout sélectionner

<?php session_start(); if (!isset($_SESSION['login'])) { header ('Location: index.php'); exit(); } ?>
quand j'ai stocké un cookie et que je vais directement sur l'url monsite.com/membre.php ça me ramene toujours vers index.php avec le formulaire.

Je ne sais pas comment je dois modifier le bout de code que j'ai posté pour l'adapter aux cookies, en clair je suis totalement perdu :shock:

Est ce qu'il existe sur le net un tutorial pour le "se souvenir de moi" que je pourrais suivre ?

Merci d'avance pour toute aide !

Eléphant du PHP | 82 Messages

21 mai 2006, 11:14

Lorsque tu envoies les données du formulaire vers ca :
if($_POST['souvenir']){
   $timestamp_expire = time() + 365*24*3600;
   setcookie('login', $_POST['login'], $timestamp_expire);
   setcookie('pass', $_POST['pass'], $timestamp_expire);
}

Ca te définit :
$_COOKIE['login'] = $_POST['login'];
$_COOKIE['pass'] = $_POST['pass'];

Par contre dans ce que tu viens de donner tu fais appelles à une donnée de session que tu ne sembles pas avoir renseigné (cookie != session).

Ce qui peut donner avec les cookies :
<?php
session_start();
if (!isset($_COOKIE['login']) && !isset($_COOKIE['pass'])) {
    header ('Location: index.php');
    exit();
}
?>
Sébastien.

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

21 mai 2006, 11:26

Personnellement j'en resterais à la premiere proposition de s3b54sk8 en renseignant simplement la session avec les informations contenues dans les cookies s'ils sont trouvés :
<? 
session_start();
if (isset($_COOKIE['login']) && isset($_COOKIE['pass'])) 
{ 
// mettre le login en session
$_SESSION['login'] = $_COOKIE['login'];
// Redirection vers la page member.php 
header(...);
} 
?> 
Tes pages se basant très probablement sur la présence du login en session, la présence du cookie ne suffit pas... :)

Eléphant du PHP | 82 Messages

21 mai 2006, 11:40

Merci au passage Ryle, tu viens de répondre à une question que je me posais concernant la redirection avec header(). :P
Sébastien.