unable to get $_SESSION variable

2020-03-18 06:51发布

问题:


In Log-in.php I have

  $email=$_POST['email']; 
  $pass=$_POST['pass'];
  $_SESSION['type'] = 'user';
  $_SESSION['email'] = $email; 
  $_SESSION['pass']=$pass; 
  header('location:./connect.php');

I am getting error like undefined index email for other user log-in, at other side I can log-in as admin here..

I have a log-in form that see rather what kind of log-in is this and pass that type in session in this connect.php its check what kind of type it is and then proceed it was working well but unfortunately getting error can't modify anymore.

log-in form is one form for user, admin and agents, where I am able to log-in as admin but I am not able to login as other it shows error

if(empty($_SESSION))
{
   session_regenerate_id();
   session_start();
}
@mysql_connect('localhost','root','') or die("ERROR in SERVER");
@mysql_select_db('module') or die("ERROR IN DATABASE");

    $_SESSION['start'] = time(); // taking now logged in time

    if(!isset($_SESSION['expire'])){
        $_SESSION['expire'] = $_SESSION['start'] + (60* 60) ; // ending a session in 30 seconds
    }
    $now = time(); // checking the time now when home page starts

    if($now > $_SESSION['expire'])
    {
        session_destroy();

    }

if(!empty($_SESSION['type']))
{
$email = $_SESSION['email'];
$pass = $_SESSION['pass'];
$type = $_SESSION['type'];


// admin login //
if($type == 'admin'){




$admin = mysql_query("SELECT * FROM `admin` WHERE `email` ='$email' ");
$res = mysql_fetch_array($admin);
if($email == "" || $pass == "" || $email != $res['email'] || $pass != $res['pass'])
{
    header('location:./login/login.php');
}

}


// user login //
if($type == 'user')
{
     $email = $_SESSION['email'];
     $pass = $_SESSION['pass'];
     $type = $_SESSION['type'];
    $user = mysql_query("SELECT `id` FROM `users` WHERE `email`='$email' AND `status`='1'");
    $useres = mysql_fetch_array($user);
   // $trail = $useres['date'];
  //  $time = explode("/",$trail);


    if($email != $useres['email'] || $pass != $useres['pass'])

    {
        echo mysql_error();
//        header('location:./login/login.php');
    }

    else if($pass = $useres['pass']){
//        echo '<script> location.replace("./user.php"); </script>';
    }
}


// agent login //
if($type == 'agent')
{

    $email = $_SESSION['email'];
     $pass = $_SESSION['pass'];
     $type = $_SESSION['type'];
    $agent = mysql_query("SELECT `id` FROM `sale_agents` WHERE `email`='$email'");
    $agentres = mysql_fetch_array($agent);
    if($email != $agentres['email'] || $pass != $agentres['pass'])
    {
        header('location:./login/login.php');

    }
    else if($pass = $agentres['pass']){
   //     echo '<script> location.replace("./agent.php"); </script>';
    }
}
}
else{
    header('location:./login/login.php');
}

In one way I am getting error in other way page is also displaying email what to do now?

回答1:

Sessions Step By Step

  1. Defining session before everything, No output should be before that, NO OUTPUT

    <?php
    session_start();
    ?>
    
  2. Set your session in a page and then you have access in that, for example this is page 1.php

    <?php
       //This is page 1 and then we will use session that defined from this page:
        session_start();
        $_SESSION['email]='email@example.com';
    ?>
    
  3. Using and Getting session in 2.php

     <?php
       //In this page I am going to use session:
      session_start();
      if($_SESSION['email']){
      echo 'Your Email Is Here!  :) ';
      }
     ?>
    

NOTE: Comments don't have output.


Maybe answer to your question:

I think you are not setting session, and because of that PHP doesn't know that session variable.

Your login should be like this

  <?php
  session_start();
  $email=$_POST['email']; 
  $pass=$_POST['pass'];
  $_SESSION['type'] = 'user';
  $_SESSION['email'] = $email; 
  $_SESSION['pass']=$pass; 
  header('location:./connect.php');
  ?>


回答2:

Set this code in login.php :

session_start();
$email = $_POST['email'];
$pass = $_POST['pass'];
$_SESSION['type'] = 'user';
$_SESSION['email'] = $email;
$_SESSION['pass'] = $pass;
header('location:./connect.php');

And this one in connect.php :

session_start();
@mysql_connect('localhost', 'root', '') or die("ERROR in SERVER");
@mysql_select_db('module') or die("ERROR IN DATABASE");
$_SESSION['start'] = time(); // taking now logged in time
if (!isset($_SESSION['expire'])) {
    $_SESSION['expire'] = $_SESSION['start'] + (60 * 60);
}
$now = time(); // checking the time now when home page starts
if ($now > $_SESSION['expire']) {
    session_destroy();
    header('location:./login/login.php');
}
if (isset($_SESSION['email']) && !empty($_SESSION['email']) &&
        isset($_SESSION['pass']) && !empty($_SESSION['pass']) &&
        isset($_SESSION['type']) && !empty($_SESSION['type'])) {

    $email = $_SESSION['email'];
    $pass = $_SESSION['pass'];
    $type = $_SESSION['type'];

    // admin login //
    if ($type == 'admin') {
        $admin = mysql_query("SELECT * FROM `admin` WHERE `email`='$email'");
        $res = mysql_fetch_array($admin);
        if ($email == "" || $pass == "" || $email != $res['email'] || $pass != $res['pass']) {
            session_destroy();
            header('location:./login/login.php');
        }
    }

    // user login //
    if ($type == 'user') {
        $user = mysql_query("SELECT `id` FROM `users` WHERE `email`='$email' AND `status`='1'");
        $useres = mysql_fetch_array($user);
        // $trail = $useres['date'];
        //  $time = explode("/",$trail);
        if ($email != $useres['email'] || $pass != $useres['pass']) {
            session_destroy();
            header('location:./login/login.php');
        }
    }

    // agent login //
    if ($type == 'agent') {
        $agent = mysql_query("SELECT `id` FROM `sale_agents` WHERE `email`='$email'");
        $agentres = mysql_fetch_array($agent);
        if ($email != $agentres['email'] || $pass != $agentres['pass']) {
            session_destroy();
            header('location:./login/login.php');
        }
    }
} else {
    header('location:./login/login.php');
}

I hope this will help you.



回答3:

session_start();

$_SESSION["user"] = $result['full_name'];
$_SESSION["user_id"] = $result['user_id'];
$_SESSION["website_type"] = $result['user_id'];

// this is my code ... // i cant access in another page ..

// second page enter code here session_start(); // print_r($_SESSION);

    echo $_SESSION['user'];
    echo $_SESSION['user_id'];
    echo $_SESSION['website_type'];