L'ID de session change de page en page [résolu] - PHP - Programmation
Marsh Posté le 21-08-2006 à 21:13:36
Bon, pour ceux que ça intéresse, souci résolu en passant par un .htaccess dans le répertoire en question, et en y mettant :
php_flag session.use_cookies off
php_flag session.use_trans_sid on
(et en supprimant les lignes ini_set dans le code bien sûr )
Marsh Posté le 22-08-2006 à 14:09:49
par curiosité, pourquoi tu veux absolument l'identifiant de session qui passe par url ?
Marsh Posté le 22-08-2006 à 16:27:06
L'appli en question c'est pour répondre à un besoin perso : en gros, un mini "wap"mail, consultable depuis un téléphone portable, pda, ...
Le souci, c'est que mon portable n'accepte pas les cookies , donc obligé de passer l'ID de session dans l'URL.
Marsh Posté le 21-08-2006 à 19:24:02
Bonjour,
je développe actuellement une petite appli PHP, dans laquelle j'utilise des sessions. Pour passer les sessions d'une page à une autre, je n'utilise pas les cookies (le client ne les accepte pas), mais le passage d'un ID de session dans l'URL.
Le php.ini contient session.use_cookies = 1, et je ne souhaite pas changer cette valeur.
Afin de forcer le passage de l'ID dans l'URL, j'ai
ini_set('session.use_cookies', false);
au début de chaque page.
La première page de l'appli est une page de login. En observant le formulaire, on voit que PHP a bien ajouté un champ :
<input type="hidden" name="PHPSESSID" value="cb60b2fbf293e600cd4a42866126db49" />
dans le formulaire, en prévision de la suite !
Enfin, après m'être connecté, je vois que les différents liens de la page ont bien été modifiés pour ajouter l'ID de session, mais celui-çi est différent de celui de la page de login !
Au début de ma page de login :
<?php
ini_set('session.use_cookies', false);
session_start();
unset($_SESSION['mail']);
unset($_SESSION['messages']);
?>
La seconde page :
<?php
ini_set('session.use_cookies', false);
session_start();
if(!isset($_SESSION['mail']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$server='pop.free.fr';
$port=DEFAULT_PORT;
$mail = new wapmail();
$mail->setServer($server, $port);
$mail->setLogin($username, $password);
$_SESSION['mail'] = $mail;
if(!$mail->connect())
die("Error logging in" );
}
else
$mail = $_SESSION['mail'];
?>
Est-ce qu'il faut rappeler obligatoirement set_ini à chaque nouvelle page ?
Comment dire à PHP lors de l'arrivée sur la seconde page d'utiliser l'id de session envoyé par la première page ? La doc précise que session_start() est capable de récupérer l'ID reçu par POST, mais ça n'a pas l'air de marcher des masses
Message édité par freds45 le 21-08-2006 à 21:13:51
---------------
Filmstory : gardez trace des films que vous avez vu ! :D