CEFIRE: Curso Administración de APACHE Práctica introducción al PHP PHP, acrónimo de "PHP: Hypertext Preprocessor", es un lenguaje "Open Source" interpretado de alto nivel, especialmente pensado para desarrollos web y el cual puede ser embebido en páginas HTML. La mayoría de su sintaxis es similar a C, Java y Perl y es fácil de aprender. La meta de este lenguaje es permitir escribir a los creadores de páginas web, páginas dinámicas de una manera rápida y fácil, aunque se pueda hacer mucho más con PHP. PHP es un lenguaje "open source" interpretado de alto nivel embebido en páginas HTML y ejecutado en el servidor. <html> <head> <title>Ejemplo inicial</title> </head> <body> <?php echo "Hola Mundo"; ?> </body> </html> Podemos ver que no es lo mismo que un script escrito en otro lenguaje de programación como Perl o C -- En vez de escribir un programa con muchos comandos para crear una salida en HTML, escribimos el código HTML con cierto código PHP embebido (introducido) en el mismo, que producirá cierta salida (en nuestro ejemplo, producir un texto). El código PHP se incluye entre etiquetas especiales de comienzo y final que nos permitirán entrar y salir del modo PHP. Lo que distingue a PHP de la tecnología Javascript, la cual se ejecuta en la máquina cliente, es que el código PHP es ejecutado en el servidor. Si tuviesemos un script similar al de nuestro ejemplo en nuestro servidor, el cliente sólamente recibiría el resultado de su ejecución en el servidor, sin ninguna posibilidad de determinar que código ha producido el resultado recibido. El servidor web puede ser incluso configurado para que procese todos los ficheros HTML con PHP. Lo mejor de usar PHP es que es extremadamente simple para el principiante, pero a su vez, ofrece muchas caracteristicas avanzadas para los programadores profesionales. No tengais miedo de leer la larga lista de caracteristicas de PHP, en poco tiempo podreis empezar a escribir vuestros primeros scripts. Ejemplos Sencillos sobre Apache 2.0.X Ejemplo 1: Formas de entrar y salir de HTML <HTML><h2>Forma estándar (recomendable) </h2></HTML> <?php echo("if you want to serve XHTML or XML documents, do like this\n"); ?> <HTML><h2>Segunda forma (configurable php.ini)</h2></HTML> <? echo ("this is the simplest, an SGML processing instruction\n"); ?> <?= expression ?> This is a shortcut for "<? echo expression ?>" <HTML><h2>Tercera via </h2></HTML> <script language="php"> echo ("some editors (like FrontPage) don't like processing instructions"); </script> <HTML><h2>Cuarta vía (configurable php.ini)</h2></HTML> <% echo ("You may optionally use ASP-style tags"); %> <%= $variable; # This is a shortcut for "<% echo . . ." %> Ejemplo 2: Variables en PHP <?php $bool = TRUE; // a boolean $str = "Cadena de caracteres"; // a string $int = 12; // an integer echo gettype($bool); // imprime el tipo de $bool: "boolean" echo "<br />\n"; echo gettype($str); // imprime el tipo de $str: "string" echo "<br />\n"; // incrementa el entero en 4 si es entero if (is_int($int)) { $int += 4; } // Si $bool es string, imprime su valor // (en caso contrario no imprime nada) if (is_string($str)) { echo "<br />\n"; echo "String: $str"; } ?> Ejemplo 3: Funciones <? function foo () { echo "Entrando en la función foo..."; ?><h2> texto escrito dentro de la función foo...</h2><? echo "Saliendo de foo."; } ?> <HTML><HEAD> <title>Página ejemplo 1 de php</title> </HEAD> <BODY> <h2>Texto escrito en la parte HTML </h2> <? foo(); ?> </BODY> </HTML> Ejemplo 4: Funciones con parámetros <?php function makecoffee ($type = "cappuccino") { return "Estoy tomando un cafe $type.\n"; } echo makecoffee (); echo "<br>"; echo makecoffee ("espresso"); ?> Ejemplo 5: Estructuras de Control <?php $a = 5; $b = 3; if ($a > $b) { print "a es mayor que b"; } else { print "a es más pequeño que b"; } ?> Ejemplo 6: Formateo y variables <?php echo "<h3>Postincrement</h3>"; $a = 5; echo "Should be 5: " . $a++ . "<br />\n"; echo "Should be 6: " . $a . "<br />\n"; echo "<h3>Preincrement</h3>"; $a = 5; echo "Should be 6: " . ++$a . "<br />\n"; echo "Should be 6: " . $a . "<br />\n"; echo "<h3>Postdecrement</h3>"; $a = 5; echo "Should be 5: " . $a-- . "<br />\n"; echo "Should be 4: " . $a . "<br />\n"; echo "<h3>Predecrement</h3>"; $a = 5; echo "Should be 4: " . --$a . "<br />\n"; echo "Should be 4: " . $a . "<br />\n"; ?> Ejemplo 7: Arrays <?php class foo { var $foo; var $bar; function foo() { $this->foo = 'dentro de PHP'; $this->bar = array('Elemento1', 'Elemento2', 'Elemento3'); } } $foo = new foo(); $name = 'Pep'; echo <<<EOT Mi nombre es "$name", y estoy aprendiendo a utilizar fuciones $foo->foo. Ahora, voy a imprimir un elemento de un array: {$foo->bar[1]}. Para imprimir caracteres especiales: 'A': \x41 EOT; ?> <?php $arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42)); echo $arr["somearray"][6]; // 5 echo $arr["somearray"][13]; // 9 echo $arr["somearray"]["a"]; // 42 ?> Ejemplo 8: Forumularios <HEAD> <title>Página ejemplo 1 de php</title> </HEAD> <BODY> <form action="action.php" method="POST"> Dime tu nombre: <input type="text" name="name" /> y tu edad: <input type="text" name="age" /> <input type="submit"> </form> Además la información que obtengo es: <?php phpinfo(); ?> </BODY> Fichero action.php Hola <?php echo $_POST["name"]; ?>. Tienes <?php echo $_POST["age"]; ?> años , y estas utilizando como navegador el <?php echo $_SERVER["HTTP_USER_AGENT"]; ?> Ejemplo 9: Objetos <?php class foo { function do_foo() { echo "Estoy dentro de la función do_foo del objeto bar de la clase foo."; } } $bar = new foo; $bar->do_foo(); ?> Ejemplo 10: Subir Ficheros <form enctype="multipart/form-data" action="action.php" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="30000"> Send this file: <input name="userfile" type="file"> <input type="submit" value="Send File"> </form> Ejemplo 11: Autentificación con PHP <?php if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); echo 'Text to send if user hits Cancel button'; exit; } else { echo "<p>Hola {$_SERVER['PHP_AUTH_USER']}.</p>"; echo "<p>El password introducido ha sido {$_SERVER['PHP_AUTH_PW']}.</p>"; } ?> Ejemplo 12: Re-Autentificación con PHP <?php function authenticate() { header('WWW-Authenticate: Basic realm="Test Authentication System"'); header('HTTP/1.0 401 Unauthorized'); echo "Has introducido un login y password valido para llegar a este recurso\n"; exit; } if (!isset($_SERVER['PHP_AUTH_USER']) || ($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) { authenticate(); } else { echo "<p>Welcome: {$_SERVER['PHP_AUTH_USER']}<br>"; echo "Old: {$_REQUEST['OldAuth']}"; echo "<form action='{$_SERVER['PHP_SELF']}' METHOD='POST'>\n"; echo "<input type='hidden' name='SeenBefore' value='1'>\n"; echo "<input type='hidden' name='OldAuth' value='{$_SERVER['PHP_AUTH_USER']}'>\n"; echo "<input type='submit' value='Comprobar autentificación'>\n"; echo "</form></p>\n"; } ?>