我有 2 个页面:login.php 和 index.php
当写入 localhost/mysite/login.php 并在表单中写入用户名和密码时,使用 CURLOPT_HTTPAUTH = CURLAUTH_DIGEST 和 CURLOPT_USERPWD = 'user:pass' 的 cURL 请求将被传递到另一个文件,该文件将使用 HTTP 使用这些凭据对用户进行身份验证DIGEST AUTH,将返回 200 表示成功或 401 表示错误的凭据。
如果它得到一个 200 代码,login.php 将重定向到 index.php,它也会向同一个摘要文件发出 cURL 请求,但没有 CURLOPT_HTTPAUTH 或 CURLOPT_USERPWD。这个想法是,因为我已经在 login.php 上执行了此操作,所以这些摘要凭据应该存储在用户浏览器中,但事实并非如此。所以 index.php 最终会再次要求凭据,这就是问题所在。
有人建议我使用 CURLOPT_COOKIEFILE 和 CURLOPT_COOKIEJAR,但没有人向我解释它是如何工作的?我知道 CURLOPT_COOKIEFILE 用于检索 cookie 信息,而 CURLOPT_COOKIEJAR 用于保存它们。
所以问题是这样的:
1) 该 cookie 文件的路径(例如 '/tmp/cookies.txt'),在哪里?/tmp/cookies.txt 到底是什么?与login.php 处于同一级别?或在 C:/? 另外,我应该事先创建这个文件吗?还是自动创建的?
2)该文件是在服务器上还是在客户端上?如果在服务器上,我怎么知道哪个 cookie 来自哪个用户,以便 Y 用户最终不会使用 X 用户凭据登录。
3) 另外,当使用这些 cookie 选项时,我到底在保存什么?在身份验证页面中,我应该手动创建一个 cookie 以存储在该文件中吗?如果是这样,什么饼干?我需要保留 Digest Auth Credentials,我认为它是带有 nonce、cnonce、nc、用户名、响应等的标头......不确定这是否真的是解决方法。
提前致谢