在PHP中使用CURL POST登录到远程auth函数/ php文件

时间:2013-03-14 17:54:33

标签: php html rest curl login

我正在尝试为我的脚本创建一个登录系统,但我陷入困境。

我需要做的是将他在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动作

任何帮助将不胜感激

1 个答案:

答案 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

more