PDF de programación - PHP

Imágen de pdf PHP

PHPgráfica de visualizaciones

Publicado el 23 de Diciembre del 2018
727 visualizaciones desde el 23 de Diciembre del 2018
198,3 KB
34 paginas
Creado hace 6a (08/04/2013)
PHP

Aplicaciones Web/Sistemas Web

Juan Pavón Mestras
Dep. Ingeniería del Software e Inteligencia Artificial
Facultad de Informática
Universidad Complutense Madrid

Material bajo licencia Creative Commons

PHP

 PHP: Hypertext Preprocessor
 Lenguaje de script que se ejecuta en el servidor
 El resultado se devuelve al navegador como HTML
 Capacidad para:

• Generar páginas de contenido dinámico

• HTML, imágenes, videos, PDF, XML, etc.

• Crear, abrir, leer, escribir, cerrar ficheros en el servidor
• Utilizar bases de datos
• Procesar datos de formularios
• Enviar y recibir cookies
• Control de acceso de usuarios al sitio web
• Encriptar datos

 Alternativas

 CGI/Perl
 Microsoft ASP y ASP.NET (C# y Visual Basic .NET como lenguajes)
 JSP/Java servlets
 ColdFusion (Adobe)

Juan Pavón - UCM 2012-13

Aplicaciones Web / Sistemas Web

2

Instalación y configuración

 Instrucciones de instalación de PHP en sitio web oficial:

 http://php.net/manual/en/install.php
 Requiere también la instalación de una base de datos

• MySQL
• PostgreSQL

 Configuración de PHP

 Fichero php.ini
 Se puede ver con phpinfo()

 Editores PHP

 http://free-php-editor.com/
 http://en.wikipedia.org/wiki/List_of_PHP_editors

• Aptana Studio
• Eclipse con PHPEclipse o PHP Development Tools
• Netbeans
• Notepad++
• Adobe Dreamweaver

Juan Pavón - UCM 2012-13

PHP

PHP en un servidor Web

web Servidor Web dinámico

Cliente

Navegador

«request»

GET index.php

código
HTML

Servidor Web

httpd

Intérprete PHP
(Genera HTML)

Busca página index.php

Consulta

index.php

Repositorio
de páginas

Base de

datos

Juan Pavón - UCM 2012-13

PHP

3

4

Funcionamiento de PHP

holamundo.php
<html>
<head>
<title>Hola Mundo PHP</title>
</head>
<body>
<?php echo '<h1>Hola Mundo PHP</h1>'; ?>
</body>
</html>

intérprete PHP

<html>
<head>
<title>Hola Mundo PHP</title>
</head>
<body>
<h1>Hola Mundo PHP</h1>
</body>
</html>

GET holamundo.php

Juan Pavón - UCM 2012-13

PHP

Versiones de PHP

 Personal Home Page Tools (PHP Tools)

 Creado por Rasmus Lerdorf (1995) para mostrar su CV y guardar

datos, como las consultas a su página web

 PHP 4 (2000), con el motor Zend Engine 1.0
 PHP 5 (2004), con el motor Zend Engine II

 Nuevo modelo de objetos, mejoras de rendimiento y mayor soporte de

integración con otras herramientas y lenguajes

 Actualmente 5.5 (2013)
 Web oficial: http://www.php.net

 Licencia PHP

 Similar a GNU GPL, pero con restricciones en el uso del término "PHP"

 Otros usos

 Extensiones para poder hacer aplicaciones gráficas

• PHP-Qt
• PHP-GTK

 Para scripts en línea de comandos

• PHP-CLI (Command Line Interface)

Juan Pavón - UCM 2012-13

PHP

5

6

PHP

Elementos del lenguaje

Código PHP

 El servidor procesa código PHP en ficheros con extensión .php

 Un fichero .php puede contener texto de varios tipos:

• Código PHP
• Código HTML
• Código JavaScript

 El código PHP normalmente está embebido en texto HTML

 <?php ... ?>

• Sintaxis recomendada

 <? ... ?>

• Short tags: Requiere que esté habilitada con la propiedad

short_open_tag on en el fichero de configuración php.ini

 <script language="php"> ... </script>
• Como scripts en HTML (poco habitual)

 <% ... %>

• Estilo de ASP (no válido a partir de PHP 5.3)
• Requiere que esté habilitada con la propiedad asp_tags on en el

fichero de configuración php.ini

Juan Pavón - UCM 2012-13

PHP

8

Código PHP

 Evaluación de expresiones en línea

 <?= expresión ?>

• Equivale a <?php echo(expresión) ?>

<html>
<head>

</head>
<body>

</body>
</html>

<title>Evaluación de expresiones en línea</title>

<!‐‐ Expresión en línea ‐‐>
<p>2+2= <?= 2 + 2 ?></p>

<!– Forma habitual de incluir código PHP ‐‐>
<p>2+2= <?php echo(2 + 2); ?></p>

Juan Pavón - UCM 2012-13

PHP

9

Inclusión de ficheros PHP

 Se pueden incluir otros ficheros con funciones de inclusión PHP:

 require('/directorio/fichero');
 include('/directorio/fichero');
 require_once('/directorio/fichero');
 include_once('/directorio/fichero');

• require produce un error fatal y la terminación del script si falla
• include solo produce un warning
• include_once y require_once para incluir definiciones estáticas

 El directorio desde donde se buscan los includes se define en la

directiva include_path del fichero php.ini

<html>
<?php
require ($_SERVER['DOCUMENT_ROOT'].'cabecera.php');
?>
<body>
<p>La cabecera de este documento la ha generado un programa PHP. 
</p>
</body>
</html>

Juan Pavón - UCM 2012-13

PHP

10

Sintaxis de PHP

 PHP distingue entre mayúsculas y minúsculas
 Instrucciones

 Todas las instrucciones acaban con ;

• Solo la última instrucción puede no acabar en ;

 Se recomienda escribir cada instrucción en una línea

• Aunque pueden ir en varias líneas
• Los espacios y las líneas en blanco no se consideran

<?php
echo "Hola Mundo";
?>

 Comentarios

<?php
echo 
"Hola Mundo";
?>

Este sí

<?php
echo "Hola 
Mundo";
?>

 // o # para comentarios hasta el final de la línea
 /* ... */ para comentarios en varias líneas

Juan Pavón - UCM 2012-13

PHP

11

Generación de código HTML

 Indistintamente con echo o print

void echo(string argument1 [, ...string argumentN])
int print(argument)
 Son similares salvo que print

• Solo tiene un argumento (echo puede tener varios)
• print devuelve 1 (significa que ha generado la salida)

$usuario = "Juan";
echo "<p>Bienvenido $usuario</p>";
print "<p>Bienvenido $usuario</p>";
print("<p>Bienvenido $usuario</p>");

<p>Bienvenido Juan</p><p>Bienvenido Juan</p><p>Bienvenido Juan</p>

Juan Pavón - UCM 2012-13

PHP

12

Generación de código HTML

 Cuando hay varios argumentos a los que se les quiere aplicar un

formato: printf
integer printf(string format [, mixed args])
 Tipos:
• %b
• %c
• %d
• %f
• %o
• %s
• %u
• %x

número binario
carácter ASCII
número entero
número en coma flotante
número en octal
string
número decimal sin signo
hexadecimal

printf("%d kilos de caramelos cuestan %.2f euros", 3, 27.90);

3 kilos de caramelos cuestan 27.90 euros 

 sprintf() hace lo mismo pero genera un string que se puede

asignar a una variable

Juan Pavón - UCM 2012-13

PHP

13

Variables

 Todas las variables empiezan con el signo '$'

$identificador

 El identificador comienza por letra o subrayado '_'
 El resto de caracteres pueden ser letras, números o subrayado '_'
 El identificador tiene en cuenta mayúsculas y minúsculas
 Se definen automáticamente en su primera utilización
 No se declara el tipo de las variables

 Se puede averiguar con gettype() o var_dump()

 Las variables se pueden asignar

 Por valor
 Por referencia (con &)

• Un cambio en la referencia también se aplica a la variable original

$x  = 'equis';
$_x = &$x;
$_x = 'x'; 
echo $x;
echo $_x;

// referencia a $x

// x
// x

PHP

Juan Pavón - UCM 2012-13

14

Variables

 Ámbito de variables

 Local

• Una variable definida en una función está limitada a dicha función
• Se elimina al acabar la ejecución de la función
• Salvo si la variable se declara como static
• Las variables static solo se usan en la función
• En las siguientes invocaciones a la función preservan su valor anterior

 Global

• Una variable definida fuera de una función
• Se pueden definir en una parte y usarse en otra

• Pero no dentro de las funciones
• A menos que se declare en la función con la palabra clave global
• O que se acceda con el array $GLOBALS[indice]

• Existen durante todo el tiempo de proceso del fichero

• Al acabar de procesar la página se eliminan las variables globales
• Nuevas ejecuciones definen nuevas variables globales

 Superglobal

• Siempre disponibles

• Variables predefinidas en el lenguaje, como $GLOBALS

Juan Pavón - UCM 2012-13

PHP

15

Ejercicio

 Variables

 ¿Cuál será la salida del siguiente código?

<?php

?>

$x=1;
$y=2;
function prueba() {

$x=9;
echo $x.' ';
echo $GLOBALS['x'].' ';
global $y;
$y = $x + $y;

}
prueba();
echo $x.' ';
echo $y.' ';

Juan Pavón - UCM 2012-13

PHP

16

Variables superglobales

 Variables predefinidas del lenguaje (son arrays asociativos)

 $GLOBALS: Referencia a las variables disponibles en el ámbito global
 $_SERVER: Información del entorno del servidor y de ejecución
 $_GET: Variables que se han pasado al script en un GET
 $_POST: Variables que se han pasado al script en un POST
 $_FILES: Elementos (ficheros) que se han pasado al script en un POST
 $_COOKIE: Variables pasadas al script como cookies HTTP
 $_REQUEST: contiene el contenido de $_GET, $_POST y $_COOKIE
 $_ENV: Variables del entorno del servidor
 $_SESSION: Variables disponibles para la sesión actual

echo $_SERVER['SERVER_NAME'];
echo $_SERVER['SERVER_ADDR'];
echo $_SERVER['REMOTE_ADDR'];
echo $_SERVER['HTTP_USER_AGENT'];
echo $_SERVER['DOCUMENT_ROOT'];

// nombre del (virtual) host
// IP del servidor
// IP del cliente
// El navegador del cliente
// Directorio raíz de los docs

echo 'Mi usuario es ' .$_ENV["USER"] . '.';

echo 'Hola ' . htmlspecialchars($_GET["nombre"]);// http://ejemplo.com/?nombre=Juan

echo 'Hola ' . htmlspecialchars($_COOKIE["nombre"]); // si existe el cookie nombre

Juan Pavón - UCM 2012-13

PHP

17

Evitar register_globals

 Antiguamente se utilizaba la directiva register_globals (en
php.ini) para permitir la inicialización automática de variables
globales
 En PHP 4.2.0 se decidió que fuera desactivada por defecto
 A partir de PHP 5.4.0 está eliminada

• http://www.php.net/manual/es/faq.using.php#faq.register-globals

 Agujero de seguridad:

<?php
// Se usa la variable $authorized para indicar si el usuario tiene privilegios
if (authenticated_user()) {
$authorized = true;

}
// Como no se ha inicializado previamente a false, 
// si register_globals está activado, podría inicializarse,
// por ejemplo, desde una petición GET auth.php?authorized=1
// que le daría el valor inicial como true. 
// Con código como el siguiente entraría como usuario autorizado:
if ($authorized) {

include "/datos/muy/privados/l
  • Links de descarga
http://lwp-l.com/pdf14662

Comentarios de: PHP (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad