Imran Hussain
Imran Hussain

Reputation: 7

Session not working for first time, from second time it works

I don't know what is the problem. When I do login for first time after deleting all history and cookies and cache, it doesn't set session to redirected page. But when I do login for second time, session is set to redirected page. Here id the code of First & second page.

First Page

<?php
session_start();
include('includes/connection.php');
$email=$_POST['email'];
$password=$_POST['password'];

$data=mysqli_query($GLOBALS["___mysqli_ston"], "select * from  user_registration where email='$email' and password='$password' ");
$data1=mysqli_num_rows($data);
$val=mysqli_fetch_array($data);

if($data1>0)
{
   $_SESSION['user_id']=$val['user_id'];
   echo "<script>window.location.href='index.php'</script>";

}
else
{
    echo "<script>window.location.href='login.php'</script>";

}
?>

Second Page

<?php 
  session_start();
  $val=$_SESSION['user_id'];
  echo $val;
?>

Upvotes: 0

Views: 2683

Answers (3)

t3ch
t3ch

Reputation: 1

same happening here. is php 5.6 is super strange problem. on some pages work normaly and on one dont. First request is like dont get recognized.. :) for example: set #when page load set: $_SESSION['a']=0;

#then with JS requests increase $_SESSION['a']+=1; and this start working on third request...

Upvotes: 0

Tarik
Tarik

Reputation: 4536

session_start(); should be at the very top of both scripts!

Session variables are saved on server and assigned a unique code that are passed to browser in cookies.

Because the cookies are set by the headers they need to be sent before anything else!

Even a whitespace at the top of your script may cause session cookie to be not properly set on browser side.

So always start the both scripts like this:

<?php
session_start();

// Rest of the code....

It looks like they are on top on your question but I think you edited question later to put there.

That's the only reason sessions are not working the first time and they are working on second time.

Upvotes: 2

user5491906
user5491906

Reputation:

instead of the echo use

header("Location: index.php");

EDIT

alsosession_start should be declared at the top of the first page because you cant set a session that doesn't exist in the context if you were running it in a console environment you would receive the following error "$_SESSION['user_id'] does not exist in the current context"

Upvotes: 0

Related Questions