Hola a todos...
Tengo un sistema de autentificación de usuarios que le permite escojer entre usar cookies, o simplemente usando sesiones. Las cookies en el sistema funcionan perfecto, pero las sesiones no. Este es basicamente el code, un archivo main.php donde se loguea el user, y un login.php donde se procesan los datos:
Código del formulario de logueo (visitante.php)
Código PHP:
<form method="post" action="login.php">
<input type="text" name="user">
<input type="password" name="password">
<input type="checkbox" name="recordar" class="checkbox">
<input name="submit" type="submit" class="submit" value="Ingresar">
</form>
Codigo del login.php
Código PHP:
<?php
include('dbconn.php');
function qsimb($var) {
$var = str_replace("<","<",$var);
$var = str_replace(">",">",$var);
$var = str_replace("\'","'",$var);
$var = str_replace('\"',""",$var);
$var = str_replace("\\\\","\",$var);
return $var;
}
if(trim($_POST['user']) != "" && trim($_POST['password']) != "") {
$userN = qsimb($_POST['user']);
$passN = qsimb($_POST['password']);
$ssql = "SELECT * FROM usuarios WHERE usuario='$user'";
$rs = mysql_query($ssql);
if($row = mysql_fetch_array($rs)) {
if($row['password'] == $passN) {
if($recordar == "on") {
setcookie("cookUser",$userN,time()+7776000);
setcookie("cookPass",$passN,time()+7776000);
} else {
session_start();
$_SESSION['sUser'] = $userN;
$_SESSION['sPass'] = $passN;
}
$msg = "Ingreso exitoso, ahora será redirigido a la página principal...";
} else {
$msg = "Contraseña inválida.";
}
} else {
$msg = "Nombre de usuario no válido.";
}
mysql_free_result($rs);
} else {
$msg = "Debe especificar un nombre de usuario y contraseña.";
}
mysql_close();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="06334b" text="#FFFFFF">
<center>
<?php echo $msg ?>
<meta http-equiv="refresh" content="2;url=index.php?<?echo session_id(); ?>">
</center>
</body>
</html>
Codigo del main.php, para ver si esta logueado o no
Código PHP:
<?php
include('dbconn.php');
if(isset($_COOKIE['cookUser']) && isset($_COOKIE['cookPass'])) {
$ssql = "SELECT * FROM usuarios WHERE usuario='".$_COOKIE['cookUser']."' AND password='".$_COOKIE['cookPass']."'";
$rs = mysql_query($ssql);
if($row = mysql_fetch_array($rs)) {
if($row['permisos'] == 0) {
include('blocks/usuario.php');
} else {
include('blocks/moderador.php');
}
} else {
setcookie("cookUser","x",time()-3600);
setcookie("cookPass","x",time()-3600);
}
mysql_free_result($rs);
} else if(isset($_SESSION['sUser']) && isset($_SESSION['sPass'])) {
$ssql = "SELECT * FROM usuarios WHERE usuario='".$_SESSION['sUser']."' AND password='".$_SESSION['sPass']."'";
$rs = mysql_query($ssql);
if($row = mysql_fetch_array($rs)) {
if($row['permisos'] == 0) {
include('blocks/usuario.php');
} else {
include('blocks/moderador.php');
}
} else {
session_destroy();
}
mysql_free_result($rs);
} else {
include('blocks/visitante.php');
}
?>
El asunto es que no me quiere identificar la sesión, y en lugar de mostrarme usuario.php o moderador.php me muestra el formulario de logueo visitante.php.
¿Por qué?... ¿Por qué cuando imprimo session_id() me da "0" como ID?
Saludos y gracias !