Perte de variable session après header
Bonjour,
Alors voilà depuis la mise en ligne de mon site sur un serveur mutualisé ovh, j'ai un problème de perte de variable session.
Je m'explique : Le problème se situe au niveau de ma page de login
Voici un plan du processus :
login.php -> login_proc.php -> cpanel.php
login : Page de login simple avec formulaire
login_proc : processus de validation du pseudo mot de passe etc...
cpanel.php : Page du compte d'arrivé apres login
Le problème c'est que la page cpanel.php redirige automatique à login.php (normal c'est fait exprès si on est pas logué), mais ceci se passe meme apres le login. En effet, cpanel.php verifie si les variables de sessions sont bien crées, ce qui n'est pas le cas...
après analyse, j'ai remarqué que dans login_proc.php, les variables de session sont bien definies mais qu'après le header pour être redigé vers cpanel.php, les variables disparraissent !
Que faire ??
Voici les bouts de codes : (je précise que j'utilise un include dans login_proc.php car j'ai crée une classe pour gérer les sessions
et il n'y a pas de session_start dans cette classe, normal vu qu'elle est "include" directement dans la page login_proc.php qui elle a son session_start)
Bref le problème ne se situe pas la mais où il y a le header qui envoie vers cpanel.php
login_proc.php :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
| <?php
session_name('dif');
session_start();
ob_start();
require("includes/Dbn/libphp1.inc"); // Database Connection Class
require("includes/qu/libphp.M.inc"); // Query Class
require("includes/session.inc.php"); // Session management class
// Check if submit is enabled, and $_POST[register_data] is true
if( (isset($_POST['submit'])) and (isset($_POST['loginata']) == "DC(*gddgdsgdgssg"))
{
/*
Html Field Value -> Required name for input tag
eg. <input type="textbox" id="user_name" name="user_name" value ="" />
Email Address = user_email
Password = user_password
Login Button = submit
*/
try
{
$user_email = escape($_POST['user_email']);
$password = $_POST['user_password'];
// Check email address for validity
if( (!(eregi('^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$', $user_email)) ) )
{
// Invalid email address
header("Location: login.php?e=0");
break;
}
// If password is invalid
if((strlen($password) < PASSWORD_MIN_CHAR) or (strlen($password) > PASSWORD_MAX_CHAR))
{
// Invalid password
header("Location: login.php?e=1");
break;
}
$password = md5($password);
// Connect to mysql database
$conn = MysqlConnect::connect();
MysqlConnect::db_use($conn, "fsdfdfdh");
// Open new instance of the query class
$query = new MysqlQuery($conn);
// Check for email already in DB
$qmail = $query->GetSingleQuery('--SINGLE',"SELECT user_name,user_email,user_password,id FROM dif_users WHERE user_email = '{$user_email}';",array("user_name","user_email","user_password","id"));
// Check for errors
if($qmail < 0)
{
// Error, redirect
header("Location: login.php?e=2");
break;
}
else if($qmail["user_email"] == "")
{
// User does not exist
header("Location: login.php?e=3");
break;
}
// Check for match
if(strcmp($password,$qmail["user_password"]) == 0)
{
// All good, start session, redirect
if( (Session::start($qmail["id"],$qmail["user_name"])) == 0)
{
// PROBLEME ICI, MEME UNE VARIABLE DU TYPE
// $_SESSION['test'] = "test"; n'est pas retrouvé dans cpanel.php
// donc le pb se situe dans le header ci dessous non ?
header("Location: cpanel/cpanel.php");
break;
}
else
{
// Error setting session
header("Location: login.php?e=5");
break;
}
}
else
{
// Password error - incorrect password
header("Location: login.php?e=4");
break;
}
}
catch(Exception $e)
{
header("Location: login.php?e=6");
break;
}
}
else
{
// Redirect to home page, as this page should not be accessed unless post session
header("Location: login.php");
break;
}
ob_end_flush();
?> |
Merci d'avance !!