Je crée un jeu en ligne avec une page de connexion. Ceci amène l'utilisateur à Paypal s'il veut convertir en une version "pro" du jeu. Le problème que je rencontre est que la session semble être en rupture de retour de Paypal à ma page de paiement_successful.php. Les variables de session sont toutes vides.PHP - Perdre la session après la redirection paypal
J'ai commencé par donner à toutes les pages appropriées une ligne session_start()
. L'ID de session (extrait de la console dans Chrome) est le même lorsque la session démarre et revient à payment_successful.php. Donc, cela "semble" être constant. Après beaucoup de bricolage avec des idées différentes, j'ai essayé d'ajouter manuellement un ID de session.
Tant la page Page Connexion et Payment_successful:
session_id('my_id');
session_start();
Cela fonctionne comme un charme et retourne toutes mes variables de session parfaitement. Cependant, je suppose que c'est une idée incroyablement mauvaise d'avoir un identifiant de session fixe (désolé, j'ai oublié de mentionner que je suis nouveau dans tout cela).
Je changé la page de connexion pour créer mon propre identifiant de session, en espérant que cela simplement prendre simplement la nouvelle valeur à la place de la valeur fixe:
Connexion Page d'
add_seshid();
session_start();
// session_set_cookie_params (lifetime,'/','.mydomain.com',false);
function add_seshid() {
$sesh_salt1 = "*s!$e";
$sesh_salt2 = "$6#£";
$sesh_date = date("mYhds");
$sesh_pass = "lambchops".$sesh_date;
$sesh_token = hash('ripemd128',"$sesh_salt1$sesh_pass$sesh_salt2");
session_id($sesh_token);
}
Payment_successful Page:
session_id($sesh_token);
session_start();
Bien qu'il ne sortie un identifiant de session (par exemple. 986a25f1d1fdabc62837def39b485c6), et enjambe juste en session, il ne revient pas trop d'une session variables La ligne session_set_cookie_params que j'ai bricolée, en utilisant mon propre nom de domaine, pour voir s'il y avait un problème avec le changement de nom de domaine, mais cela n'a fait aucune différence. En outre, tous les mots de passe, sels, etc., ont été modifiés pour les besoins de ce poste au cas où quelqu'un avait envie de commenter !! En espérant que quelqu'un pourrait me diriger dans la bonne direction.
Un grand merci,
Dan.
Salut, oui c'est le même PHPSESSID depuis le début jusqu'à la fin, sauf pour les pages Paypal qui ont leurs propres identifiants. J'ai déplacé la session_id en dessous du session_start, mais il n'y a aucune différence avec le retour vide. Mon lien vers Paypal est: \t header ('emplacement: https: //www.sandbox.paypal.com/cgi-bin/webscr'.$querystring); \t exit(); –
Avez-vous essayé de tester votre code contre quelque chose qui n'est pas paypal? Disons un formulaire simple qui soumet deux champs de saisie à votre page PHP. PHP démarre les sessions et définit les variables de session lues depuis $ _POST. Ensuite, vous cliquez sur le lien vers le site qui vous mènera à un autre site (différent ip/fqdn). Sur cet autre site - mettre un lien vers le site original du fichier php différent qui pourrait également démarrer la session et afficher simplement les vars de session. J'ai travaillé avec paypal sandbox avant et je n'ai jamais eu ce comportement que vous avez décrit. –