2009-09-11 7 views
0

Je traite du squelette d'un ancien site Web qui utilise l'authentification http pour que les utilisateurs puissent accéder aux données d'adhésion. Le bouton de contenu d'accès est un lien vers une page index.html ce qui suit:PHP - Comment démarrer une session après l'authentification HTTP

<meta http-equiv="REFRESH" content="0; url=http://www.example.com/something.php"> 

Je voudrais changer cela à une page index.php qui débuterait une session puis rediriger avec en-tête();

Y at-il un php équivalent au contenu = "0;? Dans ce cas

Je suppose que je pouvais utiliser

<?php 
session_start(); 
$_SESSION['loggedIn']=true; 
?> 

<meta http-equiv="REFRESH" content="0; url=http://www.example.com/something.php"> 

mais est-il quelque chose de plus élégant

Répondre

1
<?php 
    session_start(); 
    $_SESSION['loggedIn']=true; 
    header("Location: http://www.example.com/something.php"); 
?> 

? Vous ne savez pas si les sessions fonctionneront avec une redirection d'en-tête (puisque la page ne se chargera pas complètement, donc je ne suis pas sûr si le cookie de la session serait sauvegardé), mais vous pouvez l'essayer:

Si elle ne sauve pas le cookie, vous pourrez peut-être contourner ce en incluant l'ID de session dans l'URL comme var GET explicitement, comme ceci:

<?php 
    session_start(); 
    $_SESSION['loggedIn']=true; 
    header("Location: http://www.example.com/something.php?".htmlspecialchars(SID)); 
?> 
+1

Oui, il fonctionne de cette façon. Et il n'est pas nécessaire de spécifier l'URL complète, en fait il vaut mieux ne pas le faire car les sessions sont spécifiques au domaine et vous n'évaluez pas comment l'utilisateur a atteint cette page (www.exemple.com et exemple.com peuvent être considérés comme différents domaines) – Havenard