Создание профиля пользователя с php куки - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь создать профиль пользователя, который использует куки для хранения информации о пользователе. Прямо сейчас я не использую базу данных, только переменные сессии и куки. До сих пор у меня действительный вход в систему работал нормально, и у меня один из файлов cookie работает так, как должен. Я хочу взять информацию, связанную с каждым тестовым пользователем, и передать ее, если он вошел в систему, и отобразить ее в своем профиле пользователя. У меня есть два файла, войдите в систему. php:

<?php

//Start PHP session

session_start();

//Arrays of valid user information.
$logins = array("test", "odyssey", "sheppard", "rmckay");
$passwords = array("123", "sgPB3865", "PuddleJump", "16431879196842");
$usernames = array("Test User", "Paul Emerson", "John Sheppard", "Rodney McKay");
$emails = array("bwingham1@artisteer.com", "sdibsdale2@vkontakte.ru", "jpaolini3@epa.gov","dvesco4@cafepress.com");

//multidimensional array added afterwards to see if it would work better, currently unused
$userLogins = array (
    array("test", "123", "Test User", "bwingham1@artisteer.com"),
    array("odyssey", "sgPB3865", "Paul Emerson", "sdibsdale2@vkontakte.ru"),
    array("sheppard", "PuddleJump", "John Sheppard", "jpaolini3@epa.gov"),
    array("rmckay", "16431879196842", "Rodney McKay", "dvesco4@cafepress.com")
);

//Check if the form has been submitted

if(strtoupper($_SERVER['REQUEST_METHOD']) === 'POST') {
    if (isset($_POST['pass']) && isset($_POST['user'])) {

        //Username and password has been submitted by the user
        //Receive and sanitize the submitted information

        $user = trim(htmlspecialchars($_POST['user']));
        $passwd = trim(htmlspecialchars($_POST['pass']));

        $arr_len = count($usernames);

        //Predefine variables
        $validationed = false;
        $err_msg = "";


        //Loop through the array to see if there is a valid login/password combination
        for($cnt=0; $cnt<$arr_len; $cnt++) {
            if ($user == $logins[$cnt] && $passwd == $passwords[$cnt]) {
                $_SESSION['authenticated'] = true;
                $_SESSION['login_name'] = $user;
                $_SESSION['user_email'] = $emails[cnt];
                $_SESSION['login_time'] = time();
                $_SESSION['user_name'] = $usernames[cnt];
                $validationed = true;
            }
        }


        if ($validationed === false) {
            // If the loop completes without finding a valid login, set the error message.
            $err_msg = "Invalid Login...Please Try Again";
        } else {

            header("Location: travel.php");
            exit();
        }

    }

} else {

    session_destroy();
    session_unset();
    session_start();
}




?>

<!DOCTYPE html>

<html>
  <head>
        <link rel="stylesheet" href="loginStyles.css">
  </head>
  <body id="LoginForm">

    <div class="container">
      <div class="login-form">
        <div class="main-div">
          <div class="panel">
            <h1>Login</h1>
            <p>Please enter your username and password</p>

          </div>
          <?php
            //If $err_msg is set, display the message
            if(isset($err_msg)) {
              echo('<div class="alert alert-danger" role="alert">');
              echo('  <strong>' . $err_msg . '</strong>');
              echo('</div>');
            }
          ?>
          <!--actual login form-->
          <form id="Login" action="login.php" method="post">

            <div class="form-group">
              <input type="username" class="form-control" name="user" placeholder="Username">
            </div>
            <div class="form-group">
              <input type="password" class="form-control" name="pass" placeholder="Password">
            </div>
            <button type="submit" class="btn btn-primary">Login</button>
          </form>
        </div>
      </div>
    </div>

  </body>
</html>

Это прекрасно работает, когда дело доходит до входа и выхода, но единственный повар ie, которого я смог передать net page is

$_SESSION['login_name'] = $user;

, потому что он использует фактический пользовательский ввод. профиль. php выглядит следующим образом (за исключением того, что не слишком длинная навигационная панель и другие стили):

<?php 
error_reporting(E_ALL); ini_set('display_errors', 1);

require_once("auth_check.php"); 

$user = $_SESSION['login_name']; // <-- Works fine
$usernames = $_SESSION['user_name']; // <-- took no user input, so it does not work

setcookie("user_cookie", $user, time() + (86400 * 30), "/");
setcookie("username_cookie", $usernames, time() + (86400 * 30), "/");


?>

<html>
    <body>

           <?php
                echo "Username: " . $_COOKIE["user_cookie"];
                echo "Name: " . $_COOKIE["username_cookie"];
            ?>
    </body>
</html

Так что я думаю, что я хочу знать, если я вошел в систему с помощью " test ", как я могу передать" Test User "и" bwingham1@artisteer.com "в виде файлов cookie на страницу профиля без жесткого кодирования чего-либо?

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