我正在尝试为我的脚本创建一个登录系统,但我陷入困境。
我需要做的是将他在login.php(server1)上提交的用户的登录详细信息发布到我的后端脚本的登录系统verify.php(server2) verify.php使用POST数据来验证登录信息,并为后端系统实际设置cookie和所有其他内容。
我在server2上使用第三部分脚本所以我不能修改它,如果我直接从server1直接执行HTML FORM POST到server2(使用action = verify.php链接),整个登录工作都有效
但出于各种原因和安全目的以及执行其他代码,我需要使用curl或其他方式来登录登录。
我的登录系统正常工作,因为我可以回复登录信息正确的状态,登录功能在我的日志中的server2上工作,但由于某种原因(可能是由于卷曲),cookie没有被设置/保存到用户的PC和所以当他访问server2 url时,他仍然看到我设置了“Login Required”错误消息,因此没有通过login.php文件获得autologgedin。
这是我的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动作
任何帮助将不胜感激
答案 0 :(得分:0)
服务器配置开始
第1步:
浏览并打开: .. \ PHP中\ php.ini中
第2步:
删除分号(;),取消注释php.ini文件中的以下行。
;extension=php_curl.dll
之后它看起来像下面的东西 - 延长= php_curl.dll
第3步:
重新启动Apache服务器。
Serwer配置结束
php代码
$c = curl_init();//init
curl_setopt($c,CURLOPT_URL,'http://yourURL.php');//url
curl_setopt($c,CURLOPT_POST,1);//post
//1 = true
curl_setopt($c, CURLOPT_POSTFIELDS,'name=XXX&lastname=YYY');
curl_exec($c);//exec
静态选项:
CURLOPT_URL
- url
CURLOPT_HEADER
- 获取标题? (0/1)
CURLOPT_RETURNTRANSFER
- 回答重要的问题? (0/1)
CURLOPT_TIMEOUT
- 服务器忙时连接多长时间
CURLOPT_POST
- POST? (0/1)
CURLOPT_POSTFIELDS
- POST数据
CURLOPT_NOBODY
- 仅返回HEAD