| ||||
Re: otra opción a las sesiones Gracias de nuevo, voy despacito pero con buena letra como quien dice, ingresar_admin parece que va, pero ahora los problemas estan en el panel del administrador (panel_Admin) donde el administrador ya estaría logueado y me da estos warnings...Aqui ya tengo que mezclar php y html en el mismo fichero asi que fijo q tengo varias cosas mal pero no se exactamente... panel_admin los warninngs Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /web/sites/user/6/72/54406/public/www/admin/panel_admin.php:5) in /web/sites/user/6/72/54406/public/www/login_admin.php on line 9 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /web/sites/user/6/72/54406/public/www/admin/panel_admin.php:5) in /web Código PHP: |
| |||
Re: otra opción a las sesiones Bueno, la solución a casos como este es acostumbrarse a poner todo el código PHP al principio del archivo. En vez de usar 'echo' para mostrar la información, guardás lo que quieras mostrar en una variable. En vez de echo 'Logueado'; poner $mostrar = 'Logueado'; Generás el texto que sea necesario de esta forma y luego, en el html, en el lugar donde quieras que aparezca simplemente ponés <?php echo $mostrar; ?> Un bloquecito que únicamente muestra el contenido de la variable, y nunca te dará problemas. Saludos y vamo' a ver si solucionamos este tema ![]() |
| ||||
Re: otra opción a las sesiones gracias avlin por tus clases magistrales toy aprendiendo mucho, voy viendo la luz jeje pero todavia no me deja verla del todo mas warnings jeje, ahora el conflicto viene por login_admin y panel_admin este es warning que me sale en en l panel Warning: Cannot modify header information - headers already sent by (output started at /web/sites/user/6/72/54406/public/www/login_admin.php:30) in /web/sites/user/6/72/54406/public/www/admin/panel_admin.php on line 19 He intentado corregir login_admin y panel_admin y creo que el fallo ta en login_admin, te dejo los dos para que eches un vistazo a ver que te parece... login admin Código PHP: Código PHP: |
| |||
Re: otra opción a las sesiones Bueno, me alegro de haberte ayudado, creo que ahora tenés un código mucho más entendible y limpio ![]() Salida iniciada en login_admin en la línea 30.... es extraño porque la línea 30 (si el archivo es tal cual como lo mandaste) es la que contiene el ?> Y supongo que ya habrás revisado si hay algún espacio o salto de línea de más, ¿no? ![]() Ya en serio, creo que debe haber algún espacio en blanco que no estás viendo, quizás un salto de línea o incluso un espacio luego de ?> fijate en eso, que debe andar por ahí el error. Saludos. |
| ||||
Re: otra opción a las sesiones si es ese el archivo, tal cual por eso te preguntaba, seguire revisando a ver pero no he dejado ni una linea delante ni detras de el final y el comienzo, pienso que ya puede ser del codigo en si que este mal pensado...Seguire mirando a ver, gracias avlin de nuevo |
| |||
Re: otra opción a las sesiones bueno, hay una solución que es bastante forzada y quizás no sea lo ideal, pero te puede servir... al principio del archivo panel_admin (después de <?php pero lo antes posible) agregás esto: ob_start() Luego, inmediatamente antes de llamar a header(), usás ob_end_clean() (no es imprescindible, pero mejor ponerlo ya que si luego te olvidás nte vas a estar preguntando por qué no ves nada en la pantalla jeje). ¿Qué hace esto? pues captura la posible salida que tuvieras, y la descarta sin mandarla al navegador. Por lo tanto, si tuvieras algún error como un espacio sobrante, no causaría problemas. Lo ideal sería buscar y encontrar el problema, pero yo sinceramente no lo veo... y de todas formas si se genera alguna salida en ese 'tramo' de código, no es salida deseada, por lo que no provocará problemas. Saludos. |
| ||||
Re: otra opción a las sesiones Bien pues el resultado ha sido que no me reconoce la sesión me sigue sacando lo de 'Bienvenido visitante, el sistema no te ha reconocido, sino te autentificas.... no me saca ningun warning ni nada, asi que no se que hacer que puedo tener mal del codigo y mira que lo repaso veces.... |
| |||
Re: otra opción a las sesiones Bueno, aquí llegamos a un problema concreto ![]() A ver, lo que debería hacer que el valor de $loginCorrecto cambie es que se den las siguientes condiciones: 1.- if(isset($_SESSION["usNick"]) && isset($_SESSION["usPass"])) Comprobá que existan (hacé un 'echo' de ambas) 2.- if($row = mysql_fetch_array($result) comprobá que la consulta esté bien construida y que haya un resultado (echo mysql_error(), o var_dump($row), o echo mysql_num_rows) 3.- (time() < $_SESSION['caduca']) ) Supongo que esto no debería dar problemas, pero de todas formas, por las dudas: echo time() - $_SESSION['caduca'] Probá estas cosas, una de esas condiciones no se está cumpliendo. Saludos. |
| ||||
Re: otra opción a las sesiones bien al poner el primer echo $result; en login admin me sale Resource id #4.....eso no puede ser nada bueno, no se si esq no he puesto el chivato bien o que pero ponga lo que ponga sale eso...dime exactamente donde tengo que poner los echos porque ya no se si lo estoy haciendo bien o mal, cuando me funcione seras el primero invitado a la inaguración jeje |
| |||
Re: otra opción a las sesiones Jaja, muchas gracias ![]() está bien que te lo muestre así,es la forma en la que representa las variables de tipo 'recurso'. Dándote ese resultado, lo que dice es que la consulta se hizo correctamente. No asegura que haya resultados, sin embargo. Llegado este punto, solo falta ver la última condición (la 3 en mi anterior mensaje). ¿no será que en la página que procesa el formulario te olvidaste de asignarle un valor a $_SESSION['caduca']? |
| ||||
Re: otra opción a las sesiones no sabes como me alegra oir eso, bien he estado intentando probar lo que me has sugerido y no me sale nada y no se si es por que lo he puesto mal o porque lo he puesto bien y no sale o porque pero el caso es que no sale nada, te posteo donde he puesto lo de caduca para que veas, ya estamos cerca del final jejej login_admin.php Código PHP: |
| ||||
Re: otra opción a las sesiones Nada no consigo hacer salir nada, sigo atascado avlin, la pagina que procesa el formulario me imagino que te referiras a la que metes el login y pass del administrador por defecto y es ingresar_admin y ahi no asigno ningun valor a $_SESSION['caduca'], no asigno nada, no se a que te refieres a ver si me lo puedes explicar o poner en codigo...Gracias avlin. |
| |||
Re: otra opción a las sesiones ¿no muestra naa de naa? pues qué extraño... mejor, en vez de eso, haz var_dump($_SESSION); con eso te mostrará toda la información contenida en la matriz $_SESSION Si no le asignás un valor a $_SESSION['caduca'] al momento de crear la sesión (o al menos antes de ejecutar login_admin.php), la comprobación nunca será verdadera: time() < $_SESSION['caduca'] si $_SESSION['caduca'] no tiene valor, time() nunca podrá ser menor. ¿se entiende? Probá estas dos cosas, después de todo, ya no queda nada por analizar, ¿no? ![]() Saludos. |
| ||||
![]() he hecho lo del var_dump y sigue sin salirme nada, lo he puesto en login_admin donde habia puesto la otra sentencia q me dijiste y nada y time() < $_SESSION['caduca'] lo he puesto despues de session start en ingresar_admin que es donde te entendido que tengo q ponerlo pero nada seguimos en las mismas... |
| |||
Re: otra opción a las sesiones Creo que no me expliqué bien. ¿var_dump($_SESSION) no muestra nada? es imposible, aunque $_SESSION estuviera vacía el var_dump SIEMPRE muestra algo... ¿no será que lo estás poniendo en el mismo programa en el que le pusiste el ob_start/ob_end_clean? En ingresar_admin tenés un código en el que decidís si los datos ingresados son correctos y si es así, redireccionás, ¿verdad? Bueno, antes de redireccionar, ponés: session_start(); $_SESSION['caduca'] = time() + 7776000; y entonces sí, estás definiendo el valor de $_SESSION['caduca'] en el momento indicado... No olvides el session_start()... Saludos. |
| ||||
Re: otra opción a las sesiones Gracias avlin de nuevo por tu paciencia, seguimos progresando, efectivamente es ingresar_admin donde valido y redirecciono si esta bien, asi que ahi he colocado lo que me has dicho y bien sale esto que creo q es lo que tiene q salir pero no me redirecciona porque me vuelve a salir un error de cabecera....y no veo nada que este mal....Me sale esto array(3) { ["caduca"]=> int(1174383421) ["usNick"]=> string(6) "nogues" ["usPass"]=> string(6) "nogues" } Warning: Cannot modify header information - headers already sent by (output started at /web/sites/user/6/72/54406/public/www/admin/ingresar_admin.php:42) in /web/sites/user/6/72/54406/public/www/admin/ingresar_admin.php on line 43 y el codigo de ingresar_Admin que asi.. Código PHP: ![]() |
| |||
Re: otra opción a las sesiones Eso te sale porque aún está el var_dump($_SESSION) metido por ahí ![]() En cuanto lo quites (ya que no es necesario, pedí que lo pusieras solo para ver si $_SESSION tenía todo lo que debía tener) var_dump() es un gran aliado a la hora de depurar, porque te muestra el contenido y la estructura de una variable. Como consejo te digo que siempre es útil cuando alguna variable no funciona, poner var_dump() y ver su contenido. (también es conveniente hacer un 'exit' luego de usarlo, para evitar que el programa se siga ejecutando en condiciones 'no normales') En fin, que si ese era el error, pues este tema de 50 mensajes está concluido ![]() Creo que lo voy a extrañar ![]() Saludos. |
| ||||
Re: otra opción a las sesiones jaja, pues si ya entra en el panel dando la bienvenida y me muestra esto $mostrar = 'Bienvenido Administrador $nickUsuarioL '; y ahi tendria que mostrar el login del administrador y no se si lo hace mal xq no hay q poner $nickUsuarioL sino otra cosa o esta mal puesto o que...como pondría para que me sacara el login del admin? y la ultima cosilla que te pregunto es que tendría que poner exactamente en cada pagina que quiera proteger con sesion? Gracias avlin ha sido un hilo ya famoso aqui y leido por casi 400 personas jeje, Gracias por todo... Última edición por Javiglez; 20/12/2006 a las 08:31 |
| |||
Re: otra opción a las sesiones mogollón de problemas = tema de al menos 50 mensajes ![]() Las comillas simples no expanden variables. Supongamos que: $usuario = 'alvlin'; echo 'Hola $usuario' => imprime Hola $usuario echo "Hola $usuario" => imprime Hola alvlin echo 'Hola '.$usuario => imprime Hola alvlin Como ves, tenés que usar las comillas dobles, o concatenar con el punto (.) La concatenación es más rápida, pero las comillas dobles son más cómodas... ¿qué tendrías que poner en todas las páginas? pues tendrías que poner código que: -> inicie la sesión -> verifique que la sesión es válida (y no caducó) -> si la sesión es válida, que actualice el valor de 'caduca' -> si la sesión no es válida, que la destruya y mande al usuario a la página de ingreso. Básicamente, sería incluir login_admin.php en todas las páginas. Saludos. |
| ||||
Re: otra opción a las sesiones mil gracias avlin has sido un gran profesor de php y he aprendido mogollon, me imagino que tendre mas hilos que abrir con mas problemillas, a ti te dejare en paz ya que menuda te he dado, Gracias por todo avlin. Un saludo. |