Cómunicado Importante: Mudanza Programada - 31/07/2017 + información


Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
[Curso PHP] Lección #2 (parte 2º)
#1
Después de un tiempo, volvemos a retomar el curso de PHP.

En la 1ª parte de esta segunda lección, habíamos creado un archivo "index.php" q era donde alojábamos nuestro contenido a proteger y se comprobaba si el usuario estaba logueado en el sistema mediante esta función: check_registrado() Como habrán podido comprobar, el script falla porq aún no tenemos definida esa función. Vamos a definirla!

Para centralizar el código PHP, tenerlo todo más ordenado y sobre todo mejorar la comprensión y lectura de nuestros scripts vamos a usar un archivo específico donde albergaremos nuestras funciones: funciones.php.

La ventaja de tener funciones o parte de código en un archivo independiente es q podemos "llamar" o incluir su contenido desde otro script. en este caso, llamaremos a las funciones q se encuentra dentro de funciones.php desde index.php pudiendo acceder a ellas. Sería algo así como unir los dos páginas de un periódico para poder leer la noticia completa.

Pues bien, creamos el archivo funciones.php y escribimos dentro:
Código:
function check_registrado() {
    if(isset($_SESSION['skp_usuario']) AND isset($_SESSION['skp_password'])) {
        return true;
    } elseif(isset($_COOKIE['skp_usuario']) && isset($_COOKIE['skp_password'])) {
        if(check_usuario($_COOKIE['skp_usuario'],$_COOKIE['skp_password'])) {
            crear_sesion($_COOKIE['skp_usuario'],$_COOKIE['skp_password']);
            return true;
        } else {
            cerrar_sesion();
            return false;
        }
    } else {
        return false;
    }
}
Explicamos:

Cuando en nuestro código PHP escribamos check_registrado() se ejecutará la función q lleva ese nombre y esta función devolverá o no un resultado.

Con function se define la función.

$_SESSION es una variable muy especial con unas características muy útiles. Se trata de una variable de sesión y el valor q almacenemos en ella permanecerá mientras mantengamos nuestra sesión activa en el servidor.

Por ejemplo: tenemos dos scripts, en script_1 establecemos $a = 1 y en script_2 mostramos el valor de $a. Cargamos el script_1 y luego accedemos a script_2. ¿Se mostrará el valor q establecimos en $a? Pues no! ¿Por qué? Pues porq las variables q se definen dentro de un script sólo tienen valor dentro de ese script.

Para pasar valores de un script a otro se suele usar esta variable de sesión $_SESSION (aunq existen otros métodos)

La variable $_SESSION se usará como Array (también llamado matriz o vector) Un array es una variable con varios valores. Un ejemplo para entenderlo:
Código:
$a['mensaje'] = 'hola";
$a['estado'] = 'saludando';

$a[0] = 'lunes';
$a[1] = 'martes';
Esta variable $a no llegaría a ningún lado. Sólo serviría dentro del script q estamos desarrollando pero si en lugar de usar $a usamos $_SESSION, los valores permanecerían vigentes mientras tuviéramos la sesión activa en el servidor web. Independientemente del script q estuviésemos ejecutando.

La variable $_SESSION es la responsable de mantenernos logueado en un foro mientras visitamos sus páginas. Cuando cerramos nuestro navegador y transcurre un tiempo (generalmente 15 minutos) la sesión expira y tenemos q loguarnos de nuevo (volver a definir $_SESSION)

El valor de $_SESSION se almacena en el propio servidor de forma automática. Es mucho más seguro q $_COOKIE q almacena sus valores en el ordenador del usuario.

isset es una función de PHP q devuelve "true" si la variable q le indicamos ha sido definida (Si se le ha asignado algún valor)

$_COOKIE es también una variable especial con un funcionamiento similar a $_SESSION pero con la particularidad de q sus datos se almacenan en el ordenador del usuario.

Para definir una cookie es necesario hacerlo explícitamente donde no sólo se indicará el valor q almacenará, sino también el tiempo de vida de la cookie y el ámbito de acción (si será para todo un dominio o una carpeta).

Un ejemplo rápido de definición de una cookie sería:
Código:
setcookie("mes", "marzo", time()+3600, "/", ".skylium.net", 0);
mes es es nombre de la cookie
marzo el valor q almacenará
time()+3600 indica q la cookie expirará en 3600 segundos (una hora)
/ es la ruta del server donde la cookie estará disponible. Acceder a la cookie desde un script alojado en otro lugar no devolvería el valor de la cookie.
.skylium.net es el dominio de acción. En este caso, la cookie estará disponible para el dominio skylium.net y todos sus subdominios.
0 indica q la cookie podrá enviarse tanto si se usa una conexión segura (https) o no (http)

return obliga a terminar inmediatamente una funcion y devuelve un valor. Un ejemplo sencillo:
Código:
function sumar($a, $b) {
    return $a + $b;
}

echo sumar(1, 2);
Al llamar a la función sumar(1, 2), return devolverá lo q le digamos, en este caso: $a + $b. Es decir: 3.

Ahora vamos a explicar el flujo de nuestra función check_registrado():

Para empezar, llamaremos a la función sin parámetros (), la función realizará una serie de comprobaciones y nos devolverá (return) un valor (true o false).

Al invocar a la función, comprobará si las variables $_SESSION['skp_usuario'] y $_SESSION['skp_password'] están definidas (si tienen algún valor). Si es verdadero indica q el usuario está logueado y si devuelve falso irá a comprobar si hay alguna cookie activa con determinada información. Si las cookies están activas, se comprobará si el usuario y contraseña almacenadas en la cookie son válidas (check_usuario).

Si las credenciales son correctas, se creará la sesión (crear_sesion) y finalmente haremos q la función principal devuelva true (return).

Ahora bien, si todo lo anterior falla, se cerrará la posible sesión q puediera haber abierta (cerrar_sesion) y se devuelve false (return)

Por lo tanto, al invocar a la función principal check_registrado() obtendremos como resultado un true o un false dependiendo de si el usuario estaba o no logueado. Por lo tanto, ésta será la función q comprobará si el visitante está logueado o no y saber así si podemos permitirle el acceso al contenido de esa web.

Las funciones check_usuario, crear_sesion y cerrar_sesion aún no las hemos definido por lo q nuestra aplicación web continuará sin funcionar.

¿Se empieza a complicar? Preguntas y dudas.... aquí en el foro.
[Imagen: firmabp.jpg][Imagen: mineenlineaentregadispo.jpg]
WWW
#2
Que si se empieza a complicar? Pues no se decirte todavia, lo he visto por encima y creo que podre lograrlo...

Cuantas partes son?
[Imagen: firmatwitter.png][Imagen: firmataq.png]
WWW
#3
DJArrakis escribió:Cuantas partes son?
Primera duda Gran sonrisa

No sé. Voy sobre la marcha.
[Imagen: firmabp.jpg][Imagen: mineenlineaentregadispo.jpg]
WWW
#4
Jajaja... Pues yo lo unico que espero es que sean buenas...

Gracias Mine Guiño
[Imagen: firmatwitter.png][Imagen: firmataq.png]
WWW
#5
Uff, esto lo tendre que mirar muuuuyyyy despacio Guiño
WWW
#6
papi escribió:Uff, esto lo tendre que mirar muuuuyyyy despacio Guiño
Estoy siguiendo un diseño curricular basado en el flujo de ejecución del script (ouch! q académico sonó ésto!)

Más práctico imposible. Ten la precaución de no avanzar hasta tener claro lo presente.

Ya verás cómo cambia tu percepción de PHP.
[Imagen: firmabp.jpg][Imagen: mineenlineaentregadispo.jpg]
WWW
#7
por lo pronto estoy mas perdido que una aguja en un pajar. Tendré que empollarme las otras 2 lecciones Guiño
WWW
#8
muy bueno mine el curso los esta explicando de maravilla aunque si le añade ejemplo a modo de practica mientra los va explicando los concepto los captaría la gentes mas rápido
[Imagen: jesuli.gif]
http://www.codigocero.ucoz.es
#9
Gracias Jesuli. Viniendo de tí es todo un cumplido.

Los ejempos q voy poniendo son en realidad el código final q se usará para realizar el sistema de identificación de usuarios.

Luego, enlazando todo, se logrará la finalidad.
[Imagen: firmabp.jpg][Imagen: mineenlineaentregadispo.jpg]
WWW
#10
bueno cuando se explica una cosa bien y presentado también hay que valorarlo los buenos de tu curso que son corto la lecciones los cual hacer que uno no se canse de leer tanto y a mismo tiempo engancha a su lectura.
[Imagen: jesuli.gif]
http://www.codigocero.ucoz.es


Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
  [Tutorial] Curso de PSD a HTML a WP habacuc78 14 546 31-08-2016, 09:33 PM
Último mensaje: ServiRemate
  Curso básico de introducción a la programación Posits 1 198 04-08-2016, 02:48 AM
Último mensaje: antony_tj
  [Aporte] Curso básico de Javascript habacuc78 22 769 05-07-2016, 03:53 PM
Último mensaje: escuelasegura
  [Tutorial] Trucos con CSS parte I JancoBH 2 302 13-03-2016, 01:00 AM
Último mensaje: JancoBH
  [Aporte] Curso completo Bootstrap habacuc78 10 454 06-02-2016, 04:50 AM
Último mensaje: habacuc78
  Curso C++: Ejemplo 1 Samo30 2 424 27-06-2014, 01:42 AM
Último mensaje: Samo30
  Curso C++: Ejemplo 2 Samo30 0 1.637 19-06-2014, 06:07 AM
Último mensaje: Samo30
  Curso C++: 6.- Estructuras cíclicas, while, do while y for Samo30 0 1.296 16-06-2014, 01:28 AM
Último mensaje: Samo30
  Curso C++: 5.- Estructuras de selección if y switch Samo30 5 481 11-06-2014, 08:48 PM
Último mensaje: MPH
  como dominar CSS sin salir del escritorio parte 1 postnix 20 2.063 02-06-2014, 12:33 PM
Último mensaje: piinbook



Usuarios navegando en este tema: 1 invitado(s)