今天同事問了一個問題
A.php 用 Curl 去抓 B.php 。
然後 B.php 寫在 Session 的東西,
為什麼 A.php 抓不到 (當然 B.php 也抓不到 A.php 的值),
這是因為 curl 其實產生了另一個 session,
所以就算存了也抓不到。
當然也有解決的方法,就是使用 session_id()
程式如下:
A.php
function doHttpRequest($url, $args='') {
    $ch = curl_init();
    //Post Data
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, 'sid='.session_id());
                
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
session_start();
$_SESSION['aa']='[A.php]';
session_write_close();
$url = 'http://cw.dev.com/B.php';
echo doHttpRequest($url);
session_id(session_id());
session_start();
var_dump($_SESSION);
B.php
session_id($_POST['sid']); session_start(); $_SESSION['bb']='[B.php]'; var_dump($_SESSION);
執行結果:
array 'aa' => string '[A.php]' (length=7) 'bb' => string '[B.php]' (length=7) array 'aa' => string '[A.php]' (length=7) 'bb' => string '[B.php]' (length=7)
以上,記錄一下…
