58 votes

PHP les données de Session ne sont pas sauvés

J'ai un de ces "je jure que je n'ai pas touché le serveur" les situations. Honnêtement, je n'ai pas toucher aux scripts php. Le problème que j'ai c'est que php les données ne sont pas enregistrées à travers les différentes pages ou une page se rafraîchit. Je sais qu'une nouvelle session est créée correctement parce que je peux définir une variable de session (par exemple $_SESSION['foo'] = "toto" et l'imprimer retour sur la même page de l'amende juste. Mais lorsque j'essaie d'utiliser la même variable sur une autre page, il n'est pas défini! Est-ce là toutes les fonctions de php ou de l'information que je peux utiliser sur mon serveur pour voir ce qui se passe?

Voici un exemple de script qui ne fonctionne pas sur mon hôtes de serveur à partir de maintenant:

<?php
session_start();
if(isset($_SESSION['views']))
    $_SESSION['views'] = $_SESSION['views']+ 1;
else
    $_SESSION['views'] = 1;

echo "views = ". $_SESSION['views'];
echo '<p><a href="page1.php">Refresh</a></p>';
?>

Les "vues" de la variable n'est jamais incrémenté après avoir fait un rafraichissement de la page. Je pense que c'est un problème de leur côté, mais je voulais m'assurer que je ne suis pas un idiot de première.

Voici le phpinfo() pour mes hôtes de serveur (PHP Version 4.4.7): alt text

42voto

Crackerjack Points 1191

Merci pour toutes les infos utiles. Il s'avère que mon hôte a changé les serveurs et a commencé à utiliser une autre session d'enregistrer le chemin d'accès autre que /var/php_sessions qui n'a pas cessé d'exister. Une solution aurait été de déclarer ini_set(' session.save_path','SOME WRITABLE PATH'); dans tous mes fichiers de script, mais cela aurait été une douleur. J'ai parlé avec l'hôte et ils de définir explicitement le chemin de session à un véritable chemin d'accès qui n'existe pas. Espérons que cela aide quelqu'un ayant de chemin de session ennuis.

13voto

paul Points 51

Assurez-vous que vous n'êtes pas de mélange https:// par http://. Les variables de Session ne sont pas des flux entre la sécurité et l'insécurité des séances.

9voto

Shane N Points 513

Eu même problème - ce qui s'est passé pour moi, c'est notre admin serveur changé la session.cookie_secure booléen, ce qui signifie que les cookies ne seront envoyées via une connexion sécurisée. Depuis le cookie n'a pas été trouvé, php a été la création d'une nouvelle session à chaque fois, ainsi, les variables de session n'étaient pas vu.

8voto

vIceBerg Points 2158

utiliser phpinfo() et de vérifier l' session.* paramètres.

Peut-être que l'informations est forcé d'être stockées dans les cookies de votre navigateur et ne pas accepter les cookies, quelque chose comme ça.

Vérification que le premier et revenir avec les résultats.

Vous pouvez également faire une print\_r($\_SESSION); d'avoir un dump de cette variable et de voir le contenu....

Concernant votre phpinfoI(), ne l' session.save_path est valide? Est-ce que votre serveur a accès en écriture sur ce répertoire?

Espérons que cette aide.

vIceBerg

5voto

DGM Points 14007

Vérifiez pour voir si la session enregistrer le chemin d'accès est accessible en écriture par le serveur web.

Assurez-vous d'avoir les cookies activés.. (j'ai oublié quand je les désactiver pour tester quelque chose)

Utiliser firefox avec l'extension firebug pour voir si le cookie est créé et transmis.

Et sur un sans rapport avec la note, commencer à chercher des php5, parce que php 4.4.9 est le dernier de la php4 série.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X