【发布时间】:2015-10-20 15:13:49
【问题描述】:
我是 PHP 初学者,正在学习使用 cookie 登录。请任何人检查我的代码,看看我的问题是什么,或者告诉我如何解决这个问题。
当我第一次打开页面时,cookie 不起作用。当我重复打开该链接时它会起作用。但是,在使用函数 include 和 header 后,我仍然无法使其工作 代码之一是:
一个代码cookie.php是:
<?php
setcookie("cookiename",$_REQUEST['name']);
if(isset($_COOKIE['cookiename'])){
$cookieSet = ' The Cookie is ' . $_COOKIE['cookiename'];
} else {
$cookieset = ' No Cookie has been set';
}
setcookie("cookiepwd",$_REQUEST['pwd']);
print_r($_COOKIE);
?>
当我第一次运行这段代码时,它不会显示任何东西。我可以在第二次看到 cookie 数据。从某些网站说cookie不会在同一页面上读取。
所以我将 print_r($_COOKIE) 移动到第二个 php 文件,并将函数 include() 或 header() 添加到上面的文件,但两者都不起作用。
Cookie2.php:
<?php
setcookie("cookiename",$_REQUEST['name']);
if(isset($_COOKIE['cookiename'])){
$cookieSet = ' The Cookie is ' . $_COOKIE['cookiename'];
} else {
$cookieset = ' No Cookie has been set';
}
setcookie("cookiepwd",$_REQUEST['pwd']);
include(‘printcookie.php’);
//or header("Location: printcookie.php")
?>
printcookie.php:
<?php
print_r($_COOKIE);
?>
非常感谢您提前回答!
米歇尔
【问题讨论】:
-
PHP 的超全局变量在脚本启动时设置,然后再也不会被 PHP 触及。您在脚本中所做的任何会更改超全局的操作都只会在脚本下一次运行时可见。
-
@Marc B:“你在脚本中所做的任何会改变超全局的事情都只会在脚本下一次运行时可见”——太模糊了