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

标签 php html rest curl authentication

我正在尝试为我的脚本制作一个登录系统,但卡在了某个点上。

我需要做的是将他在 login.php (server1) 上提交的用户的登录详细信息发布到我的后端脚本的登录系统 verify.php(server2) verify.php 使用 POST 数据来验证登录信息并为后端系统实际设置 cookie 和所有其他内容。

我在 server2 上使用第 3 部分脚本,所以我不能在其中做太多修改,如果我直接从 server1 直接执行 HTML FORM POST 到直接 server2(使用 action=verify.php 链接),整个登录过程就可以了

但出于各种原因和安全目的以及执行额外的代码,我需要使用 curl 或其他方式来 POST 登录。

我的登录系统正在运行,因为我可以在我的日志中回显登录信息正确并且登录功能在 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);

这是 curl 响应

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 action

任何帮助将不胜感激

最佳答案

服务器配置开始

第一步:

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

第 2 步:

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

;extension=php_curl.dll

在那之后它看起来像下面的东西- 扩展=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 - POST? (0/1)

CURLOPT_POSTFIELDS - POST 数据

CURLOPT_NOBODY - 只返回 HEAD

more

关于php - 在 PHP 中使用 CURL 将登录 POST 到远程 auth 函数/php 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15416689/

相关文章:

rest - 如何使用 REST 仅返回集合中已更改的资源

java - 如何在 REST 客户端中发出发送行列表的请求 -Android

java - Amdatu 多部分表单 @FormParam 始终为 null

php - 总登录时间

javascript - 使用jquery根据本地存储数据动态创建HTML分区

PHP - 仅在主页上隐藏元素 - WordPress 网站

javascript - 寻找深色/浅色

javascript - 侧面导航栏在切换时更改页面内容的对齐方式

php - HttpRequest (PHP),如何发布对象

javascript - AJAX 未通过 POST 将数据传递到其预期的 URL