我正在尝试为我的脚本创建一个登录系统并且卡在一个点上。
我需要做的是 POST 他在 login.php (server1) 上提交的用户的登录详细信息到我的后端脚本的登录系统 verify.php(server2) verify.php 使用 POST 数据来验证登录信息并实际设置cookie 和后端系统的所有其他内容。
我在 server2 上使用了第 3 部分脚本,所以我不能在其中进行太多修改,如果我直接从 server1 到 server2 直接执行 HTML FORM POST(使用 action=verify.php 链接),整个登录操作都有效
但是出于各种原因和安全目的以及执行附加代码,我需要使用 curl 或其他方式来发布登录信息。
我的登录系统正在工作,因为我可以在我的日志中回显登录信息正确且登录功能在 server2 上运行的状态,但由于某种原因(可能是由于 curl),cookie 没有设置/保存到用户的 PC 等当他访问 server2 url,他仍然看到我设置的“需要登录”错误消息,因此没有通过该 login.php 文件获取自动登录。
这是我的 login.php 代码(server1)和 $hostname 链接到 server2(verify.php)
$data['username']=$username;
$data['pass']=$pass;
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $hostname);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch,CURLOPT_PROXY, $proxy);
curl_setopt($ch,CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch,CURLOPT_COOKIEFILE, "cookie.txt");
//curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
//execute post
$result = curl_exec($ch);
print_r(curl_error($ch));
print_r(curl_getinfo($ch));
print_r(curl_errno($ch));
//close connection
curl_close($ch);
这是卷曲响应
Trying to login with *user* and *pass* Var check username password
SuccessArray ( [url] => *hostname* [content_type] => text/html [http_code] => 200 [header_size] => 712 [request_size] => 308 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.245843
[namelookup_time] => 0.010171 [connect_time] => 0.01039 [pretransfer_time] => 0.010398 [size_upload] => 257 [size_download] => 93 [speed_download] => 378 [speed_upload] => 1045 [download_content_length] => -1 [upload_content_length] => 257 [starttransfer_time] =>
0.042541 [redirect_time] => 0 [certinfo] => Array ( ) [redirect_url] => ) 0
PS:它不是php使用的远程登录系统,它是一个用户登录系统,而不是直接使用HTML FORM动作
任何帮助,将不胜感激