gpt4 book ai didi

php - 使用 php,如何通过 POST 模拟完整的表单提交来发送数据?

转载 作者:可可西里 更新时间:2023-11-01 01:04:48 24 4
gpt4 key购买 nike

我的问题是:我有一个托管客户目录的在线服务。
此服务需要身份验证,但我只有一个用户名/密码。
相反,我的客户希望使用自己的用户/密码和访问统计信息分别管理每个用户。所以我所做的就是建立我自己的账户管理,到目前为止一切顺利。
我现在需要做的是添加一个登录表单,用户应该用自己的凭据填写该表单;发送后,脚本应继续进行身份验证,如果一切正常,则增加访问计数,通过 POST 发送远程系统的登录数据并将浏览器重定向到响应页面,与普通表单完全相同。< br/>我尝试以这种方式使用 curl:

if (authenticate($_POST['usr'],$_POST['pwd'])) {
$url = "http://www.foo.com/login.php";
$postdata = http_build_query(array('username'=>"foo",'password'=>"bar"));
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_exec($curl);
curl_close($curl);
}

但我最终将目标页面的数据加载到我自己的页面中,而不是被重定向到该站点。
我该怎么办?
附言如果可能的话,我会避免使用通过 JS 提交的隐藏表单。
谢谢!

最佳答案

我不认为你看到了你正在尝试做的事情的全貌。基本上,重定向对您没有帮助,因为身份验证不是基于 URL 的,而是基于 cookie 或 session 的。换句话说,您无法对自己进行身份验证(当您使用隐藏的凭据模拟该网站上的表单提交时会发生这种情况)并让您的访问者为自己获得该身份验证。重定向不会在这里帮助你。即使您重定向他,他也未通过身份验证。您的服务器是,因为它提交了表单,而不是用户本人。

我不明白的是,您可以使用隐藏的凭据对用户进行身份验证,然后授予他对统计信息的完全访问权限,为什么不直接授予他访问权限?您向他提供了对所有内容的完全访问权限,但不给他登录名和密码?

另一方面,POST 重定向是不可能的,因此您不能在使用伪造的 POST 数据提交表单时重定向他。所有 POST 数据都在重定向时丢失。

作为一个丑陋的解决方法,我建议如下:您可以像现在一样验证自己的身份,然后让用户浏览您网站的统计信息,类似于代理所做的。然后,您可以将页面上的所有链接更改为类似 yoursite.com/viewstats/?page=URL 的内容,其中 URL 是用户希望看到的统计站点的页面.您捕获该页面并将其显示给用户。您将需要更改 css/js 文件的相对路径以保持其设计,并且您还需要更改所有网站内链接,例如 "/viewstats/?page="。 urlencode($old_url) 所以他们指向你的类似代理的门。

关于php - 使用 php,如何通过 POST 模拟完整的表单提交来发送数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13743507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com