Gestion de sesiones PHP

HeXaN

#30 Ese librillo me lo leí hace un tiempo :3

1 respuesta
eXtreM3

Gracias por los apuntes nucelar :si:

1 respuesta
Nucklear

#32 De nada :3

Volví a reescribir todo mi código en base a "MVC" porque no es MVC real lo que yo tengo xD

1 respuesta
eXtreM3

#33 como apunte, nunca nunca escribas código html mediante php.

1 respuesta
Nucklear

#34 ¿Y como hago eso sin repetir código por doquier?

1 respuesta
eXtreM3

#35 pues por ejemplo, en vez de esto

echo '<li><a href="#">INICIO</a> |</li>';

corta el php arriba, justo después del if, y después pones el código html sin más

<li><a href="#">INICIO</a> |</li>
1 respuesta
Nucklear

#36 Ah vale vale, ya lo entendí, ahora ya no está así, eso lo puse provisional. :)

Bueno edito para aclarar unas dudas que me van surgiendo,

La aplicación que estoy haciendo consiste en una página principal index.php que tiene que tener las siguientes funciones:

Login
Registro
Panel de Administración para publicar noticias dando una fecha de caducidad a cada noticia (Solo los admins pueden verla)

Ahora mismo tengo 3 carpetas con los siguientes archivos:

Model - db_abstract_model.php, news_model.php, users_model.php
Controler - save_news.php (Inserta noticia en la DB), loader.php (Carga la noticia para mostrarla en el index)
View - index.php, login.php, admin.php, register.php, logout.php

No tengo muy clara la idea de como van las vistas en siguiendo el patrón MVC, por ejemplo tengo:

index.php
loader.php

Esto no se hace así implementando MVC, pero no se como hacerlo.

Otro problema que tengo es a la hora de restringir los accesos a admin.php, cada usuario tiene un rol, y si no tiene los privilegios necesarios el enlace a la página admin.php no aparece en el index, pero si se hace la petición a través de la url por ejemplo http://URL/admin.php ésta se carga y cualquiera tiene acceso a ella.

A ver si alguien me puede aclarar un poco esto, que me estoy complicando la vida :3

#36, #31 ¿Alguna ayuda?

2 respuestas
HeXaN

#37 Para lo del "admin.php" supongo que poner una comprobación al principio de dicha página te valdría.

1 respuesta
Nucklear

#38 ¿Pero eso no sería un poco cutre? ¿No hay una forma standard de PHP para hacerlo? PHP_AUTH o algo así?

1 respuesta
HeXaN

#39 Pues ni idea de si es cutre o no, siempre lo he hecho así. Según los valores de la variable global "privileges" los mando para un lado u otro xD

1 respuesta
Nucklear

#40 Pues si no consigo otra solución lo tendré que hacer así, pero no me convence del todo jeje

Voy a informarme un poco por ahí antes y a ver si alguien que sepa como hacerlo contesta por aquí.

BLZKZ

#37 te contesto al tema vistas teniendo en cuenta esto ( https://github.com/blzkz/blog_php/blob/nightlight/controllers/blog.php )

Lo que hago (y así lo aprendí con CodeIgniter) es cargar las vistas desde el controlador, el index lo uso para "enrutar" el tráfico. Piensa en el esquema del controlador, que está conectado con vistas y con modelos. Tu has implementado practicamente el controlador como un DTO, y el index con parte de vistas y parte de controlador.

Mi código no es un MVC perfecto, lo tengo que retocar, simplemente quería algo rápido. Te pongo como hago mi index

// si existe el controlador
if ( is_file($controller_load))
		include $controller_load;
	else
		die ('404 not found');
	$do = new $controller();
	// Si existe la funcion $action() en el objeto $do se ejecuta, sino se muestra 404
	if(is_callable(array($do,$action)))
	{
		session_start();
    	$do->$action();
	}

Lo bonito de php es que puedes declarar objetos sin saber previamente su clase, eso lo "sacas" en tiempo de de ejecución. Por ejemplo en index.php/admin estoy diciendo al index que a lo que quiero acceder es al controller "admin".

En las vistas simplemente estructuro la informacion que recojo y proceso en el controlador. Cada vista es un método de la clase del controlador (como puedes ver en el enlace) y por ejemplo si llamo a index.php/admin/login realmente le estoy diciendo "ejecutame el método login de un objeto de la clase admin" donde llamo (incluyo) a los archivos que forman la vista login (en este caso header.php, login.php y footer.php)

Para lo del admin es como te han dicho arriba.

#43 solo se de boquilla xD

1 1 respuesta
eXtreM3

#42 el que dice que no sabe programar :si:

1 respuesta
forlayo

No se si sirve el aporte, pues no me he leido el hilo entero; pero si estás trabajando sin framework con php a pelo. En cada página que uses sesiones debes usar session_start(); lo cual no quiere decir que estés creando la sesión sino que comienzas a usar sesiones. El server de php será el que decida.

Un saludo y espero que te sirva de ayuda, aunque estoy altamente oxidado en php.