由于某种原因,这个php脚本不会回显我的cookie变量:
<?php
require 'connection.php';
require 'variables.php';
$name = $_POST['name'];
$pass = $_POST['pass'];
if(($name == $admin_name) && ($pass == $admin_pass)){
setcookie($forum_url."name",$name,time()+604800);
setcookie($forum_url."pass",$pass,time()+604800);
}
else
echo 'Failed';
?>
继承人发送给admin_login.php的html
<form method=post action=admin_login.php>
<div id="formdiv">
<div class="fieldtext1">Name</div>
<div class="fieldtext1">Pass</div>
<input type="text" name=name size=25 />
<input type="password" name=pass size=25 />
</div>
<input type=submit value="Submit" id="submitbutton">
</form>
这是索引,我希望信息回显
<?php echo $_COOKIE[$forum_url."name"]; ?>
我做错了什么?
答案 0 :(得分:1)
您是否在尝试吐出特定Cookie值时尝试var_dump($_COOKIE)
?是否有可能在您设置cookie或尝试回显其值时尚未定义$forum_url
?可能Cookie已设置为name
和pass
,因为$forum_url
为空。
答案 1 :(得分:0)
确保设置Cookie的路径。
如果你在一条路径中设置cookie,但是你试图从不同的路径获取它,它将无法工作。
您能告诉我索引的URL以及您设置cookie的位置吗?
答案 2 :(得分:0)
通过声明headers_sent()
返回setcookie()
来调用false
时,还要检查是否尚未发送标头。设置cookie发生在HTTP标头内,因此请确保在生成任何输出之前这样做。
例如:
<?php require 'connection.php'; require 'variables.php'; ?>
<h1>Hello world!</h1>
<?php setcookie($forum_url."name",$name,time()+604800); ?>
不会工作,因为在调用setcookie()
时输出已经传递到HTTP正文。
答案 3 :(得分:0)
实际上,我设置了一个快速测试,发现当存储cookie时,它会用下划线替换句点。因此,如果您有像www.test.comname这样的域名,那么它就变成了www_test_comname。因此,在引用cookie时,您需要执行以下操作:
<?php
$forum_url = preg_replace('/\./','_',$forum_url);
echo $_COOKIE[$forum_url."name"];
?>
是否有可能PHP连接 $ forum_url。“name”和 $ forum_url。“及时传递”以便setcookie正常工作?< /击>
尝试这样的事情:
<?php
require 'connection.php';
require 'variables.php';
$name = $_POST['name'];
$pass = $_POST['pass'];
$tmp_name_path = $forum_url."name";
$tmp_pass_path = $forum_url."pass"
if(($name == $admin_name) && ($pass == $admin_pass)){
setcookie($tmp_name_path,$name,time()+604800);
setcookie($tmp_pass_path,$pass,time()+604800);
}
else
echo 'Failed';
?>
击> <击> 撞击>