2009-07-14 8 views
3

Je suis en programmation avec PHP.Comment puis-je conserver les informations de session lors de la redirection d'un sous-domaine vers un autre?

Je veux rediriger ht tps: //abc.example.com/blah1/blah2 HTT ps: // w ww.example.com/blah1/blah2 mais je ne veux pas pour rediriger htt ps: //abc.example.com rediriger vers ht tps: // ww w.example.com

Est-il possible, tout en préservant les informations de session sur les redirections?

Merci.

+0

J'espère avoir modifié la question correctement. –

+0

Merci. C'est ce que je veux. Je ne peux pas poster un lien en tant que nouveau venu -_- –

Répondre

3

Vous pouvez continuer à utiliser les redirections telles que vous les avez maintenant, mais réglez votre session.cookie_domain pour utiliser le domaine de niveau supérieur (par exemple, example.com). Vous pouvez le faire en utilisant session_set_cookie_params ou en réglant session.cookie_domain dans votre fichier php.ini (ou dans un fichier .htaccess après la directive php_value). Cela devrait permettre à vos informations de session de persister dans tous les sous-domaines de votre site.

+0

que se passe-t-il si je n'utilise qu'une session sans cookie? –

+0

Les sessions en PHP utilisent par défaut des cookies pour stocker l'identifiant de session *. Ensuite, lorsque le visiteur charge une page, PHP utilise cet ID pour récupérer les données associées à cette session. Ainsi, lorsque vous créez une session, vous créez également un cookie, bien que les seules données qu'il contient soient l'identifiant de session. Il est possible d'utiliser des sessions sans cookie, mais il transmet l'identificateur de session en tant que paramètre de requête présentant de graves failles de sécurité. – tj111

-2

Utilisez une redirection JavaScript.

+0

Que se passe-t-il lorsqu'un utilisateur a Javascript désactivé? – MitMaro

1

Si vous utilisez un cookie pour l'ID de session, vous devez définir le cookie pour un domaine commun. Si vous utilisez www.example.com et foobar.example.com, vous devez définir le cookie pour example.com de l'avoir valable pour les deux www.example.com et foobar.example.com.

0

Si vous pouvez utiliser Apaches Rediriger vous pouvez essayer

RedirectMatch /(.+) https://www.domain.com/$1 

avec PHP, il serait

<?php 


    if ($_SERVER['REQUEST_URI'] != "/") { 
     header("Location: ".$_SERVER['REQUEST_URI']); 
     exit; 
    } 

?> 

A propos de la session étant invalidée, comme le dit Gumbo, ont le cookie émis pour le nom de domaine principal au lieu des spécifiques.

+0

'REQUEST_URI' est * jamais * vide. Cela commence toujours par au moins '/'. – Gumbo

+0

Etes-vous certain de cela? J'ai modifié en conséquence. –

+0

Et aussi il semble que j'ai mal compris la question. –

0

Je dirais que vous pouvez rediriger en postant (POST) votre sessionid vers un nouveau domaine et stocker vos données de session dans mysql avec votre propre gestionnaire de session.

Questions connexes