Вопрос по php, session – Использование сессий и переменных сессий в скрипте входа в PHP

33

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

Ничего такого не было раньше. Проверять, выписыватьсяphp.net's session documentationэто отличное место для начала:] orourkek
Также попробуйте это9lessons.info/2009/09/php-login-page-example.html The Alpha
& quot; Если вы можете представить целую книгу, которая отвечает на ваш вопрос, вы слишком много спрашиваете. & quot; -StackOverflow FAQ  Чтобы уточнить, ваш вопрос слишком широк. orourkek
Также посмотрите на этоphpro.org/tutorials/Introduction-To-PHP-Sessions.html The Alpha

Ваш Ответ

8   ответов
-2
$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;
}
19

Мы используем 3 файла.

login.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>

home.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>

logout.php

<?php
 session_start();

  echo "Logout Successfully ";
  session_destroy();   // function that Destroys Session 
  header("Location: Login.php");
?>
-2
$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']))     
  {
  }
5

чтобы вы могли использовать функцию 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();
?>
Спасибо, это хорошее начало, но следует расширить свой класс для аутентификации пользователей с помощью электронной почты;)
0
//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;
}
Кстати, вы хотели бы хешировать и посолить пароль на этом. Затем хеш и солью ввод для сравнения.
8

отличная информация насессий.

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

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

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

Чтобы начать сеанс 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();

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

PHP 5.5 введенpassword hashing functions (с доступным кодом совместимости 5.3.7), который следует использовать для генерации и проверки хэша пароля. Эти функции устраняют ошибки безопасности, которые могут делать некоторые программисты при использованииcrypt() или другие PHP-функции общего хеширования. Подробнее о том, почему следует использовать password_hash () вместо crypt (), смотритеrfc:password_hash
Ссылка внизу вашего ответа (эта) теперь не работает. Можете ли вы предоставить постоянную ссылку на этот ресурс?
77

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

 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
 }
хороший, простой, читаемый код. Просто идеально
0

нса.

session_start(); 

Похожие вопросы