Hola, tengo un formulario en donde solicito usuario y contraseña, en este (si los datos son correctos):
Código:
$check_user = mysql_query("SELECT * FROM users WHERE user='".mysql_escape_string($user)."' AND pass='".mysql_escape_string($pass)."' ");
Me genera 3 sesiones:
Código:
session_register("rank");
session_register("logged");
session_register("user");
$_SESSION['rank'] = $user_exists['rank'];
$_SESSION['logged'] = "yes";
$_SESSION['user'] = $user;
$user_exists viene de una peticion con mysql_fetch_assoc (Ya intente con object y me sigue dando el mismo error), el problema es que se supone que solo me guarde el campo "rank" de la tabla en la session y me guarda solo "NULL", es lo que sale, lo raro es que:
Cuando ingreso los datos primero si me sale todo bien, una vez que le doy f5 o parecido tengo un switch en donde depende que rango sea el usuario es lo que mostrará (menu y enviar mensaje) y al darle f5 como mencione anteriormente la session al parecer pierde su valor y solo me muestra los mensajes pero no el menu ni el campo de enviar.
Espero me ayuden, saludos.
P.D. Cuando intento hacer un echo a $_SESSION['rank'] me aparece esto:
Cita: Catchable fatal error: Object of class stdClass could not be converted to string in C:\AppServ\www\index.php on line 3
Editado:
-----------------------------
Cuando ingreso y los datos son correctos hago un "echo $_SESSION['rank']" y me tira "user" y me muestra todo correcto, pero como tengo un redirect para que tome el index.php el valor de la session y si esta logeado me muestre otra cosa, ahi es cuando me da problemas, les dejo parte del codigo:
Código:
<?
include("lib/classes.php");
include("lib/config.php");
$connect = new dbconnect();
$connect->connect("****","****","*****","****");
$encryption = new encryption();
//Sendin' msg
$mod = $_GET['act'];
if(!empty($mod)){
switch($mod){
case "register":
@include("lib/register.php");
break;
case "logout":
if(!empty($_SESSION['logged'])){
session_destroy();
echo "<script>alert('Te has desconectado correctamente');</script>";
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=?">';
}else{
echo "<script>alert('No te puedes desconectar porque no estas logeado');</script>";
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=?">';
}
break;
default;
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=?">';
}
}else{
if (isset($_POST['send'])){
$msg = strip_tags($_POST['msg']);
$ip = $_SERVER[REMOTE_ADDR];
if ((strlen($msg) > $max_msg) or (strlen($msg) < $min_msg)){
$error = "<div style='text-align:justify;;background:red;color:white;line-height:1em;'>
El mensaje tiene que tener mínimo ".$min_msg." carácteres y máximo ".$max_msg." carácteres.
</div>";
}else{
$user = $_SESSION['user'];
$web = mysql_query("SELECT * FROM users WHERE user='".mysql_escape_string($user)."' ");
if($web_exists = mysql_fetch_object($web)){
$web = $web_exists->web;
}else{
$web = "#";
}
$insert = mysql_query("INSERT INTO comments (user,msg,web,ip,date) values (
'".mysql_escape_string($_SESSION['user'])."',
'".mysql_escape_string($msg)."',
'".mysql_escape_string($web)."',
'".mysql_escape_string($ip)."',
'".mysql_escape_string($date)."'
)");
}
}
if(isset($_POST['login'])){
$user = strip_tags($_POST['user']);
$pass = strip_tags($_POST['pass']);
$pass = $encryption->encrypt($pass,$code);
$check_user = mysql_query("SELECT * FROM users WHERE user='".mysql_escape_string($user)."' AND pass='".mysql_escape_string($pass)."' ");
if($user_exists = mysql_fetch_assoc($check_user)){
session_register("rank");
session_register("logged");
session_register("user");
$_SESSION['rank'] = "user";
$_SESSION['logged'] = "yes";
$_SESSION['user'] = $user;
$error = "<div style='text-align:justify;;background:red;color:white;line-height:1em;'>Bienvenido, en unos momentos serás redirigído.</div>";
echo $_SESSION['rank'];
/*echo '<META HTTP-EQUIV=Refresh CONTENT="2; URL=?">';*/
}else{
$error = "<div style='text-align:justify;;background:red;color:white;line-height:1em;'>Los datos proporcionados son incorrectos</div>";
}
}
$rank = $_SESSION['rank'];
switch($rank){
case "":
$menu = "Registrar cuenta<br /><a href='?act=register' target='_blank'><img src='img/register_account.png' border='0'></a>";
$send = "<div style='font-size:12px;'>
<form action='' method='POST'>".$error."
<input type='text' size='30' onFocus=\"if (this.value == 'Usuario') {
this.value=''}\" onBlur=\"if(this.value == ''){ this.value='Usuario'}\" value='Usuario' name='user' >
<input type='password' size='30' onFocus=\"if (this.value == '********') {
this.value=''}\" onBlur=\"if(this.value == ''){ this.value='********'}\" value='********' name='pass'><br />
<input type='submit' name='login' value='Entrar'>
</form>
</div>";
break;
case "user":
echo "Adada";
$menu = "<div style='font-size:12px;'>Perfil | Editar | Ayuda | <a href='?act=logout'>Salir</a></div>";
$send = "<div style='font-size:12px;'>
<form action='' method='POST'>
".$error."
<textarea name='msg' cols='30' rows='3'onFocus=\"if (this.value == 'Mensaje') {
this.value=''}\" onBlur=\"if(this.value == ''){ this.value='Mensaje'}\">Mensaje</textarea><br />
<input type='submit' name='send' value='Enviar'>
</form>
</div>";
break;
case "admin":
$menu = "<div style='font-size:12px;'>Perfil | Editar | Administrar | Ayuda | <a href='?act=logout'>Salir</a></div>";
$send = "<div style='font-size:12px;'>
<form action='' method='POST'>
".$error."
<textarea name='msg' cols='30' rows='3'onFocus=\"if (this.value == 'Mensaje') {
this.value=''}\" onBlur=\"if(this.value == ''){ this.value='Mensaje'}\">Mensaje</textarea><br />
<input type='submit' name='send' value='Enviar'>
</form>
</div>";
break;
default;
echo "test";
break;
}
?>
<body>
<div id="container">
<div id="header"><div style="margin-top:5px;">ZO Chat v1.0 Registered Version</div></div>
<div id="panel"><? echo $menu; ?></div>
<div id="show"><div style="margin-left:5px;margin-right:5px;">
<div id="msg"><? include("lib/show_msg.php"); ?></div>
</div></div>
<div id="send"><? echo $send; ?></div>
<div id="footer"><div style="margin-top:5px;">*****</div></div>
</div>
</body>
</html>
<? } ?>
Al darle un var_dump() a $_SESSION me acabo de dar cuenta de que todos los valores de la base de datos me los almacena en sesiones :S!