Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/05/2007, 09h04   #1
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 142
Points : 27
Points : 27
Par défaut Modifier l'id de session PHPSESSID

Bonjour,

Je souhaiterai modifier l'id de session, génerer automatiquer, par un n° Id que j'aurai moi mème géneré !

Savez vous comment faire ?

Je sais generer un id, je sais utiliser les session mais je ne sais pas modifier le n°id du cookie PHPSESSID.

voila la fonction que j'avai ecri ! pensant que fonctionnerait !

ma fonction:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function  regenerer_id(){  
 
	// génération d'un prefix aléatoire
    $randval = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $random = "";
 
    for ($i = 1; $i <= 3; $i++) {
        $random .= substr($randval, rand(0,(strlen($randval) - 1)), 1);
    }
 
	$newid = md5(uniqid($random).rand(100, 9990)); // géneration du nouvel id avec uniqid + prefix + N°aléatoire et cryptage MD5
 
	session_id($newid); // AJOUT du nouvel ID ! ne fonctionne pas !
 
	return $newid;
}
Le nouvel id ne s'ajoute pas a PHPSESSID mais cependant quand je fais un :
Code :
echo session_id($newid);
il m'affiche bien mon nouvel ID !!

Le problème vien de la Merci beaucoup
Stouille89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 09h43   #2
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
.....Pq veux-tu changer le numéro de session, pour finalement utiliser une fonction qui fera un ID quasi-identique à celui généré par le serveur ?

PS : qu'est ce qu'il fait, ton id_session ? Fonction perso ? Parce que à priori, elle existe pas....

Voila un extrait du manuel, sur une fonction "session_regenerate_id" :

Citation:
<?php
session_start();

$old_sessionid = session_id();

session_regenerate_id();

$new_sessionid = session_id();

echo "Ancienne session: $old_sessionid<br />";
echo "Nouvelle session: $new_sessionid<br />";

print_r($_SESSION);
?>
Peut-être intéressant pour toi :

http://fr2.php.net/manual/fr/functio...enerate-id.php

Y a d'autres exemples

EDIT :

Plutot ca :

Code :
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
 
<?php
 
function sessie_regenerate_id() {
    $randlen = 32;
    $randval = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $random = "";
    for ($i = 1; $i <= $randlen; $i++) {
        $random .= substr($randval, rand(0,(strlen($randval) - 1)), 1);
    }
    // use md5 value for id or remove capitals from string $randval
    // $random = md5($random);
    if (session_id($random)) {
        return true;
    } else {
        return false;
    }
}
if (!function_exists("session_regenerate_id")) {
    sessie_regenerate_id();
} else {
    session_regenerate_id();
}
 
?>
C'est dans le manuel, posté par quelqu'un....
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 11h23   #3
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 142
Points : 27
Points : 27
merci pour ta reponse

deja dsl je voulais mettre session_id();

j'ai deja vu tous ces exemples ou manuels. Je voudrais créer ma propre fonction car je voudrais etre sur que l'id est bien unique ! d'ou l'utilisation de la fonction uniqid() !

Je ne suis pas certain que la fonction session_regenerate_id(); certifie que l'id retourné est bien unique.
Stouille89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 11h25   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Et surtout appeler session_id($my_id) avant même session_start (ce que vous n'avez pas évoqué). Il va sans dire que session.auto_start doit être à Off (valeur recommandée).

Edit : PHP génère en temps normal un hash (MD5 ou SHA1 suivant la configuration) de la "date du jour" (fonction gettimeofday).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 11h30   #5
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 142
Points : 27
Points : 27
oui c'est ce que j'avais remarqué juste apres

bon en fait plus bas dans les commentaires de session_regenerate_id(); quelqu'un donne ce code :

Code :
1
2
3
4
5
6
7
8
function session_regenerate_id() {
            $tv = gettimeofday();
            $buf = sprintf("%.15s%ld%ld%0.8f", $_SERVER['REMOTE_ADDR'], $tv['sec'], $tv['usec'], php_combined_lcg() * 10);
            session_id(md5($buf));
            if (ini_get('session.use_cookies'))
                setcookie('PHPSESSID', session_id(), NULL, '/');
            return TRUE;
        }
donc c'est plus ou moin la fonction que j'étais en train de faire !
Stouille89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 11h35   #6
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
Citation:
Envoyé par Stouille89
merci pour ta reponse

deja dsl je voulais mettre session_id();

j'ai deja vu tous ces exemples ou manuels. Je voudrais créer ma propre fonction car je voudrais etre sur que l'id est bien unique ! d'ou l'utilisation de la fonction uniqid() !

Je ne suis pas certain que la fonction session_regenerate_id(); certifie que l'id retourné est bien unique.
Et bien il me semble que si....

Il me semble avoir lu quelque part que la probabilité de retour du même ID était telle qu'on pouvait considérer que l'ID était unique....

Mais bon, 2 précautions valent mieux qu'une !!!
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 14h56   #7
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 142
Points : 27
Points : 27
Ok je confirme que session_regenerate_id() fournit un id unique puisqu'il le genere en fonction du l'heure actuel en milisecondes et de l'adresse IP de l'utilisateur puis d'autres paramètres...

Hors le principe pour génerer soi mème un id unique est qu'il faut utiliser uniqid() (qui utilise d'heure courante en miliseconde) avec un préfixe aléatoire puis crypter le tout avec MD5.

Merci :-)
Stouille89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 15h23   #8
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
Voili voilou....

Fort instructif tout ceci

De rien, à plus

PS : il doit être interessant de faire soit-même ses ID de sessions lorsque des critères particuliers sont à prendre en compte, notamment le stockage en BDD, ou alors avoir ses propres règles de session....

Mais il va sans dire que je pense que les paramètres serveur suffisent et vont bien dans 98% des cas..... (Il faut pas réinventer la roue non plus.... )
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 15h40   #9
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 142
Points : 27
Points : 27
je ne réinvente pas la roue puisque le principe y est, je me contante juste de l'adapter ............ la roue
Stouille89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h37.


 
 
 
 
Partenaires

Hébergement Web