PHP y las sessiones, maldito SID
Buenas!
Veamos, estoy implantando un sistema de login para iniciar la sesion de varios usuarios y asi poder determinar que usuarios pueden hacer unas operaciones en concreto. Para ello he montado una base de datos con una tabla que contiene los campos nom (Nombre) y contrasenya (Password en MD5), por otro lado tengo un formulario en donde introducen los datos y los envian a la pagina de verificacion, en esta pagina compruebo los datos y luego los comparo con los de la DB, hasta aqui todo va bien, me hace la comprobacion y me redirige a la pagina inicial con el SID en la direccion y la sesion habilitada. Aqui es donde se me plantea la dificultat, una vez el usuario ha iniciado sesion, es redirigido a la pagina principal y pincha en algun enlace para irse a otra zona de la intranet pierde el SID, este deja de aparecer en la direccion.
Tengo el trans_id del php.ini activado (1) y en las direcciones para mayor seguridad de que funcione pongo el . SID . pero nada, no hay furma de que me lo pase de una pagina a otra consevandome la sesion.
Los enlaces los estoy colocando de la siguiente forma:
echo "<a href=pagina.php?nomsesio=" . session_name() . "&" . SID . ">enllaç</a>;
Y las sesion la inicio con el siguiente codigo:
<?php
$con = mysql_connect("localhost","root","") or die("No s'ha pogut conectar amb MySQL Server! ");
$db = mysql_select_db("gestio") or die("No sha pogut enllaçar amb la Base de Dades: Gestio");
$result = mysql_query("SELECT * from agents");
$contrasenya = md5($_GET['pass']);
$usa = ucfirst($_GET['nom']);
while ($row = mysql_fetch_row($result)) {
if($row[3] == $usa) {
if(md5($row[4]) == $contrasenya) {
if($row[1] == "403") {
session_name($usa);
session_start();
session_id();
session_register($usa);
session_cache_limiter('nocache,private');
echo "<meta http-equiv=refresh content='2; URL=index.php?nomsesio=" . session_name() . "&" . SID . "'>";
echo "<br><br><center><b>Sessio inicialitzada correctament.</b><br></center>";
echo "<center><font color=#AD0000><b><br><br><a href=index.php?nomsesio=" . session_name() . "&" . SID . ">Endevant</a></b></font></center>";
$accio = 1;
}
}
}
}
if($accio == "") {
$accio = 2;
}
/*
if($accio == 1) { // Si el usuari es administrador
}
*/
if($accio == 2) { // Si el usuari no es administrador
echo "<center><font color=#AD0000><b> <br><br> Nom d'usuari o contrasenya incorrecte, torna-ho a intenrat si us plau.</b></font></center>";
}
?>
Uso Appserv 2.4.2 con Apache 1.3.3, MySQL 4.1 y PHP 5.0.
Alguna sugerencia???
Sin mas, dbClimax
To miss, i long to you... treason always appears
Veamos, estoy implantando un sistema de login para iniciar la sesion de varios usuarios y asi poder determinar que usuarios pueden hacer unas operaciones en concreto. Para ello he montado una base de datos con una tabla que contiene los campos nom (Nombre) y contrasenya (Password en MD5), por otro lado tengo un formulario en donde introducen los datos y los envian a la pagina de verificacion, en esta pagina compruebo los datos y luego los comparo con los de la DB, hasta aqui todo va bien, me hace la comprobacion y me redirige a la pagina inicial con el SID en la direccion y la sesion habilitada. Aqui es donde se me plantea la dificultat, una vez el usuario ha iniciado sesion, es redirigido a la pagina principal y pincha en algun enlace para irse a otra zona de la intranet pierde el SID, este deja de aparecer en la direccion.
Tengo el trans_id del php.ini activado (1) y en las direcciones para mayor seguridad de que funcione pongo el . SID . pero nada, no hay furma de que me lo pase de una pagina a otra consevandome la sesion.
Los enlaces los estoy colocando de la siguiente forma:
echo "<a href=pagina.php?nomsesio=" . session_name() . "&" . SID . ">enllaç</a>;
Y las sesion la inicio con el siguiente codigo:
<?php
$con = mysql_connect("localhost","root","") or die("No s'ha pogut conectar amb MySQL Server! ");
$db = mysql_select_db("gestio") or die("No sha pogut enllaçar amb la Base de Dades: Gestio");
$result = mysql_query("SELECT * from agents");
$contrasenya = md5($_GET['pass']);
$usa = ucfirst($_GET['nom']);
while ($row = mysql_fetch_row($result)) {
if($row[3] == $usa) {
if(md5($row[4]) == $contrasenya) {
if($row[1] == "403") {
session_name($usa);
session_start();
session_id();
session_register($usa);
session_cache_limiter('nocache,private');
echo "<meta http-equiv=refresh content='2; URL=index.php?nomsesio=" . session_name() . "&" . SID . "'>";
echo "<br><br><center><b>Sessio inicialitzada correctament.</b><br></center>";
echo "<center><font color=#AD0000><b><br><br><a href=index.php?nomsesio=" . session_name() . "&" . SID . ">Endevant</a></b></font></center>";
$accio = 1;
}
}
}
}
if($accio == "") {
$accio = 2;
}
/*
if($accio == 1) { // Si el usuari es administrador
}
*/
if($accio == 2) { // Si el usuari no es administrador
echo "<center><font color=#AD0000><b> <br><br> Nom d'usuari o contrasenya incorrecte, torna-ho a intenrat si us plau.</b></font></center>";
}
?>
Uso Appserv 2.4.2 con Apache 1.3.3, MySQL 4.1 y PHP 5.0.
Alguna sugerencia???
Sin mas, dbClimax
To miss, i long to you... treason always appears
Pues yo creo que si estas trabajando en intranet, a no ser que todo este en el mismo servidor, pues con razon pierde el SID por que al iniciar en otro servidor se crea otro SID
Buenas!
Esta todo en el mismo servidor, es decir, la sesion no tendria porque perderse en ningun momento pero como es la primera vez que toco las sesiones sinceramente voy perdido y lo que leo por ahi en foros, webs y manuales no me ayuda a despejar la duda,
Sin mas, dbClimax
To miss, i long to you... treason always appears
Esta todo en el mismo servidor, es decir, la sesion no tendria porque perderse en ningun momento pero como es la primera vez que toco las sesiones sinceramente voy perdido y lo que leo por ahi en foros, webs y manuales no me ayuda a despejar la duda,
Sin mas, dbClimax
To miss, i long to you... treason always appears