Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

unable to get $_SESSION variable

this error
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? enter image description here

like image 634
Talha Habib Avatar asked Dec 20 '14 06:12

Talha Habib


1 Answers

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 protected]';
    ?>
    
  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');
  ?>
like image 200
Mohammad Kermani Avatar answered Sep 21 '22 19:09

Mohammad Kermani