2009-05-26 4 views
0

la question est vraiment dans le titre. J'ai un formulaire en ligne où, après une série d'étapes, l'utilisateur est envoyé à une passerelle de paiement sur un autre serveur, puis de nouveau après y avoir rempli leurs coordonnées (aucune carte ou information personnelle n'est envoyée, seulement des jetons cryptés , c'est le but).Puis-je compter sur la disponibilité de la session après la redirection vers et depuis un autre serveur?

Puis-je me fier aux données de session encore disponibles lorsqu'elles sont renvoyées (via POST?), Et si le devrais? Mon test semblerait indiquer oui, mais c'est la première fois que j'ai essayé de faire quelque chose comme ça. L'alternative est d'enregistrer la progression du formulaire avant la redirection & puis de le rétablir à leur retour. Serait-ce mieux & pourquoi si oui?

TIA :)

Répondre

0

Cela dépend du délai d'attente de la session et si oui ou non les accidents de apache/redémarrage. Si vous avez besoin d'un moyen de sécurité, restez les informations de session dans une base de données.

+0

Merci JD, ce fut mon général sentiment avant de poser la question. Je vais définitivement sauver la session. – da5id

0

Dépend. Il y a de fortes chances que vos sessions PHP soient traitées en utilisant un cookie stockant l'ID de session. Toutefois, si les cookies sont désactivés, alors (en fonction de la configuration/utilisation du SID) il peut être ajouté à la chaîne de requête. Dans le cas des cookies, cela ne devrait pas poser de problème - la session devrait continuer. Si les cookies sont désactivés, alors vous dépendez de votre fournisseur de passerelle de paiement pour fournir l'ID de session quand il retourne le client

éditer: juste pour ajouter, si le client n'est pas déconnecté (session terminée), stocker le formulaire les données dans les variables de session ne devraient pas poser de problème. En ce qui concerne la sécurité, vous pouvez vous assurer que la session est en quelque sorte restreinte à une ip (vérifiée sur chaque chargement de page pour s'assurer qu'elle correspond) pour s'assurer que la session n'est pas piratée par la passerelle de paiement ou d'autres sans scrupules man au milieu (seulement un problème si les cookies sont désactivés et la chaîne de requête inclut le PHPSESSID).

1

Oui, vous pouvez généralement compter sur ce fonctionnement.

Votre session expirera toujours de la manière habituelle. Par conséquent, tant que vous prévoyez que votre client passera moins de temps sur le site tiers que nécessaire pour que la session expire, cela devrait fonctionner. Je fais exactement ce que vous suggérez avec certains sites que je tiens, et il n'y a pas de problèmes sérieux. Je suppose que cela pourrait être plus compliqué si un grand pourcentage de vos clients s'attend à ce que les cookies soient désactivés, mais si vous traitez avec le public, ce n'est vraiment pas un problème. Toutefois, la plupart des passerelles de paiement vous permettent de leur transmettre des informations supplémentaires qu'elles vous enverront lorsqu'elles retourneront le client sur votre site. Même s'ils ne disposent pas d'une méthode intégrée, vous ajoutez des paramètres GET à l'URL qu'ils utilisent pour vous renvoyer le client. Cela vaut la peine d'ajouter un identifiant ou un numéro de commande ici, donc vous pouvez faire quelque chose même si la session est morte.

REMARQUE: Certains services de paiement ne renvoient pas réellement le client sur votre site à la fin de la transaction, mais appellent simplement votre serveur pour vous informer qu'un paiement particulier a été effectué. Dans cette situation, votre session ne sera pas intacte, car ce n'est pas le client qui en fait la demande auprès de votre serveur Web.

+0

Cheers rikh, bon conseil pour les passerelles de paiement en général. Ceci est une implémentation personnalisée cependant - la première fois qu'ils (et moi) l'ont fait de cette façon. Je pense que je serais raisonnablement sûr de compter sur la session, mais je pense que je vais le sauver quand même. – da5id

0

Si vous voulez vous assurer que la session est disponible, vous pouvez modifier le délai d'attente de cookie de session comme ceci:

session_set_cookie_params(604800); 
session_start(); 

Cela fera le cookie expire une semaine après sa création. La valeur par défaut est elle expire lorsque le navigateur est fermé.

Vous pouvez lire plus ici

http: // uk3.php.net/manual/en/function.session-set-cookie-params.php

Questions connexes