Hi everyone.
I'm having a problem with my PHP session vars getting lost or not writing info at all.
So here's a couple of information.
1. IT IS WORKING on my localhost NT machine.
2. Where it's not working it's on my client host server. (FATCOW host at fatcow.com)
3. Host server is using PHP : 4.4.8
So basically I have a html login page (login.php)
Then login.php send info to (login-exec.php) (Here I check my database to see if username exist and if so redirect using header...
Then the redirection goes to a "member page" where I require('auth.php') to check if session exist if no I get redirected to ACCESS DENIED PAGE
And there's the problem, it always give me the access denied page.
So here's my code.
login-exec.php
<?php
//Start session
session_start();
//Include database connection details
require_once('../Connections/golf_stats.php');
//Array to store validation errors
$errmsg_arr = array();
//Validation error flag
$errflag = false;
//Connect to mysql server
$link = mysql_connect($hostname_golf, $username_golf_stats, $password_golf_stats);
if(!$link) {
die('Failed to connect to server: ' . mysql_error());
}
//Select database
$db = mysql_select_db($database_golf_stats, $golf_stats);
if(!$db) {
die("Unable to select database");
}
//Function to sanitize values received from the form. Prevents SQL injection
function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return mysql_real_escape_string($str);
}
//Sanitize the POST values
$login = clean($_POST['login']);
$password = clean($_POST['password']);
//Input Validations
if($login == '') {
$errmsg_arr[] = 'Login ID missing';
$errflag = true;
}
if($password == '') {
$errmsg_arr[] = 'Password missing';
$errflag = true;
}
//If there are input validations, redirect back to the login form
if($errflag) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
session_write_close();
header("location: login.php");
exit();
}
//Create query
mysql_select_db($database_golf_stats, $golf_stats);
$query_members = "SELECT * FROM members WHERE username = '$login'";
$list_members = mysql_query($query_members, $golf_stats) or die(mysql_error());
$row_members = mysql_fetch_assoc($list_members);
$totalRows_members = mysql_num_rows($list_members);
//Check whether the query was successful or not
if($list_members) {
if($totalRows_members == 1) {
//Login Successful
$_SESSION['SESS_MEMBER_USERNAME'] = $row_members['username'];
$_SESSION['SESS_JOUEUR_ID'] = $row_members['idJoueur'];
$_SESSION['SESS_JOUEUR_NAME'] = $row_members['name'];
session_write_close();
header("location: ../members/members-index.php");
exit();
}else {
//Login failed
header("location: login-failed.php");
exit();
}
}else {
die("Queryisfailed");
}
?>
-
- <?php
- //Start session
- session_start();
-
- //Include database connection details
- require_once('../Connections/golf_stats.php');
-
- //Array to store validation errors
- $errmsg_arr = array();
-
- //Validation error flag
- $errflag = false;
-
- //Connect to mysql server
- $link = mysql_connect($hostname_golf, $username_golf_stats, $password_golf_stats);
- if(!$link) {
- die('Failed to connect to server: ' . mysql_error());
- }
-
- //Select database
- $db = mysql_select_db($database_golf_stats, $golf_stats);
- if(!$db) {
- die("Unable to select database");
- }
-
- //Function to sanitize values received from the form. Prevents SQL injection
- function clean($str) {
- $str = @trim($str);
- if(get_magic_quotes_gpc()) {
- $str = stripslashes($str);
- }
- return mysql_real_escape_string($str);
- }
-
- //Sanitize the POST values
-
- $login = clean($_POST['login']);
- $password = clean($_POST['password']);
-
- //Input Validations
- if($login == '') {
- $errmsg_arr[] = 'Login ID missing';
- $errflag = true;
- }
- if($password == '') {
- $errmsg_arr[] = 'Password missing';
- $errflag = true;
- }
-
- //If there are input validations, redirect back to the login form
- if($errflag) {
- $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
- session_write_close();
- header("location: login.php");
- exit();
- }
-
- //Create query
- mysql_select_db($database_golf_stats, $golf_stats);
- $query_members = "SELECT * FROM members WHERE username = '$login'";
- $list_members = mysql_query($query_members, $golf_stats) or die(mysql_error());
- $row_members = mysql_fetch_assoc($list_members);
- $totalRows_members = mysql_num_rows($list_members);
-
- //Check whether the query was successful or not
- if($list_members) {
- if($totalRows_members == 1) {
- //Login Successful
- $_SESSION['SESS_MEMBER_USERNAME'] = $row_members['username'];
- $_SESSION['SESS_JOUEUR_ID'] = $row_members['idJoueur'];
- $_SESSION['SESS_JOUEUR_NAME'] = $row_members['name'];
-
- session_write_close();
- header("location: ../members/members-index.php");
- exit();
- }else {
- //Login failed
- header("location: login-failed.php");
- exit();
- }
- }else {
- die("Queryisfailed");
- }
- ?>
-
And here's my AUTH.php file
<?php
session_start();
//Check whether the session variable SESS_MEMBER_ID is present or not
if(!isset($_SESSION['SESS_MEMBER_USERNAME'])) {
header("location: ../login/access-denied.php");
exit();
}
?>
-
- <?php
- session_start();
-
- //Check whether the session variable SESS_MEMBER_ID is present or not
- if(!isset($_SESSION['SESS_MEMBER_USERNAME'])) {
- header("location: ../login/access-denied.php");
- exit();
- }
- ?>
-
I've seen 1000 of posts with people having the same problem, but I can't resolve my issue.
I did use
session_write_close(); before the header redirection.
I did use session_start() for every pages that uses $SESSION['xxx']
Again like I said, it works on my localhost machine.
Thank you very much in advance for your help.