PHP PHP Hypertext PreProcessor 1 PHP 10. Cookies 11. Sesiones 12. Formas 13.Acceso a base de datos 2
Cookies Son pequeños archivos de texto que el servidor almacena en el cliente. Se envían como parte del header HTTP. Cookies nombre valor fecha de caducidad dominio desde el que se puede leer la cookie ruta dentro del servidor seguridad Limitaciones de las cookies: 300 cookies en total 4KBytes por cookie 20 cookies por servidor o dominio 3 Creación de cookies bool setcookie( string nombre, string valor, int expira, string path, string dominio, bool segura) Como son parte del header HTTP deben crearse antes de enviar ninguna otra cosa incluso antes de <html> y <head>. Por default las cookies solo pueden ser leidas por la página web que las creó a menos que se especifique alguno de los siguientes parámetros: o path para permitir que mas de una página del mismo sitio pueda acceder a las cookies. o dominio para permitir el acceso a varios servidores de un mismo dominio. 4
Ejemplo 10.1 setcookie("saludo", "hola", time()+3600); <html> <head> <title>ejemplo 10.1</title> </head> <body> <h2>la cookie ya fué escrita</h2> </body> </html> 5 Lectura de cookies <html> <head> <title>ejemplo 10.2</title> </head> <body> <h2> echo $_COOKIE['saludo']; </h2> </body> </html> 6
Sesiones Sesión = intervalo de tiempo empleado por un usuario en recorrer nuestras páginas, hasta que: abandona nuestro sitio, permanece inactivo durante un tiempo prolongado cierra el navegador PHP nos permite almacenar variables de sesión que, una vez definidas, podrán ser utilizadas durante la actividad del usuario por cualquiera de los scripts de nuestro sitio Web 7 Sesiones (cont ) bool session_start ( void ) Para almacenar variables de sesión se utiliza la variable de PHP $_SESSION por ejemplo para almacenar una variable de sesión llamada views con un valor igual a 1 se escribe: $_SESSION['views']=1; 8
Ejemplo 11.1 session_start(); if(isset($_session['views'])) $_SESSION['views']=$_SESSION['views']+1; else $_SESSION['views']=1; <html><head> <title>ejemplo 11.1</title> </head><body> //retrieve session data echo "Pageviews=". $_SESSION['views']; </body></html> 9 FORMAS El lenguaje PHP nos proporciona una manera sencilla de manejar formashtml, permitiéndonos de esta manera recibir y procesar la información que envía el usuario al servidor. Al diseñar unaforma debemos indicar la página PHP que la procesará yel método por el que se le pasará la información a la página (generalmente GET ó POST). 10
Ejemplo Página que recibirá y procesará la forma <form action= "Ejemplo12.2.php" method="get"> Nombre: <input type=" text " name="nombre" /><br /> Apellido: <input type="text" name="apellido" /><br /> <input type ="submit" value="enviar" /> </form> Método de envío (GET) 11 GET y POST GET Se accesa en PHP mediante la variable $_GET Las variables se pasan del cliente al servidor en el URL POST Se accesa en PHP mediante la variable $_POST Las variables se pasan del cliente al servidor en el cuerpo del mensaje HTTP 12
Forma XHTML Ejemplo 12.1 <html><head> <title>ejemplo 12.1</title> </head> <body> <h3>introduzca su nombre y apellido:</h3> <form action= "Ejemplo12.2.php" method="get"> Nombre: <input type=" text " name="nombre" /><br /> Apellido: <input type="text" name="apellido" /><br /> <input type ="submit" value="enviar" /> </form> </body></html> 13 Ejemplo 12.2 Procesamiento de formas en PHP <html> <head> <title>ejemplo 12.2</title> </head> <body> <h3>ejemplo de procesamiento</h3> Tu nombre es: echo $_GET["nombre"] <br /> Tu apellido es: echo $_GET["apellido"] </body> </html> 14
Resultado 15 Acceso a base de datos Browser HTTP server php HTML PHP interpreter SQL query response database server - MySQL database 16
PHP DB APIs Existen 3 APIs para accesar MySql desde PHP mysql (obsoleta) mysql improved (mysqli) PDO MySQL 17 Feature comparison PHP DB API (cont ) ext/mysqli PDO_MySQL ext/mysql PHP version introduced 5.0 5.1 2.0 Included with PHP 5.x Yes Yes Yes Development status Active Active Maintenance only Lifecycle Active Active Deprecated Recommended for new projects Yes Yes No OOP Interface Yes Yes No Procedural Interface Yes No Yes API supports non-blocking, asynchronous queries with mysqlnd Yes No No Persistent Connections Yes Yes Yes API supports Charsets Yes Yes Yes API supports server-side Prepared Statements Yes Yes No API supports client-side Prepared Statements No Yes No API supports Stored Procedures Yes Yes No API supports Multiple Statements Yes Most No API supports Transactions Yes Yes No Transactions can be controlled with SQL Yes Yes Yes Supports all MySQL 5.1+ functionality Yes Most No 18
msqli 19 Secuencia de acceso a la base de datos 1. Conectarse a la base de datos, generalmente requiere cuenta y password. 2. El programa construye una instrucción SQL para consultas y/o actualizaciones 3. Se ejecuta la instrucción SQL 4. Se despliega el resultado 20
Conexión con la base de datos En PHP la conexión es específica de cada base de datos. Los siguientes ejemplos suponen que existe una base de datos llamada mibd con una cuenta user y contraseña password. MySQL $conexion=mysql_connect("localhost", user", password"); mysql_select_db("mibd", $conexion); ODBC $conexion=odbc_connect( mibd', user', password'); 21 Ejecución de instrucciones SQL MySQL mysql_query("insert INTO persona (Nombre, Apellido, Edad) VALUES (Luis', Lopez', 21'), $conexion); $result=mysql_query("select * from persona",$conexion); ODBC $result=odbc_exec($conexion, "SELECT * FROM persona"); Nota. Los ejemplos suponen que existe una tabla llamada persona en la base de datos 22
Despliegue de resultados array mysql_fetch_row ( resource $result ) $result es el resultado de un query realizado mediante la función mysql_query mysql_fetch_row permite leer el resultado del query línea por línea 23 Ejemplo 13.1 <html> <head> <title>ejemplo 13.1</title> </head> <body> <h3>ejemplo de uso de bases de datos con PHP y MySQL</h3> if (!($conexion=mysql_connect("localhost","root",""))) { echo "Error conectando a la base de datos."; exit(); } if (!mysql_select_db("mibd",$conexion)) { echo "Error seleccionando la base de datos."; exit(); } $result=mysql_query("select * from persona",$conexion); 24
Ejemplo 13.1 (cont ) <table border="1" cellspacing="1" cellpadding="1"> <tr><td> Nombre</td> <td> Apellido </td> <td> Edad </td> </tr> while($row = mysql_fetch_array($result)) { print("<tr><td> ".$row["nombre"]."</td>"); print("<td> ".$row["apellido"]."</td>"); print("<td> ".$row["edad"]." </td></tr>"); } mysql_free_result($result); mysql_close($conexion); </table> </body> </html> 25 mysqli 26
Ejemplo 13.1 (mysqli) <html> <head> <title>ejemplo 13.1</title> </head> <body> <h3>ejemplo de uso de bases de datos con PHP y MySQL</h3> $mysqli = new mysqli("localhost", "root", "", "mydb"); if ($mysqli->connect_errno) { echo "Failed to connect to MySQL:(". $mysqli->connect_errno. ") ". $mysqli->connect_error; } $result=$mysqli->query("select * from persona"); 27 Ejemplo 13.1 (cont ) <table border="1" cellspacing="1" cellpadding="1"> <tr> <td> Nombre</td><td> Apellido </td><td> Edad </td> </tr> while($row = $result->fetch_assoc()) { print("<tr><td> ".$row["nombre"]."</td>"); print("<td> ".$row["apellido"]."</td>"); print("<td> ".$row["edad"]." </td></tr>"); } $result->free(); $mysqli->close(); </table> </body> </html> 28
Ejemplo 13.1 Resultado 29 PDO 30
Ejemplo 13.1 (PDO) <html> <head> <title>ejemplo 13.1</title> </head> <body> <h3>ejemplo de uso de bases de datos con PHP y MySQL</h3> try{ $DBH = new PDO("mysql:host=localhost;dbname=mydb", "root", "root"); } catch(pdoexception $e) { echo $e->getmessage(); } $result = $DBH->query('SELECT * FROM persona'); 31 Ejemplo 13.1 (cont ) <table border="1" cellspacing="1" cellpadding="1"> <tr> <td> Nombre</td> <td> Apellido </td> <td> Edad </td> </tr> while($row = $result->fetch(pdo::fetch_assoc)) { print("<tr><td> ".$row["nombre"]."</td>"); print("<td> ".$row["apellido"]."</td>"); print("<td> ".$row["edad"]." </td></tr>"); } $DBH=null; </table> </body> </html> 32
Ejemplo 13.1 Resultado 33