假设我有一个名为(example.com)的网站,它将有一个php文件(example.com/call.php)。 call.php将有一个post方法,将使用正确的参数发布到网站exampleOne.com/login.php。 exampleOne.com将返回带有cookie的标头,该标签将确认用户的身份验证,如何获取cookie或至少检查标头是否包含Set-Cookie以便被告知用户已通过身份验证?
如果不够清楚,请在评论中告诉我,我会尽力清理所有内容。
(更新1 :所以我的想法是,我怎么知道我发布的其他域已经设置了cookie,因为已经设置了cookie的事实(Set- cookie!= null或“”)表示用户名和密码实际上是正确的)
(更新2 所以我的问题是我想确保该用户是某个论坛的成员,该论坛没有API,我无法对该论坛进行身份验证,因为我没有然而,访问他们的记录,该论坛验证用户并设置一个cookie,如果信息是正确的,我希望能够看到该cookie,以确保我了解用户已通过身份验证 - 希望这有帮助)
答案 0 :(得分:3)
您可以使用此代码执行您想要的操作。当你通过向页面写入HTTP请求然后处理它发回的响应头时,你只是模拟客户端。这也是您构建代理服务器的方式,但这正是您正在做的事情。
如果您需要帮助,请告诉我。
//
// OPEN SOCKET TO SERVER
//
$_socket = @fsockopen($host, $port, $err_no, $err_str, 30);
//
// SET REQUEST HEADERS
//
$_request_headers = '... CONSTRUCT FULL HEADERS HERE ...';
fwrite($_socket, $_request_headers);
//
// PROCESS RESPONSE HEADERS
//
$_response_headers = $_response_keys = array();
$line = fgets($_socket, 8192);
while (strspn($line, "\r\n") !== strlen($line))
{
@list($name, $value) = explode(':', $line, 2);
$name = trim($name);
$_response_headers[strtolower($name)][] = trim($value);
$_response_keys[strtolower($name)] = $name;
$line = fgets($_socket, 8192);
}
sscanf(current($_response_keys), '%s %s', $_http_version, $_response_code);
if (isset($_response_headers['set-cookie']))
{
// DO WHAT YOU WANT HERE
}
作为参考,您可以在PHProxy中找到更详细的类似代码。它将为您创建标头,处理响应标头等。如果您发现此示例并未执行您需要的所有操作,则应引用该软件。