Session PHP perdue après une redirection

comment résoudre le problème de perdre une session après une redirection en PHP?

récemment, j'ai rencontré un problème très fréquent de perte de session après redirection. Et après avoir cherché à travers ce site je ne peux toujours pas trouver de solution (bien que ce est venu le plus proche).

mise à Jour

j'ai trouvé la réponse et je pensais la poster ici pour aider quiconque éprouve le même problème.

103
demandé sur Community 0000-00-00 00:00:00

1 réponses

tout D'abord, effectuer ces vérifications habituelles:

  1. assurez-vous que session_start(); est appelé avant que n'importe quelles sessions sont appelées. Donc un pari sûr serait de le mettre au début de votre page, immédiatement après la déclaration d'ouverture <?php avant toute autre chose. Assurez-vous également qu'il n'y a pas d'espaces/onglets avant l'ouverture de la déclaration <?php .
  2. après la redirection header , terminer le script courant en utilisant exit(); (D'autres ont également suggéré session_write_close(); et session_regenerate_id(true) , vous pouvez essayer ceux-ci aussi, mais je voudrais utiliser exit(); )
  3. assurez-vous que les cookies sont activés dans le navigateur que vous utilisez pour faire des tests.
  4. S'assurer que register_globals est désactivé, vous pouvez le vérifier sur le fichier php.ini et aussi en utilisant phpinfo() . Se référer à ce pour savoir comment l'éteindre.
  5. assurez-vous de ne pas supprimer ou vide la séance
  6. assurez-vous que la clé de votre tableau $_SESSION n'est écrasée nulle part
  7. assurez-vous que vous redirigez vers le même domaine. Ainsi, la redirection d'un www.yourdomain.com vers yourdomain.com ne fait pas avancer la session.
  8. assurez-vous que votre extension de fichier est .php (il arrive!)

maintenant, ce sont les erreurs les plus courantes, mais s'ils n'ont pas fait le tour, le le problème est très probablement lié à votre société d'hébergement. Si tout fonctionne sur localhost mais pas sur votre serveur distant/testing, alors c'est très probablement le coupable. Vérifiez donc la base de connaissances de votre hébergeur (essayez aussi leurs forums, etc.). Pour les entreprises comme FatCow et iPage, ils exigent que vous spécifiez session_save_path . Comme ceci:

session_save_path('"your home directory path"/cgi-bin/tmp');
session_start();

(remplacer" votre chemin de répertoire personnel " par votre chemin de répertoire personnel. C'est généralement à l'intérieur de votre panneau de configuration (ou équivalent), mais vous pouvez aussi créer un fichier test.php dans votre répertoire racine et taper:

<?php echo $_SERVER['SCRIPT_FILENAME']; ?>

test du bit avant'.php ' est le chemin de votre répertoire personnel. Et bien sûr, assurez-vous que le dossier existe réellement dans votre répertoire racine. (Certains programmes ne téléchargent pas de dossiers vides lors de la synchronisation)

164
répondu dayuloli 2017-12-17 14:47:59