Как создать сеанс, который показывает имя пользователя, когда человек входит в систему с помощью электронной почты и пароля - PullRequest
0 голосов
/ 29 декабря 2018

Я создал форму входа в систему, в которой есть адрес электронной почты и пароль, но я хочу, чтобы на следующей странице отображалось имя пользователя вместо адреса электронной почты, например, «добро пожаловать», samuel.как применять сеансы.

Я пытался создать имя сеанса, но он не принимает.Что я могу сделать для того, чтобы отображалось достаточное имя пользователя без необходимости включать текстовое поле ввода имени пользователя в форму входа

   session_start();

if (isset ($ _ POST ['login'])) {

           $email = mysqli_real_escape_string($db,$_POST['email']);
            $password = 
              mysqli_real_escape_string($db,$_POST['password']);
           $mobile = mysqli_real_escape_string($db,$_POST['mobile']);

       if (empty($email or $mobile)) {
        array_push($errors, "Email Or mobile number is required");
           }
        if (empty($password)) {
    array_push($errors, "Password is required");
      }
        if (count($errors) == 0) {
            $password = md5($password);
          $query = "SELECT * FROM farmers WHERE (email='$email' OR 
           mobile='$mobile') AND password='$password'";
           $result = mysqli_query($db,$query);
             if(mysqli_num_rows($result)==1){


        $_SESSION['email'] = $email;
        $email=$_SESSION['username'];
        $_SESSION['sucess'] = "You are now logged in";
        header('location: account_activation.php');//redirect to 
       survey
        }else{

        array_push($errors, "Wrong email/Mobile number or 
         Password combination");

         }

         }

         }





   //account_activation.php
   <?php include('server.php');

     if (empty($_SESSION['username'])) {
   header('location: login.php');
     }
   ?>

      <!DOCTYPE html>
     <html>
    <head>
      <meta charset="UTF-8">
      <meta name="description" content="">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial- 
      scale=1, 
   shrink-to-fit=no">
  <title>Account Activation</title>
  <link rel="stylesheet" 


    </style>

       <link rel="stylesheet" type="text/css" href="survey.css">
   </head>
      <body>
   <div class="header">
    <h2>Account activation</h2>
    </div>
     <div class="content">
     <?php if (isset($_SESSION['success'])):?>
        <div class="error success">
        <h3>
            <?php
            echo $_SESSION['success'];
            unset($_SESSION['success']);
              ?>
        </h3>

         </div>

        <?php endif ?>
       <?php if (isset($_SESSION["username"])): ?>
       <p>Welcome <strong><?php echo $_SESSION['username']; ?></strong> 
      </p>
       <p><a href="survey.php?logout='1'" style="color: red;">LogOut</a> 
      </p>
       <?php endif ?>

1 Ответ

0 голосов
/ 29 декабря 2018

Это будет выглядеть так:

<?php

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

    $email = mysqli_real_escape_string($db, $_POST['email']);
    $password = mysqli_real_escape_string($db, $_POST['password']);
    $mobile = mysqli_real_escape_string($db, $_POST['mobile']);

    if (empty($email) || empty($mobile)) {
        array_push($errors, "Email Or mobile number is required");
    }
    if (empty($password)) {
        array_push($errors, "Password is required");
    }

    if (count($errors) == 0) {

        $password = md5($password);
        $query = "SELECT * FROM farmers WHERE (email='$email' OR mobile='$mobile') AND password='$password'";
        $result = mysqli_query($db, $query);

        if (mysqli_num_rows($result) == 1) {

            $_SESSION['email'] = $result['email'];
            $_SESSION['username'] = $result['username'];
            $_SESSION['loggedin'] = "1";
            header('location: account_activation.php'); //redirect to survey

        } else {

            array_push($errors, "Wrong email/Mobile number or Password combination");

        }

    }

}

?>



//account_activation.php
<?php
include ('server.php');

if ($_SESSION['loggedin'] != "1") {
    header('location: login.php');
    exit();
}
?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8"/>
    <meta name="description" content=""/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial- scale=1, shrink-to-fit=no"/>
    <title>Account Activation</title>
    <link rel="stylesheet" type="text/css" href="survey.css"/>
</head>
<body>
    <div class="header">
        <h2>Account activation</h2>
    </div>
    <div class="content">
        <?php
        if (isset($_SESSION['loggedin'])):
            ?>
            <div class="error success">
                <h3>You're logged in</h3>
            </div>

            <?php
        endif;
        ?>
        <?php
            if (isset($_SESSION["username"])):
            ?>
            <p>Welcome <strong><?= $_SESSION['username']; ?></strong> </p>
            <p><a href="survey.php?logout='1'" style="color: red;">LogOut</a> </p>
            <?php
        endif;
        ?>

Чтобы получить имя пользователя из таблицы, вам нужно использовать это: $ result ['username'];(Предполагается, что в таблице фермеров есть столбец с именем пользователя.)

Чтобы отобразить имя пользователя, используйте короткие теги (необходимо включить в php.ini)

Не забудьте выйти() после перенаправления заголовка.Хакер может заблокировать запрос на перенаправление и увидеть страницу ниже.Всегда блокируйте исполнение.Это также быстрее, так как сервер не загружает всю страницу.

Также я заметил, что ошибка PHP

if (empty($email or $mobile))

должна быть

if (empty($email) || empty($mobile))

У вас было несколько HTMLошибки тоже.Самозакрывающиеся теги HTML должны быть закрыты следующим образом:

<meta name="description" content=""/>

Обратите внимание на / в конце.

Последний комментарий ... Ваша идентификация ужасна ... Это очень плохопривычка.Вы явно начинаете с кодирования, и вам действительно следует приложить некоторые усилия.

Этот ваш вопрос мог бы быть решен путем поиска в Google «Как получить данные из MySQL с помощью mysqli_query ()».

Stack - это не веб-сайт, на котором мы делаем всю работу за вас.Если вы задаете вопрос, убедитесь, что вы показали, что вы пробовали и в чем проблема.«Как вы это делаете» без предоставления кода того, что вы попробовали, не подходит для данного сайта.В любом случае, удачи в вашем путешествии!

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