Отдельного пользователя с cookie - PullRequest
0 голосов
/ 05 августа 2020

Если имя пользователя и пароль верны, выполняется перенаправление в профиль. php. Я использую cook ie для разделения пользователя в профиле. php. Подходит? Если нет, посоветуйте мне, как я кодирую. Я не хочу использовать метод get, если это возможно.


<?php

  include('config.php');

  $cookie = isset($_COOKIE['cookie']);

  if($cookie) { header('Location: profile.php'); }

  else {

    echo '<link rel="stylesheet" href="../css/user.css">
          <link rel="stylesheet" href="../css/all.css">

          <div id="center"><div id="login-area">Login Here<br><br><form method="post">

          <i class="fa fa-user"></i>
          <input type="text" id="usr-pass" autocomplete="off" placeholder="Username" name="user"><hr><br>

          <i class="fa fa-lock"></i>
          <input type="password" id="usr-pass" autocomplete="off" placeholder="Password" name="pass"><hr><br>

          <input type="submit" id="login" value="Login" name="login">

          </form></div></div>
    ';

    if(isset($_POST['login'])) {

      if(!empty($_POST['user']) && !empty($_POST['pass'])) {

        $user = $_POST['user'];
        $pass = $_POST['pass'];

        $query = 'SELECT password FROM user WHERE username = ?';

        $stmt = $conn -> prepare($query);
        $stmt -> bind_param('s', $user);
        $stmt -> execute();
        $stmt -> store_result();

        if($stmt -> num_rows > 0) {

          $stmt -> bind_result($password);
          $stmt -> fetch();

          if($password == $pass) {

            setcookie('cookie', $user);
            header('Location: profile.php');

          } else { header('Location: login.php'); } //echo 'wrong password';
        } else { header('Location: login.php'); } //echo 'account not exist';
      } else { header('Location: login.php'); } //echo 'input both username & password';
    }
  }
?>

<!-- This is profile.php -->

<?php

  include('config.php');

  $cookie = isset($_COOKIE['cookie']);

  if(!$cookie) { header('Location: login.php'); }

  else {

    $username = $_COOKIE['cookie'];

    $sql = 'SELECT id, email, birthday, work FROM user WHERE username = ?';

    $stmt = $conn -> prepare($sql);
    $stmt -> bind_param('s', $username);
    $stmt -> execute();
    $stmt -> store_result();
    $stmt -> bind_result($id, $email, $birthday, $work);
    $stmt -> fetch();

    //show data here.
  }

?>```

1 Ответ

0 голосов
/ 05 августа 2020

Использовать сеансы.

В верхней части файла, перед отправкой любого вывода, добавьте session_start();

После аутентификации пользователя (имя пользователя и пароль находятся в database), установите переменную сеанса следующим образом: $_SESSION['logged_id'] = true;

Для каждой страницы, на которой люди должны войти в систему для просмотра, поместите session_start(); вверху файла, и вы можете проверить, зарегистрирован ли человек в с:

if (isset($_SESSION['logged_in'])) {
    echo 'Logged in!;
}

или

<?php if (isset($_SESSION['logged_in'])) : ?>
    Logged in
<?php endif ?>

Документация / примеры: https://www.php.net/manual/en/session.examples.basic.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...