Cookie记住我发布PHP



我陷入了困境。我想创建一个记住我的饼干。以下是网上的指南,我想我需要添加:

if($_POST['remember']){
setcookie('remember_me', $_POST['username'], $year);
}
elseif(!$_POST['remember']){
if(isset($_COOKIE['remember_me'])){
$past = time() - 100;
setcookie(remember_me, gone, $past);
}
}
$year = time() + 31536000;
setcookie('remember_me', $_POST['username'], $year);

到我的authentication.php文件来设置if语句并创建cookie。

然后将用户名的值设置为<?php echo $_COOKIE['remember_me']; ?>

我做过:

<form action="../controller/authentication.php" method="post">
<div class="form-group">
<label>Username</label>
<input class="form-control" placeholder="Username" name="username" type="text" value="<?php echo $_COOKIE['remember_me']; ?>">>
</div>
<div class="form-group">
<label>Password</label>
<input class="form-control" placeholder="Password" name="password" type="password" value="">
</div>
<div class="checkbox">
<label>
<input name="remember" id="remember" type="checkbox" value="1">Remember Me
</label> <br>
<small id="signup" class="form-text text-muted">Don't have an account yet? <a href='signup.php'>Sign Up</a>.</small>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>

现在的问题是Notice: Undefined index: username in C:UsersBobDesktopXammphtdocsShopping_Listviewindex.php on line 7,所以它似乎没有正确读取表单中的cookie语句,我也不知道cookie语句是否设置正确。。。

不确定这是否有帮助,但我会向你展示我的身份验证文件以及

<?php
//start session management
session_start();
//connect to the database
require('../model/connection.php');
//retrieve the functions
require('../model/functions_users.php');
//retrieve the username and password entered into the form
$username = $_POST['username'];
$password = $_POST['password'];

if($_POST['remember']){
setcookie('remember_me', $_POST['username'], $year);
}
elseif(!$_POST['remember']){
if(isset($_COOKIE['remember_me'])){
$past = time() - 100;
setcookie(remember_me, gone, $past);
}
}
$year = time() + 31536000;
setcookie('remember_me', $_POST['username'], $year);
//call the retrieve_salt() function
$result = retrieve_salt($username);
//retrieve the random salt from the database
$salt = $result['salt'];
//generate the hashed password with the salt value
$password = hash('sha256', $password.$salt);
//call the login() function
$count = login($username, $password);
//if there is one matching record
if($count == 1)
{
//start the user session to allow authorised access to secured web pages
$_SESSION['user'] = $user;
//if login is successful, create a success message to display on the products page
$_SESSION['success'] = 'Hello ' . $username . '. Have a great day!';

//redirect to products.php
header('location:../view/products.php');
}
else
{
//if login not successful, create an error message to display on the login page
$_SESSION['error'] = 'Incorrect username or password. Please try again.';
//redirect to login.php
header('location:../view/index.php');
}
?>

任何帮助或提示都将不胜感激。

如果它说Notice: Undefined index: username,则说明初始化有问题。

在你的第一个文件中,首先将$_COOKIE[]设置为一个空字符串,因为它还没有初始化,所以把它放在你的html视图中肯定会给你一个错误。。。

$_COOKIE['remember_me'] = "";

在代码的第一部分,我想知道你为什么这样写,因为我相信它会在if中声明一个空的年份变量,从而导致错误,相反,你应该有这个

if($_POST['remember']){
$year = time() + 31536000;
setcookie('remember_me', $_POST['username'], $year);
}
elseif(!$_POST['remember']){
if(isset($_COOKIE['remember_me'])){
$past = time() - 100;
setcookie(remember_me, gone, $past);
}
}

最新更新