Cookies记住我的问题PHP

时间:2018-07-19 06:32:23

标签: php cookies pdo

我绝对是个泡菜。 我想创建一个记住我的cookie。根据网上的指南,我假设我需要添加:

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:\Users\Bob\Desktop\Xammp\htdocs\Shopping_List\view\index.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');
    }
?>

任何帮助或技巧都将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果显示Notice: Undefined index: username,则说明初始化存在问题。

在您的第一个文件中,首先将$ _COOKIE []设置为空字符串,因为它尚未初始化,因此将其放入html视图肯定会给您一个错误...

$_COOKIE['remember_me'] = "";

在代码的第一部分,我想知道为什么要这样写,因为我相信如果在if中声明一个空的year变量,它将抛出一个错误,相反,您应该拥有这个

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);
    }
}