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