Использование сеансов и переменных сеанса в скрипте входа PHP


Я только что закончил создавать целую систему входа и регистрации в PHP, но моя проблема в том, что я еще не использовал ни одной сессии. Я вроде как новичок в PHP и никогда раньше не использовал сессии. Что я хочу сделать, так это после того, как пользователь зарегистрируется и заполнит форму входа, они все равно останутся на той же странице. Таким образом, будет одна часть, которая будет, если сеанс logged_in, а другая часть будет else (пользователь не вошел в систему, поэтому отобразите форму входа). Кто-нибудь может мне сказать с чего начать?

8 32

8 ответов:

Надеюсь, это поможет :)

Начинается сеанс, вам нужно сказать это в верхней части страницы или перед вызовом кода сеанса

 session_start(); 

Введите идентификатор пользователя в сеанс, чтобы отслеживать, кто вошел в систему

 $_SESSION['user'] = $user_id;

Проверьте, вошел ли кто-нибудь в систему

 if (isset($_SESSION['user'])) {
   // logged in
 } else {
   // not logged in
 }

Найдите идентификатор пользователя, вошедшего в систему

$_SESSION['user']

Итак, на Вашей странице

 <?php
 session_start();


 if (isset($_SESSION['user'])) {
 ?>
   logged in HTML and code here
 <?php

 } else {
   ?>
   Not logged in HTML and code here
   <?php
 }

Вот самый простой код сеанса с использованием php. Мы используем 3 файла.

Вход в систему.php

<?php  session_start(); ?>  // session starts with the help of this function 

<?php

if(isset($_SESSION['use']))   // Checking whether the session is already there or not if 
                              // true then header redirect it to the home page directly 
 {
    header("Location:home.php"); 
 }

if(isset($_POST['login']))   // it checks whether the user clicked login button or not 
{
     $user = $_POST['user'];
     $pass = $_POST['pass'];

      if($user == "Ank" && $pass == "1234")  // username is  set to "Ank"  and Password   
         {                                   // is 1234 by default     

          $_SESSION['use']=$user;


         echo '<script type="text/javascript"> window.open("home.php","_self");</script>';            //  On Successful Login redirects to home.php

        }

        else
        {
            echo "invalid UserName or Password";        
        }
}
 ?>
<html>
<head>

<title> Login Page   </title>

</head>

<body>

<form action="" method="post">

    <table width="200" border="0">
  <tr>
    <td>  UserName</td>
    <td> <input type="text" name="user" > </td>
  </tr>
  <tr>
    <td> PassWord  </td>
    <td><input type="password" name="pass"></td>
  </tr>
  <tr>
    <td> <input type="submit" name="login" value="LOGIN"></td>
    <td></td>
  </tr>
</table>
</form>

</body>
</html>

Домой.php

<?php   session_start();  ?>

<html>
  <head>
       <title> Home </title>
  </head>
  <body>
<?php
      if(!isset($_SESSION['use'])) // If session is not set then redirect to Login Page
       {
           header("Location:Login.php");  
       }

          echo $_SESSION['use'];

          echo "Login Success";

          echo "<a href='logout.php'> Logout</a> "; 
?>
</body>
</html>

Выхода.php

<?php
 session_start();

  echo "Logout Successfully ";
  session_destroy();   // function that Destroys Session 
  header("Location: Login.php");
?>

Во-первых, документация PHP имеет некоторые отличная информация на сеансах .

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

Большинство систем входа в систему хэшируют/криптуют пароль, который вводит пользователь, а затем сравнивают результат с хэшем в системе хранения (например, в базе данных) для соответствующего имени пользователя. Если хэш введенного пароля совпадает с сохраненным хэшем, то пользователь ввел правильный пароль.

Вы можете использовать переменные сеанса для хранения информации о текущем состоянии пользователя - например, вошли ли они в систему или нет, и если да, то вы также можете хранить их уникальный идентификатор пользователя или любой другой информация, которая вам нужна, легко доступна.

Чтобы начать сеанс PHP, вам нужно позвонить session_start(). Аналогично, чтобы уничтожить сеанс и его данные, вам нужно позвонить session_destroy() (например, когда пользователь выходит из системы):

// Begin the session
session_start();

// Use session variables
$_SESSION['userid'] = $userid;

// E.g. find if the user is logged in
if($_SESSION['userid']) {
    // Logged in
}
else {
    // Not logged in
}

// Destroy the session
if($log_out)
    session_destroy();

Я бы также рекомендовал вам взглянуть на это. Там есть хорошая, простая в использовании информация о создании простой системы входа в систему.

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

<?php
class Session
{
private $logged_in=false;
public $user_id;

function __construct() {
    session_start();
    $this->check_login();
if($this->logged_in) {
  // actions to take right away if user is logged in
} else {
  // actions to take right away if user is not logged in
}
}

public function is_logged_in() {
   return $this->logged_in;
}

public function login($user) {
// database should find user based on username/password
if($user){
  $this->user_id = $_SESSION['user_id'] = $user->id;
  $this->logged_in = true;
  }
}

public function logout() {
unset($_SESSION['user_id']);
unset($this->user_id);
$this->logged_in = false;
}

private function check_login() {
if(isset($_SESSION['user_id'])) {
  $this->user_id = $_SESSION['user_id'];
  $this->logged_in = true;
} else {
  unset($this->user_id);
  $this->logged_in = false;
 }
}

}

$session = new Session();
?>
//start use session

$session_start();

extract($_POST);         
//extract data from submit post 

if(isset($submit))  
{

if($user=="user" && $pass=="pass")

{

$_SESSION['user']= $user;   

//if correct password and name store in session 

}
else {

echo "Invalid user and password";

header("Locatin:form.php");

}

if(isset($_SESSION['user'])) 

{

//your home page code here

exit;
}

Вы должны начать сеанс в верхней части страницы или перед вызовом кода сеанса

session_start(); 
$session_start();

extract($_POST);         
//extract data from submit post 

if(isset($submit))  
{

if($user=="user" && $pass=="pass")

{

$_SESSION['user']= $user;   

//if correct password and name store in session 

}
else {

echo "Invalid user and password";

header("Locatin:form.php");

}

if(isset($_SESSION['user'])) 

{

//your home page code here

exit;
}
$session_start();

extract($_POST);         
//extract data from submit post 

if(isset($submit))  
  {    
    if($user=="user" && $pass=="pass")    
      {     
        $_SESSION['user']= $user;       
        //if correct password and name store in session 
    } else {
        echo "Invalid user and password";
        header("Locatin:form.php")
    }
if(isset($_SESSION['user']))     
  {
  }