2

我正在尝试为我的脚本创建一个登录系统并且卡在一个点上。

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

任何帮助,将不胜感激

4

1 回答 1

0

服务器配置开始

步骤1:

浏览并打开:..\php\php.ini

第2步:

通过删除分号 (;) 取消注释 php.ini 文件中的以下行。

;extension=php_curl.dll

之后它看起来像下面的东西 - extension=php_curl.dll

第 3 步:

重新启动您的 Apache 服务器。

服务器配置端

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- 网址

CURLOPT_HEADER- 得到标题?(0/1)

CURLOPT_RETURNTRANSFER- 回答服务器的价值?(0/1)

CURLOPT_TIMEOUT- 连接多长时间,服务器忙时

CURLOPT_POST- 邮政?(0/1)

CURLOPT_POSTFIELDS- 发布数据

CURLOPT_NOBODY- 只返回 HEAD

更多的

于 2014-12-12T11:10:14.473 回答