variable url de session transmise par curl ?

WRInaute accro
Bonjour
J'utilise sur mon site, des redirections par instructions header("Location: $url");
Ce sont, pour la partie de mon site qui nous occupe, des redirections 302, ces pages n'étant pas ni indexées ni référencées.

J'ai besoin d'installer pour ces pages ( les courses du lendemain/après-midi ), un mécanisme de sessions, que ce soit par cookie ou variable de session sur l'url, peu importe.

Je ne suis pas censé choisir le mode de session ( cookie ou variable de session ), car je ne veux pas me compliquer la vie à forcer les visiteurs à accepter les cookies.

Le problème, est que dans ce cas-là, une fois l'instruction init-session envoyée, il me sera impossible d'envoyer un header, car il y aura déjà eu un en tête http envoyé, à cause de cette instruction init-session().

Donc, je compte remplacer toutes mes instructions header de redirections, dans ces pages de courses du lendemain/après-midi, par des instruction curl de branchement aux nouvelles urls de redirections, ce qui est possible dans ce cas ( J'ai déjà essayé ).

Ma question est: A supposer que la session enregistrée le soit avec une variable de session dans l''url, type phpsessid ou autre, est-ce que cette variable sera automatiquement ajoutée par le serveur PHP dans l'en-tête http de l'url de redirection, ou non ? Ceci dans le cas où le branchement a lieu avec l'instruction curl-exec() et les instruction curl qui vont bien.

En d'autres termes, dois-je gérer le contenu de l'url redirigée moi-même, pour qu'elle contienne la variable d'identifiant de session, ou non ?

Merci beaucoup pour vos conseils avisés.

Jean-François Ortolo
 
WRInaute accro
Bonjour
J'ai mis en place,les sessions sur une partie qui sera privée, de mon site, une fois que mon site sera devenu payant, ce qui n'est pas demain la veille lol. ;)

Voilà la méthode que j'emploie, qui a malheureusement comme conséquence, que l'utilisateur doit se logguer à chaque fois qu'il passe d'une partie publique de mon site à sa partie privée, dans le cas où il refuse les cookies:

Au début de chaque script PHP appartenant à la partie privée ( ce sont des scripts différents, mais il est facile d'adapter en fonction des caractéristiques de votre site ), je place les trois instructions suivantes:

ini_set('session.use_trans_sid', 0);
ini_set('url_rewriter.tags', "");
session_start();


Et puis, pour que l'identificateur de session se transmette par les urls, je suis obligé de l'indiquer spécifiquement, donc, j'ajoute aux urls de redirections par liens ou instruction header, celà:

$url .= "&" . strip_tags(SID);

La constante SID contient l''instruction suivante, automatiquement alimentée par PHP quand une session est en cours, et que les cookies sont désactivés dans le navigateur:

PHPSESSID=$id_session();

Avec $id_session() est la valeur de l'identificateur de la session en cours.

Si les cookies sont activés dans le navigateur, la constante SID ne contient rien.

Pour les formulaires, il est nécessaire d'ajouter la variable PHPSESSID en hidden, éventuellement de cette façon:

echo "<input type=hidden id=\"PHPSESSID\" name=\"PHPSESSID\" value=\"" . $id_session() . "\">\n";

A ce moment-là, vous pouvez aussi bien utiliser des formulaires en mode "get". Le mode "post" devrait être possible aussi.

Donc, les deux premières instructions au début, indiquent qu'il ne faut pas que les SID soient transmises automatiquement dans les urls, sinon il risquerait d'y avoir deux affectations de PHPSESSID dans les urls.

Cette manière de faire est indépendante de la configuration de votre hébergeur, je l'ai testée sous Sivit mutualisé qui permet par défaut la transmission des SID dans les urls, ça marche même en mode Safe Mode à On, c'est tout dire...

Je vous donne cette méthode, comme mode d'emploi définitif des sessions, ce mode d'emploi est censé être valable quelle que soit la configuration de l'hébergeur de votre site.

Evidemment, si le nom de la variable identificateur de session est différent de PHPSESSID, vous devez changer PHPSESSID en ce nom de variable. Pour savoir quel est le nom de cette variable,vous pouvez installer un script ayant cette seul fonction dedans:

<?php
phpinfo();
?>

Vous regardez la rubrique "sessions", où ce nom de variable identificateur ( c'est appelé le nom de la session, où je ne sais plus trop quoi ), est indiqué.

Voilà, je suis très heureux d'avoir trouvé cette méthode définitive pour la mise en place des sessions, merci pour les réponses.

Jean-François Ortolo
 
WRInaute accro
J'ajoute...
Que ce n'est pas la peine pour les redirections, d'utiliser les fonctions curl, on peut très bien utiliser l'instruction header, avec de préférence, des redirections permanentes de type 301.

Voilà, actuellement j'ai installé le mécanisme de sessions sur la partie privée de mon site hébergé par Sivit, ça marche. Une variable dans $_SESSION['var'] est transmise à travers tous les scripts redirigés, ans aucun problème, et la valeur d'identificateur de session, aussi.

L'inconvénient que j'ai mentionné dans mon précédent message ci-dessus ( le visiteur qui doit se reauthentifier à chaque rentrée dans la partie privée à partir de la partie publique du site, si et seulement si son navigateur n'accepte pas les cookies ), cet inconvénient ne peut pas être surmonté, dans aucun cas de figure, si l'on utilise le mécanisme de sessions de PHP.

Bien à vous.

Jean-François Ortolo
 
Discussions similaires
Haut