我正在创建一个系统,该系统通过在页面之间传递令牌来确保请求的有效性。令牌将在登录页面上生成(因为它只需要生成一次),然后传递到主页面。但是,有一个中间PHP脚本正在运行以记录用户,我不知道如何获取发布的令牌并将其传递到主页面。
简而言之,我需要将登录页面中的令牌发布到中间脚本,然后从脚本发布到主页面,我不知道该怎么做。
答案 0 :(得分:0)
答案 1 :(得分:0)
答案 2 :(得分:0)
<?php
setcookie("token", $myToken);
?>
此方法的最大缺点是绝对要求用户在其浏览器上启用Cookie。在高度安全的情况下,用户可能没有启用cookie,因此这种方法对他们不起作用。
$_SESSION
全局变量:<?php
$_SESSION['token'] = $myToken;
?>
如前所述,它需要启用Cookie。
$_GET
参数添加到URI字符串:http://example.com?token=f4FArqk53Gwr4fESC73FedG48Trd3YEj
此方法的最大缺点是您的URI
字符串看起来非常复杂。
如果用户手动修改URI
,则状态信息也将丢失。
不幸的是,它要求您在每个页面上提交表单。
您可以使用jQuery
。
一些例子是here。
答案 3 :(得分:0)
我很久以前写过:
function postheader($url, $server, $cookies, $daten)
{
$temp=array();
$out = "POST ".$url." HTTP/1.1\r\n";
$out .= "Host: ".$server."\r\n";
if(count($cookies)>0)
{
$out .= "Cookie: ";
foreach($cookies as $name=>$value)
{
$temp[] = $name."=".$value;
}
$out .= implode("; ",$temp);
$out .= "\r\n";
}
$out .= "User-Agent: Mozilla/4.0\r\n";
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$temp=array();
foreach($daten as $key=>$data)
{
$temp[] = $key."=".urlencode($data);
}
$temp=implode("&",$temp);
$out .= "Content-Length: ".strlen($temp)."\r\n";
$out .= "\r\n";
$out .= $temp."\r\n";
return $out;
}
$fp = fsockopen($server, 80, $errno, $errstr, 30);
if (!$fp)
die( "$errstr ($errno)<br />\n");
$out=postheader($url, $server, $cookies, $daten);
//echo $out;
fwrite($fp, $out);
while (!feof($fp))
{
$string.= fgets($fp, 128);
}
fclose($fp);
$ daten应该是一维关联数组,包含您要通过post请求发送的数据。对于cookie,只需添加一个空数组。
$ server是主机地址,$ url只是服务器上的地址,例如
$server="stackoverflow.com";
$url="/post.php";
$ string将包含整个响应,包括标题。如果你不想要它们,请从第一个“\ r \ n \ r \ n”出现一个子串。
答案 4 :(得分:0)
进一步考虑,看起来我的事情比他们需要的要复杂得多。谢谢大家的帮助,但解决方案似乎是我应该更聪明一点。