Как написать куки для сессии, чтобы сохранить сессию при переходе на другую страницу - PullRequest
0 голосов
/ 05 мая 2019

На моем веб-сайте после входа пользователей и перехода на другую страницу их сеанс теряется, а при переходе на предыдущую страницу (где был создан сеанс) страница пуста, очевидно, потому что сеанс потерян

У меня есть две страницы

  1. Account.php (где сеанс создается после входа в систему)
      <li class="nav-item">
        <a class="nav-link " href="Options.php">Go to options</a>
      </li>

    <?php 
      //Start of session
      session_start();

      //Setting up databse connection
      require_once 'databaseconnection.php'; 
      $conn = mysqli_connect($db_hostname, $db_username, $db_password,$db_database);
      if($conn->connect_error){
         die("CONNECTION FAILED:".$conn->connect_error);
      }

      //Getting phone number and pasword provided by user in the login page (Not included in this)
      if (isset($_POST['lpho']) &&          
          isset($_POST['lpass'])){ 
          $lpho   = get_post('lpho');  
          $lpass= get_post('lpass'); 

      //Getting user information from database
       $q="SELECT * FROM members WHERE phone='$lpho'";

       if($q) {
       //If record exists 
       $querymember = "SELECT * FROM members WHERE phone='$lpho' "; 
       $memberidentity = mysqli_query($conn,$querymember);
       //To get number of rows
       $rowsno = $memberidentity->num_rows;
       //To fetch specific member column from database as an array
       $memberrecords = $memberidentity->fetch_array(MYSQLI_NUM);

       $count=$rowsno;

       if($count>0){
       //$reqpass is user's password from the database which is specific to array no [7]
       $reqpass = $memberrecords[7];
       //If given password matches the required password...
       if($lpass==$reqpass){
         //Session details passed
         /*How do I put these in a cookie then load them on my next page */
         $_SESSION['lpho'] = $lpho;
         $_SESSION['lpass'] = $lpass;
       }
      } 
     }
    }
    ?>

Options.php (где сеанс умирает, когда пользователь переходит на него)

Итак, вкратце мой вопрос, как я могу создать cookie в Account.php, который сохраняетlpho (телефон) и lpass (пароль) затем загружают его в Options.php, когда пользователь переходит на него.

<?php
    echo "This is the options page";
?>

1 Ответ

0 голосов
/ 05 мая 2019

Использование сессий в PHP с файлами cookie основывается на отправке файлов cookie в заголовках страницы.Это означает, что session_start() должно происходить перед любым выводом со страницы (так как любой вывод приводит к отправке заголовков, и они могут отправляться только один раз на страницу).В вашем файле Account.php первое, что вы делаете, выводите свой блок <li>, что приведет к ошибке headers already sent, когда вы попытаетесь установить cookie с помощью session_start().Переместите session_start() в начало каждого файла PHP, и это должно решить эту проблему.Например, в этом файле:

<?php 
  //Start of session
  session_start();
?>
<li class="nav-item">
    <a class="nav-link " href="Options.php">Go to options</a>
</li>

<?php 
  //Setting up databse connection
  require_once 'databaseconnection.php'; 

Обратите внимание, что хранение паролей в виде простого текста - очень плохая идея (в вашем случае, как в вашей базе данных, так и в файле сеанса на сервере).Вы должны использовать функции PHP password_hash и password_verify для хранения и проверки паролей.

...