web-dev-qa-db-fra.com

Utilisation de sessions et de variables de session dans un PHP Script de connexion

Je viens de finir de créer un login complet et d'enregistrer un système en PHP, mais le problème est que je n'ai pas encore utilisé de session. Je suis un peu un débutant dans PHP et je n'ai jamais utilisé de session auparavant. Ce que je veux faire, c'est que, une fois que l'utilisateur s'est inscrit et a rempli le formulaire de connexion, il reste actif. Ainsi, il y aura une partie de ce qui sera si la session est connectée et l'autre partie sera (l'utilisateur n'est pas connecté, affichez le formulaire de connexion) Quelqu'un peut-il me dire comment commencer? ?

37
Penian4

J'espère que cela t'aides :)

commence la session, vous devez le dire en haut de la page ou avant d'appeler le code de session

 session_start(); 

mettre un identifiant d'utilisateur dans la session pour savoir qui est connecté

 $_SESSION['user'] = $user_id;

Vérifier si quelqu'un est connecté

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

Trouver l'ID utilisateur connecté

$_SESSION['user']

Donc sur votre page

 <?php
 session_start();


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

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

voici le code de session le plus simple utilisant php. Nous utilisons 3 fichiers.

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");
?>
22
Rahul

Tout d’abord, la PHP documentation contient --- informations excellentes sur sessions .

Deuxièmement, vous aurez besoin d’un moyen de stocker les informations d’identité de chaque utilisateur de votre site Web (par exemple, une base de données). Il est judicieux de ne pas stocker les mots de passe sous forme de texte brut lisible par l'homme et non crypté. Lorsque vous stockez des mots de passe, vous devez utiliser la fonction de hachage crypt() de PHP. Cela signifie que si des informations d'identification sont compromises, les mots de passe ne sont pas facilement disponibles.

La plupart des systèmes de connexion hachaient/chiffraient le mot de passe saisi par l'utilisateur, puis comparaient le résultat avec le hachage du système de stockage (base de données, par exemple) pour le nom d'utilisateur correspondant. Si le hachage du mot de passe entré correspond au hachage stocké, l'utilisateur a entré le mot de passe correct.

Vous pouvez utiliser des variables de session pour stocker des informations sur l’état actuel de l’utilisateur - qu’elles soient ou non connectées. Si elles le sont, vous pouvez également stocker leur ID utilisateur unique ou toute autre information dont vous avez besoin.

Pour démarrer une session PHP, vous devez appeler session_start() ). De même, pour détruire une session et ses données, vous devez appeler - session_destroy() (par exemple, lorsque l'utilisateur se déconnecte):

// 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();

Je vous recommande également de jeter un coup d'œil à this. Vous y trouverez des informations utiles et faciles à suivre sur la création d’un système de connexion simple.

8
Xenon

Je fais toujours OOP et utilise cette classe pour maintenir la session afin que vous puissiez utiliser la fonction is_logged_in pour vérifier si l'utilisateur est connecté ou non, et sinon faites ce que vous voulez.

<?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();
?>
5
Alsaket
//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;
}
0
David Jaw Hpan