Autor
|
Tema: problemas con session_start() (CERRADO) (Leído 5,944 veces)
|
Zeroql
Desconectado
Mensajes: 957
Todo lo k sucede sucede por una razon
|
Buenas, muchachos como estan, bueno tengo este code: validacion de usuarios //datos para establecer la conexion con la base de mysql. //Caracteres no permitidos function quitar($mensaje) { $nopermitidos = array("'",'\\','<','>',"\""); return $mensaje; } if(trim($HTTP_POST_VARS["user"]) != "" && trim($HTTP_POST_VARS["pass"]) != "") { // Puedes utilizar la funcion para eliminar algun caracter en especifico //$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"])); //$password = $HTTP_POST_VARS["password"]; // o puedes convertir los a su entidad HTML aplicable con htmlentities $password = $HTTP_POST_VARS["pass"]; $resultado = mysql_query('SELECT nuser, pass FROM users WHERE nuser=\''.$usuario.'\''); if($row["pass"] == $password){ $_SESSION["k_username"] = $row['user']; $_SESSION["k_typeuser"]=$row['type']; ?> <script language="javascript"> alert("Usuario identificado correctamente"); location.href="admin.php"; </script> <?php }else{ ?> <script language="javascript"> alert("Contraseña incorrecta"); location.href="index.php"; </script> <?php } }else{ ?> <script language="javascript"> alert("Usuario inexistente."); location.href="index.php"; </script> <?php } }else{ ?> <script language="javascript"> alert("Debe espeficicar un usuario y una contraseña"); location.href="index.php"; </script> <?php } ?>
admin.php if ($_SESSION['k_username']) { if ($_SESSION["k_typeuser"]=='admin'){ $mcount="adm/counts.php"; $mproducts="adm/products.php"; $mlogout="logout.php"; $moferts="adm/oferts.php"; $mnews="adm/news.php"; $resultsession='<h2>Sesion:' .$_SESSION['k_username']. '!</h2> <p class=\"color1\">Por favor escoja una de las siguientes operaciones a realizar.</p> <p class=\"color1\"> </p> <p class=\"color1\"><a href="adm/news.php">Agregar novedades</a></p> <p class=\"color1\"><a href="adm/offerts.php">Modificar ofertas</a></p> <p class=\"color1\"><a href="adm/products.php">Administrar productos</a></p> <p class=\"color1\"><a href="adm/counts.php">Modificar cuentas</a></p> <p class=\"color1\"><a href="mail.agsiscom.com">Ver correo electronico</a></p>'; } else{ $mcount="mensaje();"; $mproducts="mensaje();"; $mlogout="mensaje();"; $moferts="mensaje();"; $mnews="mensaje();"; $resultsession="<h2>Sesion incorrecta!</h2> <p class=\"color1\">Lo sentimos, la sesion actual no tiene permisos para acceder a esta area de la pagina.</p> <p class=\"color1\">Por favor cierre la sesión actual y a continuación entre com una cuenta de administrador</p> <p class=\"color1\"> </p>"; } } else { $mcount="mensaje();"; $mproducts="mensaje();"; $mlogout="mensaje();"; $moferts="mensaje();"; $mnews="mensaje();"; $resultsession="<h2>Debe iniciar sesion primero!</h2> <p class=\"color1\">Para acceder a la administracion de productos,ofertas, cuentas y de la pagina en general debe iniciar sesion como administrador.</p> <p class=\"color1\">Para ello ingresa tu nombre de usuario y contraseña en el formulario de abajo.</p> <p class=\"color1\"> </p><article class=\"col2 pad_left1\"> <h2>Inicio de sesion</h2> <form id=\"ContactForm\" name= \"login\" action=\"valida.php\" method=\"post\"> <div> <div class=\"wrapper\"><br /> </div> <div class=\"bg\"> <input type=\"text\" name=\"user\" class=\"input3\"/> </div> Usuario:<br /> </div> <div class=\"wrapper\"> <div class=\"bg\"> <input type=\"password\" name=\"pass\" class=\"input3\" /> </div> Contraseña:<br /> </div> <div class=\"wrapper\"><br/> </div> <input type=\"submit\" name=\"submit\" class=\"button2\" value=\"Entrar\" > <input type=\"reset\" name=\"clean\" class=\"button2\" value=\"limpiar\" onClick=\"cleanform\"> </form> </article>"; } ?>
Bueno resulta que en admin.php no me esta tomando los datos de session_start(); me sale siempre es la ultimap arte del else. me pueden decir que estoy haciendo mal???? o por que nome da??? saludos
|
|
« Última modificación: 12 Junio 2011, 15:17 pm por Zeroql »
|
En línea
|
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo. /.-ZEROQL.-\ ----- #937675#
|
|
|
Shell Root
|
Que quieres decir con, if ($_SESSION['k_username']) {
|
|
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
WHK
|
Hola, en ves de usar $HTTP_POST_VARS utiliza $_POST porque en algunas configuraciones de servidores dan problemas con superglobales antiguas. Después si aun no resulta prueba poniendo print_r($_SESSION) al principio del script después de session_start() para que puedas ver si es la sesión o tu script el que está fallando. Yo apuesto a que el problema está cuando declara el valor, lo mas probable es que no esté declarando bién el nombre de usuario. //Caracteres no permitidos function quitar($mensaje) { $nopermitidos = array("'",'\\','<','>',"\""); return $mensaje; }
Que tal si mi nombre de usuario tiene una comilla como por ejemplo marco's para eso ya exste una función llamada mysql_real_escape_string(); además no necesitas escapar comillas dentro de la query, puedes usar comillas dobles:
y htmlentities no te va a salvar de una inyección sql como los saltos de linea y retorno de carácter como el \x1a y el \x0d, para eso está el mysql real escape string, además mysql no es case sensitive asi que está demás el strtolower(). El limit 1 se pone siempre por costumbre para que el sistema funcione mejor debido a que te daría problemas si hay dos registros con el mismo nombre por algún motivo como por ejemplo migración de base de datos.
Según tu script es "resultado" no "result" La próxima ves intenta por favor no escribir los títulos de mensajes con mayusculas porque casi me dejaste sordo. Saludos.
|
|
« Última modificación: 10 Junio 2011, 03:47 am por WHK »
|
En línea
|
|
|
|
Zeroql
Desconectado
Mensajes: 957
Todo lo k sucede sucede por una razon
|
WHK gracias por tu aporte, mejore algunas cositas, pero te cuento que use esta misma funcion de session_start en otr proyecto y funciona de maravilla, realmente me extraña el saber por k no funciona bien en esta pagina.
esta tal cual el proyecto anterior. al igual mejore algunas de tus recomendaciones y no funciona bien.
PD: ya arregle el titulo, jeje que pena me pase con el grito. no me habia dado cuenta que estaba ne mayus xD
saludos
|
|
|
En línea
|
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo. /.-ZEROQL.-\ ----- #937675#
|
|
|
WHK
|
A mi me ha pasado que en algunas veces te equibocas de codificación de archivo y aparece un pequeño carácter raro al comienzo de tu script y esto se debe a que este carácter define si tu script está escrito en utf-8 o no, en ese caso puede no estar haciendo efecto el session_start() ya que hay que recordar que envía un header al cliente cosa que no puede hacer si ya se ha enviado buffer antes.
Tienes los errores habilitados? error_reporting(all)
|
|
|
En línea
|
|
|
|
Zeroql
Desconectado
Mensajes: 957
Todo lo k sucede sucede por una razon
|
eso mismo estaba mirando yo en otros post. uso dreamweaver para esto pero mejor no me confio y lo paso a otro codificador a ver si es eso... gracias estare avisando que sucede
|
|
|
En línea
|
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo. /.-ZEROQL.-\ ----- #937675#
|
|
|
WHK
|
Ya encontré el error: $_SESSION["k_typeuser"]=$row['type'];
No hay columna type ya que en tu query de sql solamente seleccionaste user y pass: $resultado = mysql_query('SELECT nuser, pass FROM users WHERE nuser=\''.$usuario.'\'');
Lo solucionas seleccionando todo con * y ya. Hize un par de arreglos en tu script porque le encontré como 3 errores mas como por ejemplo lo del free_result y un xss en : $resultsession='<h2>Sesion:' .$_SESSION['k_username']. '!</h2>
En ese caso se usa htmlspecialchars. <?php /* Login */ die('Ha fallado la conexión'); die('Error al seleccionar la Base de Datos'); if(isset($_POST['user']) and isset($_POST['pass'])){ if($row['pass'] == $_POST['pass']){ $_SESSION['k_username'] = $row['user']; $_SESSION['k_typeuser'] = $row['type']; /* !!! select * entrega type */ }else $status['error'] = 'Contraseña incorrecta.'; }else $status['error'] = 'Usuario inexistente.'; } /* Start content */ if($_SESSION['k_username']){ if($_SESSION["k_typeuser"] == 'admin'){ ?> <h2>Sesion: <?php echo htmlspecialchars($_SESSION['k_username'], ENT_QUOTES); ?>!</h2> <p class="color1">Por favor escoja una de las siguientes operaciones a realizar.</p> <p class="color1"> </p> <p class="color1"><a href="news.php">Agregar novedades</a></p> <p class="color1"><a href="offerts.php">Modificar ofertas</a></p> <p class="color1"><a href="products.php">Administrar productos</a></p> <p class="color1"><a href="counts.php">Modificar cuentas</a></p> <p class="color1"><a target="_blank" href="http://mail.agsiscom.com/">Ver correo electronico</a></p> <?php }else{ ?> <h2>Sesion incorrecta!</h2> <p class="color1">Lo sentimos, la sesion actual no tiene permisos para acceder a esta area de la pagina.</p> <p class="color1">Por favor cierre la sesión actual y a continuación entre com una cuenta de administrador</p> <?php } }else{ ?> <h2>Debe iniciar sesion primero!</h2> <p class="color1">Para acceder a la administracion de productos,ofertas, cuentas y de la pagina en general debe iniciar sesion como administrador.</p> <p class="color1">Para ello ingresa tu nombre de usuario y contraseña en el formulario de abajo.</p> <p class="color1"> </p><article class="col2 pad_left1"> <h2>Inicio de sesion</h2> <form id="ContactForm" name= "login" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post"> <div> <div class="wrapper"><br /></div> <div class="bg"> <input type="text" name="user" class="input3"/> </div> Usuario:<br /> </div> <div class="wrapper"> <div class="bg"> <input type="password" name="pass" class="input3" /> </div> Contraseña:<br /> </div> <div class="wrapper"><br/></div> <input type="submit" name="submit" class="button2" value="Entrar" > <input type="reset" name="clean" class="button2" value="limpiar" onClick="cleanform"> </form> <?php } ?>
Saludos.
|
|
« Última modificación: 10 Junio 2011, 04:38 am por WHK »
|
En línea
|
|
|
|
Zeroql
Desconectado
Mensajes: 957
Todo lo k sucede sucede por una razon
|
oye muchas gracias!!!!! xD estaba mirando lo del sistema utf-8 y aun asi no me daba, voy a probar con tu solucion, aun asi te agradezco enormemente...
|
|
|
En línea
|
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo. /.-ZEROQL.-\ ----- #937675#
|
|
|
Zeroql
Desconectado
Mensajes: 957
Todo lo k sucede sucede por una razon
|
WHK acabo de probar tu solucion y no me trajo ningun resultado!!!
el problema es que ahora estoy pensado que es el sistema de uso para probaro, uso appserv 2.5.5 con MySQL Database Version 5.0.16 y phpMyAdmin Database Manager Version 2.6.4-pl4
tiene que ver esto?
por que ya pase todos los archivos de la pagina a utf-8 muchos estaban en ANSI.
la verdad esto es ya molesto que no funcione, acabo de correr un archivo anterior donde use esto mismo y funciona de maravilla!!!!
AYUDA!!!!!!
|
|
|
En línea
|
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo. /.-ZEROQL.-\ ----- #937675#
|
|
|
WHK
|
instala xampp
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
session_start(): Cannot send session cache limiter - headers already sent
PHP
|
Casidiablo
|
7
|
10,538
|
6 Noviembre 2007, 22:22 pm
por SirLanceCC
|
|
|
session_start() [php]
PHP
|
Ari Slash
|
2
|
3,701
|
17 Diciembre 2009, 21:29 pm
por Ari Slash
|
|
|
php - session_start , problemillas
Desarrollo Web
|
Neibar
|
4
|
2,515
|
3 Mayo 2012, 20:02 pm
por Neibar
|
|
|
session_start(); Me cicla la pagina
Desarrollo Web
|
L0Ko
|
3
|
2,493
|
22 Mayo 2012, 23:11 pm
por [u]nsigned
|
|
|
Error con $session_start()
PHP
|
basickdagger
|
6
|
2,947
|
9 Marzo 2015, 13:36 pm
por Pablo Videla
|
|