rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[PHP] cURL et session

smellems, le vendredi 27 octobre 2006 à 21:04:37
Bonjour à tous...

j'ai un problème avec mon site web, ou une fonction en particulier...

j'explique...

j'utilise aitsafe pour gérer les paniers d'achats et la collect de donnée des clients (carte de crédit, tel, ...). mais au lieu de POSTer mes donnée directement sur ce site je l'envoie à un script que j'ai écrit (en php) qui vérifie que l'item voulu est disponible. si c'est OK le scipt refait alors le POST sur atisafe et affiche la page résulante.

comme ceci
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://ww7.aitsafe.com/...");
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$page = curl_exec($curl);
curl_close($curl);
print($page);

le problème est que comme c'est mon serveur qui fait le POST et pas le client, aitsafe ne peut pas savoir quel client fait la commande.

en gros, j'ai un seul panier pour tout le monde...

le site: http://www.mamankangourou.com/boutique1.php

et le script dont je parle est chkqte.php qui est appeler lorsque on ajoute un item au panier

il est possible d'ajouter un item à partir d'un ordinateur et d'en ajouter un autre à partir d'un autre poste.

je sais pas... si quelqu'un a une idée ou commentaire je veux savoir parce que je ne vois pas comment régler le problème. j'aime bien (et mon patron aussi) le fait que je puisse vérifier si l'item est en stock avant de compléter la transaction...

merci de votre aide
Répondre à smellems  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
xbb, le lundi 30 octobre 2006 à 11:54:06
Normalement si le script de vérification de disponibilité refait à l'identique le POST, il n'y a pas de raison que aitsafe voie la différence (lui il reçoit une liste de variables, c'est tout).

C'est dans chkqte.php qu'il doit y avoir un problème : le script ne reproduit peut-être pas à l'identique l'ensemble des variables POST qu'il reçoit...
Répondre à xbb

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
smellems, le mardi 31 octobre 2006 à 21:19:31
oui oui...

j'ai fais des tests et aitsafe crée un cookie sur l'ordinateur du client pour savoir qui est qui (sessions). Mais moi, puisque c'est le chkqte.php qui fait le POST, c'est comme si cest toujoiurs le serveur mamankangourou.com qui fait le POST et donc un seul panier pour tous le monde.

mais en cherchant je crois que j'ai trouvé... avec curl c'est possible de simuler le passage d'un cookie: envoyer un cookie avec le POST et recevoir le cookie. ensuite je pourrais juste le mettre sur le client...

je vais essayer de faire ça demain...
Répondre à smellems

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
LoLoBeF, le jeudi 10 mai 2007 à 10:46:42
Fait un <input type="hidden"> contenant l'id de l'internaute sur ta 1ère form et que tu repassera avec CURL.
Comme ça, tu peux identifier le visiteur qui a fait la requête dans le script de traitement.
Répondre à LoLoBeF

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
druide, le mercredi 21 novembre 2007 à 12:27:22
Salut,

Bon, je sais pas si tu as toujours ce problème, mais voici la solution que j'utilise : en fait il faut rajouter une option à CURL pour lui dire de passer l'identifiant de session de l'internaute en tant que cookie :

session_start(); // ICI on active les variables de session (si ce n'est pas déjà fait)
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://ww7.aitsafe.com/...");
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_COOKIE, session_name() . '=' . session_id()); // ICI on rajoute le cookie session_id
$page = curl_exec($curl);
curl_close($curl);
print($page);

Cela fonctionnera si le serveur de destination accepte les identifiants de session par cookie (cde qui est en principe le cas par défaut). Sinon, si le serveur est configuré pour accepter les identifiants de session par URL, il faut rajouter le champs mais dans l'URL :


session_start(); // ICI on active les variables de session (si ce n'est pas déjà fait)
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://ww7.aitsafe.com/...?".session_name() . '=' . session_id()); // ICI on passe le session_id par URL
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$page = curl_exec($curl);
curl_close($curl);
print($page);

Voilà, cela devrait résoudre ton problème. Il y a juste un problème qui peut se poser si jamais l'url du serveur de destination est le serveur lui-même (une requête HTTP "interne") : dans ce cas, il faut savoir que le fichier de session est par défaut ouvert en mode exclusif, ce qui fait que tu auras un joli timeout à première vue inexplicable... Si cela arrive, il te suffit de rajouter la commande suivante juste avant le curl_exec() :

session_write_close();

Ceci à pour effet de sauvegarder et fermer le fichier de session courant (malheureusement, cela rend la session inutilisable pour la suite du script...), donc lorsque CURL fera sa requête HTTP, il pourra "se faire passer" pour la même session sans problème.

Sinon, j'ai une question, vous pourrez peut-être m'aider : est-il possible d'initialiser CURL et de le détruire (close) une seule fois tout en faisant plusieurs exec au milieu ?

Merci, @+
Répondre à druide

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 druide, le mercredi 21 novembre 2007 à 12:44:04
Re,

Bon, en fait je viens de tester plusieurs curl_exec() au milieu d'un curl_init() ... curl_close() et çà fonctionne...Sur l'action j'ai un peu trollé...

@+
Répondre à druide
Php session cookie qui ne se supprime pas (Résolu)Bonjour, j'utilise le script trouvé a cette page http://www.manuelphp.com/php/function.session-destroy.php mais cela ne supprime pas le cookie comment cela ce fait-ce ? je connai tres mal les session donc si vous voulez des reseignement sur mon... www.commentcamarche.net/forum/affich-4190949-php-session-cookie-qui-ne-se-supprime-pas
Php chargement session sans formulaire (Résolu)Bonjour, En PHP j'utilise les sessions par la méthode POST pour récupérer les données d'un formulaire, dans ce cas tout fonctionne très bien. Mon problème est : Comment récupérer une variable provenant d'une base donnée dans une... www.commentcamarche.net/forum/affich-1444753-php-chargement-session-sans-formulaire
[PHP] Headers already sent by.....Lorsque vous utilisez une fonction Php qui manipule les en-têtes http comme par exemple: header() setcookie() session_start() Il est important d'utiliser ces fonctions avant d'avoir généré le moindre flux vers le client. A partir du moment où... www.commentcamarche.net/faq/sujet-1916-php-headers-already-sent-by
[PHP] Récupérer login et mot de passe passés par un .htaccessSi vous avez protégé un dossier de votre site en utilisant un fichier .htaccess et que vous souhaitez récupérer dans vos pages PHP le login et le mot de passe que l'utilisateur a saisis, il vous suffit d'utiliser ces variables... www.commentcamarche.net/faq/sujet-4795-php-recuperer-login-et-mot-de-passe-passes-par-un-htaccess
[php] Les sessions ne tiennent pas (Résolu)Bonjour, Jusqu'à hier, j'utilisais les cookies sans me rapeller pourquoi. J'ai donc tout modifier et compris pourquoi je n'utilisais pas les sessions : elles ne passent pas d'une page à l'autre ! Quand je fais des tests... www.commentcamarche.net/forum/affich-4997493-php-les-sessions-ne-tiennent-pas
[Php] Variable Session, connexion par mdp (Résolu)Bonjour, j'essaye de créer un accés sécurisé sur mon site avec email et mot de passe. J'utilise la variable session, qui marche sur un autre de mes sites, mais là ... la connexion ne se fait pas, et je pense que c'est à cause de... www.commentcamarche.net/forum/affich-4297504-php-variable-session-connexion-par-mdp
[php] la session ne contient rien (Résolu)Bonjour Je pose ma question pour la deuxième fois car mon problème n'a pas l'air d'être connu par les forumiens ! Bon j'ai une page d'identification connexion.php qui vérifis si le pseudo et le mot de passe sésis dans la page... www.commentcamarche.net/forum/affich-2217322-php-la-session-ne-contient-rien
Authentification - Introduction Le contrôle d'accès consiste à définir les accès au réseau et les services disponibles après identification. Le terme AAA est souvent utilisé pour désigner les facettes suivantes de la sécurité : Authentification (en anglais Authentication) : il... www.commentcamarche.net/authentification/authentification.php3
PHP - Les fichiers Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier est repérée par une variable, indiquant... www.commentcamarche.net/php/phpfich.php3
PHP - Récupération de données PHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des cases à cocher des boutons... www.commentcamarche.net/php/phpform.php3
Toutes les réponses pour « [PHP] cURL et session »