Tom. Posted November 29, 2018 Posted November 29, 2018 I was wondering if anyone else has come across this? I'm wanting to store information from a cUrl request in a session. The cUrl goes to an external API and does a POST request. I'm wanting to store the session ID after using curl, but I've found that setting any $session after cUrl will cause it to forget all $session set if you leave the page. It's such an annoying, weird thing that PHP does. I've tried using httpWire but that doesn't store the $session but at least it doesn't forget all other session data. Interestingly, the session is only reset if I try to use any of the data from the cUrl and store it in a session. Even if I set the response as a variable first.
dragan Posted November 29, 2018 Posted November 29, 2018 Can we look at your code? How exactly did you try it? Are you using something like curl_setopt ($ch, CURLOPT_COOKIEJAR, COOKIE_FILE); curl_setopt ($ch, CURLOPT_COOKIEFILE, COOKIE_FILE); ? And did you try to use PHP's native $_SESSION instead of PW's $session?
Tom. Posted November 29, 2018 Author Posted November 29, 2018 6 minutes ago, dragan said: Can we look at your code? How exactly did you try it? Are you using something like curl_setopt ($ch, CURLOPT_COOKIEJAR, COOKIE_FILE); curl_setopt ($ch, CURLOPT_COOKIEFILE, COOKIE_FILE); ? And did you try to use PHP's native $_SESSION instead of PW's $session? I'm using PW's $session. function post_curl($url, $data) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $response = curl_exec($ch); curl_close($ch); return $response; } $token = $pages->get("template=foxycart")->token; if($_POST['ThisAction'] == "CheckLogin") { $login = post_curl("https://teatumjones.foxycart.com/v/2.0.0/api_json.php", $_POST); if($login) { $json = json_decode($login); if($json->ok === true || $json->details == "Transaction not found") { // Set session to logged in. $session->logged_in = true; // Find user from FoxyCart and store as session. $user = post_curl("https://teatumjones.foxycart.com/api", array( 'api_token' => $token, 'api_action' => 'customer_get', 'customer_email' => $input->post->customer_email) ); $xml = simplexml_load_string($user); $session->customer_id = $xml->customer_id; } else { echo "User or Password incorrect."; } } else { echo "Unable to reach login server at this time."; } } Interestingly, the $session doesn't get removed if I don't use $session->customer_id = $xml->customer_id; I can use in it's place $session->customer_id = "Hello"; and that will be remembered. As soon as any $sessions are set using the $xml data. It just completely forget's all sessions set on that file.
adrian Posted November 29, 2018 Posted November 29, 2018 Hey @Tom. - I am not sure your exact goal here - not sure if the session storage is for production use, or just while developing/testing, but @bernhard and I just put this together: https://processwire.com/talk/topic/12208-tracy-debugger/?do=findComment&comment=176842 - which came about while he was working with foxycart and since you are as well, I just thought it might be worth mentioning ? 2
Robin S Posted November 29, 2018 Posted November 29, 2018 Maybe SessionHandlerDB will behave differently and therefore be an alternative. 1
adrian Posted November 29, 2018 Posted November 29, 2018 Does this help? https://stackoverflow.com/questions/33758126/how-to-store-xml-obj-in-php-session-variable It might be related to the need to serialize the xml before storing. Is $xml->customer_id definitely a string? 1
Tom. Posted November 30, 2018 Author Posted November 30, 2018 11 hours ago, adrian said: Does this help? https://stackoverflow.com/questions/33758126/how-to-store-xml-obj-in-php-session-variable It might be related to the need to serialize the xml before storing. Is $xml->customer_id definitely a string? Thank you all for your responses. This does in fact help! Turns out it wasn't a curl issue but trying to store and XML object as a session. 1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now