php setcookie() 无法正常工作
php setcookie() not working correct
我想了解 setcookie() 在 php 中的工作原理,所以我制作了一个简单的脚本用于测试目的。该脚本所做的唯一一件事就是询问用户名,然后为其创建一个 cookie。当您再次输入相同的用户名时,它应该欢迎您回来。如果这是您第一次输入该用户名,它应该是第一次欢迎您。这是我所做的:
这是表格;
<!DOCTYPE html>
<html lang="nl">
<head>
<title>XXL Computer winkel</title>
</head>
<body>
<h3>php lab 12</h3>
<table border=0 cellpadding=0 cellspacing=0 >
<form name="orderform" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<tr>
<td>gebruikersnaam</td>
<td><input type="text" name="user" /></td>
<td><input type="submit" name="send" value="inloggen" /> </td>
</tr>
</form>
</table>
<?php
include ("cookiefuncties.php");
welkom();
?>
</body>
</html>
cookiefuncties.php 看起来像这样:
<?php
function welkom()
{
if(isset($_POST['user']))
{
$cookie_value = $_POST['user'];
$cookie_name = "gebruikersnaam";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
}
if(isset($_POST['user'])&& $_COOKIE[$cookie_name] === ($_POST['user']))
{
echo "Welcome back " . $_COOKIE[$cookie_name] . "!";
}
if(isset($_POST['user'])&& $_COOKIE[$cookie_name] != ($_POST['user']))
{
echo "Welcome " . $_COOKIE[$cookie_name] . "This is your first visit";
}
}
?>
问题是 cookie 总是 'one name late'。因此我需要刷新页面,它总是欢迎用户回来而不是说这是第一次访问。我知道有一个 'force' 刷新的选项,但我不知道如何,如果那是解决方案。
您好,
伦纳特
ps。不要介意间距。我仍然不知道如何在这个网站上做到这一点:-(
设置每个用户 cookie 的唯一名称并检查它是否存在。
if(isset($_POST['user']) and !empty($_POST['user']))
{
$user = $_POST['user'];
// set the unique cookie name
$cookie_name = "gebruikersnaam_$user";
$setCookie = true;
if(isset($_COOKIE[$cookie_name]) and $_COOKIE[$cookie_name] = $user )
{
echo "Welcome Back ".$user;
}else
{
echo "This is your first visit $user";
}
setcookie($cookie_name, $user, time() + (86400 * 30), "/");
}
您必须为每个用户保留一个 cookie。只需为每个新用户设置一个值为 true
的 cookie。在您的 cookiefuncties.php
中尝试此代码:
<?php
function welkom() {
if(isset($_POST['user'])) {
$cookie_name = $_POST['user'];
setcookie($cookie_name, true, time() + (86400 * 30), "/");
if( isset($_COOKIE[$cookie_name]) && true == $_COOKIE[$cookie_name]) {
echo "Welcome back " . $_POST['user'] . "!";
} else {
echo "Welcome " . $_POST['user'] . "This is your first visit";
}
}
}
?>
我想了解 setcookie() 在 php 中的工作原理,所以我制作了一个简单的脚本用于测试目的。该脚本所做的唯一一件事就是询问用户名,然后为其创建一个 cookie。当您再次输入相同的用户名时,它应该欢迎您回来。如果这是您第一次输入该用户名,它应该是第一次欢迎您。这是我所做的:
这是表格;
<!DOCTYPE html>
<html lang="nl">
<head>
<title>XXL Computer winkel</title>
</head>
<body>
<h3>php lab 12</h3>
<table border=0 cellpadding=0 cellspacing=0 >
<form name="orderform" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<tr>
<td>gebruikersnaam</td>
<td><input type="text" name="user" /></td>
<td><input type="submit" name="send" value="inloggen" /> </td>
</tr>
</form>
</table>
<?php
include ("cookiefuncties.php");
welkom();
?>
</body>
</html>
cookiefuncties.php 看起来像这样:
<?php
function welkom()
{
if(isset($_POST['user']))
{
$cookie_value = $_POST['user'];
$cookie_name = "gebruikersnaam";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
}
if(isset($_POST['user'])&& $_COOKIE[$cookie_name] === ($_POST['user']))
{
echo "Welcome back " . $_COOKIE[$cookie_name] . "!";
}
if(isset($_POST['user'])&& $_COOKIE[$cookie_name] != ($_POST['user']))
{
echo "Welcome " . $_COOKIE[$cookie_name] . "This is your first visit";
}
}
?>
问题是 cookie 总是 'one name late'。因此我需要刷新页面,它总是欢迎用户回来而不是说这是第一次访问。我知道有一个 'force' 刷新的选项,但我不知道如何,如果那是解决方案。
您好, 伦纳特
ps。不要介意间距。我仍然不知道如何在这个网站上做到这一点:-(
设置每个用户 cookie 的唯一名称并检查它是否存在。
if(isset($_POST['user']) and !empty($_POST['user']))
{
$user = $_POST['user'];
// set the unique cookie name
$cookie_name = "gebruikersnaam_$user";
$setCookie = true;
if(isset($_COOKIE[$cookie_name]) and $_COOKIE[$cookie_name] = $user )
{
echo "Welcome Back ".$user;
}else
{
echo "This is your first visit $user";
}
setcookie($cookie_name, $user, time() + (86400 * 30), "/");
}
您必须为每个用户保留一个 cookie。只需为每个新用户设置一个值为 true
的 cookie。在您的 cookiefuncties.php
中尝试此代码:
<?php
function welkom() {
if(isset($_POST['user'])) {
$cookie_name = $_POST['user'];
setcookie($cookie_name, true, time() + (86400 * 30), "/");
if( isset($_COOKIE[$cookie_name]) && true == $_COOKIE[$cookie_name]) {
echo "Welcome back " . $_POST['user'] . "!";
} else {
echo "Welcome " . $_POST['user'] . "This is your first visit";
}
}
}
?>