I’m logging in a user with a jQuery $.post AJAX request and in the ajax.php im setting the $_SESSION[‘login’] variable (the session_start() was called in index.php) along with other login stuff, however when I try reference the $_SESSION[‘login’] variable on other pages then it is not set…
this is my POST code
$.post('/assets/ajax/ajaxLogin.php',{username: $('[name=username]').val()
,password: $('[name=password]').val()},function(data){
if(data.success)
{
location.href=data.redirect;
}
else
{
$('#errorConsole').html(data.message).slideDown();
}
},'json');
and in ajaxLogin.php i am setting $_SESSION[‘login’]=”1″. So ajax script logs the user in if they have the right info, but when they are redirected to dashboard.php, I try to echo $_SESSION[‘login’] and I get an error,
Am I not setting the $_SESSION correctly, or will the ajax request not set variables globally??
this is the ajaxLogin.php
<?php
if(!include('../../config.php')){
echo 'include failure';
}
if($_POST){
$myusername=$_POST['username'];
$mypassword=$_POST['password'];
// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM users WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
if($count==1)
{
$_SESSION['login'] = 1;
$data['success'] = true;
$data['redirect'] = '/dashboard.php';
}
else
{
$data['success'] = false;
$data['message'] = "Your info is wrong....";
}
echo json_encode($data);
}
?>
and also here is dashboard.php
<?php
include('includes.php');
?>
<?php
if(!isLoggedIn())
{
echo 'You are not logged in';
}
else
{
echo 'You are logged in';
}
?>
and isLoggedIn() is:
function isLoggedIn(){
if (isset($_SESSION['login'])){
return 1;
}
else
{
return 0;
}
}
You need to call
session_start()on every page that uses sessions (and before you use them). This includes each file used in an AJAX request as well as the dashboard.php file.Note: doesn’t apply to files included with
include/require.