我想我有一个非常简单的问题。我目前正在开发一个 API,在您可以使用它之前,您必须先登录。登录通过 http 请求进行,因此要登录,您将访问
http://myapi.com/login.php?email=mail@mail.com&password
例如。
当电子邮件和密码正确时,我设置了一些 session 变量并开始一个 session :
session_start();
$_SESSION['idUser'] = $row['id'];
$_SESSION['email'] = $row['email'];
print(json_encode(array("authenticated" => true)));
但是,当我访问 api 并从我的终端通过 cURL 发出请求(不是登录)时,它说我没有被授权,而我第一次执行登录请求。在另一个页面上的每个 api 调用中,我检查 session 变量。如果已设置,则用户已登录:
function checkSession()
{
session_start();
if(!isset($_SESSION['idUser']) || !isset($_SESSION['email']))
{
print json_encode(array("error" => "Not authorized"));
exit();
}
}
为什么说我没有授权?当我从网络浏览器访问页面时,一切正常。
谢谢!
最佳答案
这可能是因为您的 PHP session 代表您使用 cookie 将 session 存储在用户的浏览器上。这就是您的 php 应用程序每次向您的 PHP 页面发出 HTTP 请求时识别您的用户的方式。
您必须使用 cUrl 的“cookie”选项。
基本上,您将首先登录并使用以下命令存储 session cookie
curl -c cookies.txt http://myapi.com/login.php?email=mail@mail.com&password=yourpassword
然后你做下一个请求,告诉 cUrl 到 发回 cookies
curl -b cookies.txt http://myapi.com/login.php?email=mail@mail.com&password
您会看到您的 cookie 以纯文本形式存储在 cookies.txt 中
关于php - 使用 cURL 的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12752555/