php - 使用 cURL 的 session

标签 php curl get request

我想我有一个非常简单的问题。我目前正在开发一个 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/

相关文章:

php - 检查数组中是否存在值

php - 从外部站点(PHP、XPATH)检索 div 的内容?

ios - 我无法获取 snapshot.key swift ios

Node.js:GET 请求返回 404 Not Found

php - 将 namespace 与从变量创建的类一起使用

curl - HTTPotion.get header 中包含 "Referer"

php - 通过 curl 发送图像

bash - curl 302 重定向不工作(命令行)

html - GET 与空 POST

php - 安排 laravel 5.3 任务在 Windows 中每分钟运行一次