By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,823 Members | 730 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,823 IT Pros & Developers. It's quick & easy.

PHP + cURL + session id

P: n/a
Hello all,
I have simple PHP application that on one page strarts session and
write some information to it. On another page program tryes to fetch
information from a third page using cURL. On that third page program
needs to retrive information that were written to the session and use
them. Problem is that when I call the third page and call
session_start() it starts a new session where there are no infromation
I need. Code below.

<code>
<?
/**
* file: t1.php
*/
session_start();
$_SESSION['user'] = 'lukas';
echo '<html>
<body>
<a href="t2.php">'.$_SESSION['user'].' 2 >> </a>
</body>
</html>';
?>

<?
/**
* file: t2.php
*/
session_start();
$_SESSION['user'].=" add some info.";
$url="http://www.myserver.com/t3.php"
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 2);
//curl_setopt($ch, CURLOPT_COOKIE,
session_name()."=".session_id().";"); //when I uncomment that line
operation times out
$output = curl_exec($ch);
echo "output: ".$output."<br/>";
echo "error no: ".curl_errno($ch)."<br/>";
echo "error: ".curl_error($ch)."<br/>";
curl_close($ch);
?>

<?
/**
* file: t3.php
*/
session_start();
if(isset($_SESSION['user']))
echo "yeah<br/>";
else
echo "nope<br/>";
?>
</code>

My PHP Version 4.4.2-1

My php.ini session settings:
Session Support enabled
Registered save handlers files user
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /var/lib/php4 /var/lib/php4
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid Off Off

My php.ini cURL settings
CURL support enabled
CURL Information libcurl/7.15.3 OpenSSL/0.9.8a zlib/1.2.1.1
libidn/0.5.18

Any help would be appreciated.

Kind regards,
Luke

Apr 21 '06 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Problem is in session identification.
When you start a session, it gets unique identifier, which is passed to
your browser (in cookie or, if cookies are off, in GET parameter). Value
stored in the session is saved on the server and next time you call
session_start, PHP finds it on the server according to this identifier.

For the third script the calling client is not your browser, but cURL
client on the server. However, it doesn't know the session identifier,
so the session is empty.

What you need is to pass session identifier to the URL called by cURL in
second script as a GET parameter.

lookee wrote:
Hello all,
I have simple PHP application that on one page strarts session and
write some information to it. On another page program tryes to fetch
information from a third page using cURL. On that third page program
needs to retrive information that were written to the session and use
them. Problem is that when I call the third page and call
session_start() it starts a new session where there are no infromation
I need. Code below.

<code>
<?
/**
* file: t1.php
*/
session_start();
$_SESSION['user'] = 'lukas';
echo '<html>
<body>
<a href="t2.php">'.$_SESSION['user'].' 2 >> </a>
</body>
</html>';
?>

<?
/**
* file: t2.php
*/
session_start();
$_SESSION['user'].=" add some info.";
$url="http://www.myserver.com/t3.php"
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 2);
//curl_setopt($ch, CURLOPT_COOKIE,
session_name()."=".session_id().";"); //when I uncomment that line
operation times out
$output = curl_exec($ch);
echo "output: ".$output."<br/>";
echo "error no: ".curl_errno($ch)."<br/>";
echo "error: ".curl_error($ch)."<br/>";
curl_close($ch);
?>

<?
/**
* file: t3.php
*/
session_start();
if(isset($_SESSION['user']))
echo "yeah<br/>";
else
echo "nope<br/>";
?>
</code>

My PHP Version 4.4.2-1

My php.ini session settings:
Session Support enabled
Registered save handlers files user
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /var/lib/php4 /var/lib/php4
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid Off Off

My php.ini cURL settings
CURL support enabled
CURL Information libcurl/7.15.3 OpenSSL/0.9.8a zlib/1.2.1.1
libidn/0.5.18

Any help would be appreciated.

Kind regards,
Luke

Apr 21 '06 #2

P: n/a
Thanks for your reply.
I did what you had suggested and still no luck. I appended
session_name()."=".session_id() to the URL I wanted to fetch and the
results were the same as when I set this line in the second script:
curl_setopt($ch, CURLOPT_COOKIE, session_name()."=".session_id().";");
"Operation timed out with 0 out of -1 bytes received". If you have any
other suggestions let me know.

Thanks.

Best regards,
Luke

Apr 22 '06 #3

This discussion thread is closed

Replies have been disabled for this discussion.