Php 我的饼干怎么了?
出于某些原因,此php脚本不会回显我的cookie变量:Php 我的饼干怎么了?,php,cookies,Php,Cookies,出于某些原因,此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.
<?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"]; ?>
我做错了什么?确保为cookie设置了路径 如果在一个路径中设置cookie,但试图从不同的路径获取cookie,则它将不起作用
你能告诉我索引的URL和cookie的设置位置吗 您是否在尝试吐出特定COOKIE值时尝试了
var\u dump($\u COOKIE)
?在设置cookie或尝试回显其值时,$forum\u url
是否可能尚未定义?可能cookie被设置为name
和pass
,因为$forum\u url
为空。调用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正文。实际上,我设置了一个快速测试,发现当存储cookie时,它会用下划线替换句点。因此,如果你有一个像www.test.comname这样的域名,它就会变成www\u test\u comname。因此,在引用cookie时,您需要执行以下操作:
<?php
$forum_url = preg_replace('/\./','_',$forum_url);
echo $_COOKIE[$forum_url."name"];
?>
<?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';
?>
PHP是否有可能在连接$forum_url.“name”和$forum_url.“pass”时遇到问题,以使setcookie正常工作 试着这样做:
<?php
$forum_url = preg_replace('/\./','_',$forum_url);
echo $_COOKIE[$forum_url."name"];
?>
<?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';
?>
假设您在索引页上包含定义
$forum\u url
的文件,并且您已经检查了cookie是否已被设置。这不是对您问题的回答,但您所做的是非常危险的。您正在将该用户的密码以明文形式存储在其浏览器缓存中。要添加到@Pekka的声明中:有一次,我在一个网站上查找我的cookie,发现我的密码以明文形式存储在cookie中。我对这个网站非常非常不满意。这不仅很危险,而且会让那些知道自己在做什么的人对你的网站失去大量的信任。设置cookie时以及您试图打印出实际cookie时的“name”。您可以查看是否正确地为数组编制索引。使用Firebug之类的工具查看发送和接收的实际HTTP头,以缩小问题是否与代码有关,或者浏览器是否未按您希望的方式处理cookie。它们设置在同一域和子域中