PHP les variables de session pas l'économie entre les pages
Je sais que cela peut être une double question, mais je n'arrive pas à trouver une réponse à mon problème.
J'ai 3 fichiers PHP. signin.php obtient les utilisateurs de données et les transmet à signin_auth.php.
signin.php puis redirige vers mytoolkit.php après la réussite de la connexion.
signin_auth.php utilise le code suivant à la fin du script PHP:
<?
session_start();
$_SESSION['sessionID'] = $id;
$_SESSION['time'] = time();
header ("Location: mytoolkit.php");
exit;
?>
Ensuite, l'utilisateur est redirigé vers mytoolkit.php qui utilise ce code:
<?
session_start();
if (!isset($_SESSION['sessionID'])) {
header('Location: signin.php?message=4');
exit;
}
$inactive = 5400;
$session_life = time() - $_SESSION['time'];
if ($session_life > $inactive) {
session_destroy();
header("Location: signin.php?message=5");
exit;
}
?>
Les variables de session ne sont pas de stocker et de mytoolkit.php me tient redirigeant vers signin.le php?message=4
Probablement une erreur stupide. Je viens de le regarder trop longtemps.
Mise à JOUR --
Donc, j'ai un couple de serveurs. À la fois sur iPage. J'ai déplacé le dossier entier sur un differnent serveur (abc.com/toolkit est maintenant copié à xyz.com/toolkit) L'application fonctionne parfaitement sur xyz.com... il en est le premier serveur qui me probelms.
Là tous les deux sur la même compagnie d'hébergement. Je ne suis pas sûr de quoi faire.
Vous dites à la fin de signe auth il n'y a que le code de session, êtes-vous de la sortie html ou même une ligne vide quelque part avant?
j'allais demander la même chose; le code à la fin de la page et
session_start()
ne peux pas aller ensemble, avec des espaces prev.les espaces blancs à l'intérieur de php n'est pas un problème avec la fonction session_start, aussi longtemps que les espaces blancs ne sont pas les sorties, il n'est pas un problème.
Je ne suis pas sortie tout en html signing_auth.php est strictement php.
OriginalL'auteur Sean McCully | 2013-05-08
Vous devez vous connecter pour publier un commentaire.
J'ai enfin compris... C'était un problème avec mon
php.ini
fichier sur iPage du serveur. Pour une raison quelconque, ils en avaient mis àOù il devrait être ma racine du document. Ce n'est pas la première fois qu'ils ont loupé des trucs.
session.save_path
devrait être par défaut""
sur mon ordinateur local (php 5.3),
session.save_path = "C:\SERVER\tmp"
, mais sur mon hébergeur c'était le même que Sean:session.save_path = "/var/php_sessions"
... ... de la modifier à""
travaillé.C'EST DE LA DÉSINFORMATION! Vous ne voulez PAS stocker vos sessions à la racine du document. Il va exposer à tout le monde, les séances de public, à moins que les autorisations de fichier sont de droite.
OriginalL'auteur Sean McCully
si vous n'avez pas détruire session avec
session_destroy();
avantif (!isset($_SESSION['sessionID'])) {
l'instruction, puis une raison pourrait être$id
a la valeur null.session_destroy();
n'est pas une bonne idée, sauf si vous savez ce que vous faites.OriginalL'auteur Amir
Je pense que c'est votre problème
OriginalL'auteur CodeBird
Si vous utilisez un
header('location: example.com')
dans votre script, il est l'envoi d'une redirection 302 vers votre navigateur. Maintenant, ce n'est pas permanente, mais certains navigateur cache encore ce résultat. Juste googleDonc il se peut très bien que votre navigateur est de rediriger votre demande avant même qu'il n'accède à votre code. Essayez de changer
signin_auth.php
àheader ("Location: mytoolkit.php?t=".time());
, puis d'appeler la page avec le paramètre aléatoire pour éviter que la première page à partir de la mise en cache. Par exemple:/signin_auth.php?t=random
OriginalL'auteur Hugo Delsing
Je courais httpd comme un autre utilisateur (pas d'apache). Sur la vérification de /etc/php.ini, j'ai trouvé que "d'annuaire de session doit être détenue par le propriétaire du processus". Donc dans /etc/httpd/conf.d/php.conf j'ai changé le suivant:
à
et rechargé httpd.
Ne sais pas si c'était une meilleure idée de changer le propriétaire du répertoire /var/lib/php [httpduser]
OriginalL'auteur blokeish