程序实现功能 先POST
http://127.0.0.1/api.php?action=login&lgname=$settings[user]&lgpassword=$settings[pass]&format=xml
返回得到 token的值  以同SESSION  POST 
http://127.0.0.1/api.php?action=login&lgname=$settings[user]&lgpassword=$settings[pass]&Lgtoken=$token为什么得到的 session 和目标 地址的 SEIOSSN 不同的  这样 我就没法登录了 
 
我用 <form met="post" >去做两个 去写 SESSION  就传过去了   CURL 和 form达到的效果不同吗  有没有办法 解决 代码如下:
<?
$settings['wikiroot'] = "http://127.0.0.1";
$settings['user'] = "admin";
$settings['pass'] = "asdqwe";
$settings['cookiefile'] = dirname(__FILE__).'/cookie.txt'; $url = $settings['wikiroot']."/api.php";
$params = "action=login&lgname=$settings[user]&lgpassword=$settings[pass]&format=xml";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ($url));
curl_setopt($ch, CURLOPT_ENCODING, "UTF-8");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_COOKIEFILE, $settings['cookiefile']);
curl_setopt($ch, CURLOPT_COOKIEJAR, $settings['cookiefile']);
ob_start();
$xml = curl_exec($ch);
if ($xml === FALSE) {
    echo "cURL Error: ".curl_error($ch);
}
$xml = simplexml_load_string($xml);
$expr = "/api/login[@token]";
$result = $xml->xpath($expr);
$token = $result[0]->attributes()->token;
$params2 = "action=login&lgname=$settings[user]&lgpassword=$settings[pass]&lgtoken=".$token;
curl_setopt($ch, CURLOPT_POSTFIELDS, $params2);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $settings['cookiefile']);
$xml2 = curl_exec($ch);
if ($xml2 === FALSE) {
    echo "cURL Error: ".curl_error($ch);
}
ob_end_clean();
curl_close($ch);
echo $xml2;?>
高手帮忙啊  急求啊

解决方案 »

  1.   

    说错了 SESSIONid  是cookies 中的一个值他俩是不同的
      

  2.   

    你的form表单拿出来看一下,只是这么说我也不确定你的form和curl是否有区别。
      

  3.   

    还有这里你有一个很不好的习惯,两次curl用的却是一个初始化。每一次调用curl,都要记得最后结束时关闭curl。不知道是不是共用一个curl出的问题,你可以试试改一下,每次获取完信息以后都记得curl_close($ch);下次再调用的时候再重新初始化,$ch = curl_init();。