[Php-avanzado] Dudas sobre la bd
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Mie Jul 6 21:35:21 ART 2016
Hola Martín,
te respondo intercalado y al final te agrego "una animalada" que no
había visto y comentaste en un mail pasado:
El mar, 05-07-2016 a las 22:06 -0300, Martin Urciuoli escribió:
> Profe esta version tiene lo de sesiones y la abm tiene los erroes de
> la version 5 que le dije no mirara.
Pero si yo no los miro! Es PHP el que me los pone en naranja fluo
adelante de los ojos!
> Osea los errores que le detalle antes.
> Errores que se me presantoron :
> 1.- Categoría : una vez creada no puedo refrescar la pagina para que
> se actualize el menu.
> Usé header("Location:menuCategorias.php"); pero me tira
> errores.
Para que header() funcione, no tiene que haber ninguna salida previa.
Recordá (o releé el apunte) que el protocolo HTTP distingue las
cabeceras del contenido por una línea en blanco, así que si después de
cualquier contenido emitido hacés header(), no tiene que funcionar
porque la cabecera del documento ya terminó.
En resumen, header() y por ende session_*() funcionan solo antes de que
se genere cualquier salida.
> 2.- Cuando quiero cerrar sesion tengo que apretar dos veces "salir"
> para cerrar sesion.
Esto lo tengo que debugeear para ver por qué es... posiblemente esté
relacionado con lo anterior: estás haciendo las cosas después de
mostrarlas por pantalla en vez de antes, así que el final del script
cierra la sesión pero para el principio todavía no está cerrada.
> 3.- La sesion del administrador (osea la contraseña la pongo en la bd
> o en alguna otra parte).
Bueno, la sesión NO ES la contraseña, pero se entiende.
Por lo que preguntás no definiste de ninguna manera a los usuarios que
gestionan el contenido... como el admin/ está en un directorio aparte,
la forma más simple es crear un htaccess y ponerle un usuario y
contraseña para que Apache se encargue (como en PHP Inicial)
Lo mejor sería tener guardados administradores a los que se les pueda
hacer un ABM, pero no creo que tengas tiempo de implementar esto :-(
> 4.- como evito que se pueda entrar a area de administracion si no se
> esta logueado como admin.
Respondido arriba!
> Puse este codigo que lo tengo en sesiones.php
>
>
> <?php
> if(session_start() != NULL){
> if(isset($_POST['salir'])){
> session_destroy();
> }
> if (isset($_SESSION["nick"])) {
> if ($_SESSION["nick"]!="admin" ) {
> header("Location:../../index.php") ;
> exit();
> }
> }
> }else{
> header("Location:../../index.php");
> exit();
> }
> ?>
Bueno... empezamos con que siempre se entra al IF, porque
session_start() nunca es NULL.
Después, antes del session_destroy(), poné en vacío el nombre de
usuario y la clave en la sesión, o haceles un unset(), porque la página
siguiente cuando haga un session_start() va a encontrar de nuevo los
datos porque la cookie con la sesión ya fue enviada. Luego la próxima
carga de la página la borra, porque al cargar dejó de transmitir la
cookie con la sesión anterior que todavía era válida.
(y yo que me maté haciendo un ejemplo simple de AAA con sesiones al que
solo hay que llamarlo al principio de cada archivo... sniff)
Ahora, la animalada: tenés que generar el menú con las categorías
leyendo de los datos en la tabla! No creando un archivo estático con los
URLs!
Me refiero al contenido de menugral.php. No lo vi antes porque ni se me
cruzó por la imaginación que podrías estar creando un menú generando un
archivo estático en vez de generarlo con una query... con el agravante
de que generás el archivo haciendo una query!
Hacé que menugral.php haga una query a las categorías y en un foreach
generá los <LI> para que el menú exista.
> Saludos!
=mente
--
Leonardo Tadei
leonardot en pegasusnet.com.ar
Web: http://leonardo.tadei.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
Más información sobre la lista de distribución Php-avanzado