Estoy intentando hacer el bloque más seguro. He estado mirando algunas de las funciones de moodle, y me gustaría saber si las estoy usando correctamente :
-Respecto a sesskey:
En la función get_content de block_"mi_bloque", paso por GET la sesskey llamando a la función sesskey(). Ej.:
$this->content->items[] = '<a href=../blocks/gturnos/registro_alumno.php?course='. $COURSE->id . '&sesskey=' . sesskey(). '>Registrarse</a>';
Después la compruebo "en la página siguiente" con la función confirm_sesskey($sesskey), siendo el parámetro de esta función el pasado por la página anterior. Ej.:
///Comprobamos que sea alumno, y su sesskey
if(isstudent($courseid) && confirm_sesskey($sesskey))
{ ....}
De aquí en adelante repito el mismo proceso, pero sin llamar a sesskey(), sino pasando simplemente la variable anterior de página a página por GET o por POST.
¿Es esta la forma correcta de usar sesskey?
-Respecto a require_login y isteacher() o isstudent():
Además en cada página de registro, configuración, acceso a bd, etc. compruebo siempre lo siguiente :
//Esta función checkea que este logueado, y que tenga permisos para estar en este curso.
//Evitamos que un guest acceda a información que no debería si escribe la url.
require_login($courseid);
//Comprobamos que es profesor, y su sesskey
if (isteacher($courseid) && confirm_sesskey($sesskey))
{ ...
Ya sea para profe o para alumno.
¿Es este la forma de hacerlo correctamente?
Gracias!
Un saludo,
David