Php 使用cURL的会话

Php 使用cURL的会话,php,curl,get,request,Php,Curl,Get,Request,我想我有一个很简单的问题。我目前正在开发一个API,在使用它之前,您必须登录。登录是通过http请求进行的,因此要登录,您可以访问 http://myapi.com/login.php?email=mail@mail.com&password 比如说 当电子邮件和密码正确时,我设置了一些会话变量并启动会话: session_start(); $_SESSION['idUser'] = $row['id']; $_SESSION['email'] = $row['email']; pr

我想我有一个很简单的问题。我目前正在开发一个API,在使用它之前,您必须登录。登录是通过http请求进行的,因此要登录,您可以访问

http://myapi.com/login.php?email=mail@mail.com&password 
比如说

当电子邮件和密码正确时,我设置了一些会话变量并启动会话:

session_start();
$_SESSION['idUser'] = $row['id'];
$_SESSION['email'] = $row['email'];
print(json_encode(array("authenticated" => true)));
然而,当我从终端访问api并通过cURL执行请求(而不是登录)时,当我第一次执行登录请求时,它会说我没有授权。在另一个页面上的每个api调用上,我检查会话变量。如果已设置,则用户已登录:

function checkSession()
{
    session_start();
    if(!isset($_SESSION['idUser']) || !isset($_SESSION['email']))
    {
            print json_encode(array("error" => "Not authorized"));
            exit();
    }
}
为什么说我没有被授权?当我从网络浏览器访问页面时,一切都正常

谢谢

需要一个饼干罐

浏览器cookies!=您的代码(curl客户端)cookies

现在我的脑海里有一首曲奇怪兽的歌…

需要一个曲奇罐

浏览器cookies!=您的代码(curl客户端)cookies


现在我的脑海中出现了cookie monsters歌曲…

这可能是因为您的PHP会话代表您使用cookies将会话存储在用户的浏览器上。这就是php应用程序在用户每次向php页面发出HTTP请求时识别用户的方式

您必须使用cUrl的“cookie”选项

基本上,您将首先登录并使用存储会话cookie

curl -c cookies.txt http://myapi.com/login.php?email=mail@mail.com&password=yourpassword
然后执行下一个请求,告诉cUrl将cookie发回

curl -b cookies.txt http://myapi.com/login.php?email=mail@mail.com&password 

您将在cookies.txt中看到以纯文本形式存储的cookie,这可能是因为您的PHP会话代表您使用cookie在用户浏览器上存储会话。这就是php应用程序在用户每次向php页面发出HTTP请求时识别用户的方式

您必须使用cUrl的“cookie”选项

基本上,您将首先登录并使用存储会话cookie

curl -c cookies.txt http://myapi.com/login.php?email=mail@mail.com&password=yourpassword
然后执行下一个请求,告诉cUrl将cookie发回

curl -b cookies.txt http://myapi.com/login.php?email=mail@mail.com&password 

您将在cookies.txt中看到以纯文本形式存储的cookie

谢谢您的回答,我正在@mbarthelmy中寻找答案,但我将查看cookie jar;)谢谢你的回答,我一直在寻找@mbarthelmy的答案,但我会看看饼干罐;)