Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Septiembre 2010
Introduccin a PHP
Soportado por los principales servidores HTTP Acceso a los principales servidores de Bases de Datos Diseo modular de fcil ampliacin Software libre
04/05/2012 Hugo Snchez 2
Historia y Desarrolladores
Fechas Inicio del desarrollo en otoo de 1994 PHP Versin 1 en primavera 1995 PHP Versin 2 1995-1997 PHP Versin 3 1997-2000 PHP Versin 4 en el segundo trimestre de 2000 Equipo de Desarrollo (195 personas) Zeev Suraski y Andi Gutmans (Israel) Shane Caraveo (Florida) Stig Bakken (Norway) Andrei Zmievski (Lincoln, Nebraska) Sascha Schumann (Dortmund, Germany) Thies C. Arntzen (Hamburg, Germany) Jim Winstead (Los Angeles) Sam Ruby (Raleigh, NC) Rasmus Lerdorf (San Francisco)
04/05/2012 3
3,314,634 Dominios, 637,746 Direcciones IP 19,823,296 Dominios analizados PHP instalado en el 16.7% de todos los dominios 1,322,329 Servidores Apache analizados 429,589 (32.49%) PHP 247,642 (18.73%) Frontpage 133,414 (10.09%) mod_perl 111,576 (8.44%) mod_ssl 78,030 Salvador Contreras H. (5.90%) OpenSSL MC. 46,404 (3.51%) ApacheJServ
June 2003 Netcraft Report 40,936,076 Domains queried 12,749,410 Domains. 1,317,425 IP addresses PHP installed on 31% of all domains Source: http://www.netcraft.com
04/05/2012 5
March 2003 Apache Module Report %6,813,534 Apache Servers surveyed% %3,510,294 (51.52\%) PHP% %2,075,828 (30.47\%) OpenSSL% %2,007,598 (29.46\%) mod_ssl% %1,486,868 (21.82\%) Frontpage% %1,407,732 (20.66\%) mod_perl% % 401,097 (5.89\%) DAV% % 348,856 (5.12\%) mod_throttle% % 206,122 (3.03\%) mod_jk% % 175,924 (2.87\%) AuthMySQL% % 190,290 (2.79\%) mod_log_bytes% % 185,076 (2.72\%) mod_bwlimited% Source: http://www.securityspace.com/s_survey/data/index.html
6
04/05/2012
Plataformas soportadas
Plataformas (actualidad): UNIX (todas las variantes) Win32 (NT/W95/W98/W2000,2003 server, XP,Vista) Mac OS/2 Servidores: Apache (UNIX,Win32) CGI fhttpd ISAPI (IIS, Zeus)
Internet Server Application Programming Interface
04/05/2012
Adabas D Empress IBM DB2 Informix Ingres Interbase Frontbase mSQL Direct MS-SQL MySQL ODBC Oracle (OCI7,OCI8) PostgreSQL Raima Velocis Solid Sybase
Otros dBase filePro (slo lectura) dbm (ndbm, gdbm, Berkeley db)
04/05/2012
1. El lenguaje PHP
04/05/2012
04/05/2012
10
1.2. Delimitadores
<? echo Delimitadores para cdigo PHP; ?> <?php echo Segundo mtodo para delimitar cdigo PHP; ?> <script language="php"> echo Un mtodo para ms para delimitar cdigo en PHP; </script> <% echo 'Mtodo similar a ASP'; %>
04/05/2012
11
04/05/2012
12
1.3. Comentarios
/* Comentarios estilo C. * Pueden extenderse durante varias lneas. */
04/05/2012
13
04/05/2012
14
04/05/2012
15
$mivar = 123; echo $mivar; // Se convierte a string $mivar = 3; // Se convierte a entero $mivar = 2 + $mivar; // para realizar la suma
04/05/2012
16
1.4.1.
Operador cast:
$mivar = (string)123;
04/05/2012
17
En el cuerpo de un archivo, las variables son GLOBALES al archivo y archivos incluidos. En una funcin, son LOCALES a esa funcin. Dentro de una clase, slo pueden ser accedidas a travs del operador -> sobre el nombre del objeto.
04/05/2012
18
$MiVar = 1.3e4;
$MiVar[2] = 123;
Strings.
Objetos:
04/05/2012
$MiArray[0] = 1;
$MiArray[1] = hola!!;
$MiArray[] = 3; echo $MiArray[2]; // 3
04/05/2012
20
$MiOtroArray[1][pepe][4] = 3 dimensiones!;
04/05/2012
21
04/05/2012
22
04/05/2012
23
04/05/2012
24
Se puede acceder a cada carcter como si fuera un array: $cad2 = Tercer carcter de \$cad : $cad[2];
04/05/2012 25
1.7. Constantes.
Las constantes se definen con la funcin define(): define(SALUDO, Hola, mundo!); echo La constante SALUDO vale . SALUDO; Las constantes en PHP se diferencian de las variables en que: no llevan el smbolo del dlar delante. puede accederse a ellas desde cualquier parte del cdigo donde han sido definidas, sin restricciones de mbito como en las variables. no pueden ser redefinidas o borradas una vez definidas. slo pueden contener valores escalares, no vectores.
04/05/2012 26
04/05/2012
27
04/05/2012
28
04/05/2012
29
04/05/2012
30
04/05/2012
31
04/05/2012
32
$var1 = 1; $var2 = 1; $var3 = 1; ($var1 == $var2) ($var1 == $var3) ($var1 === $var2) ($var1 === $var3)
// Asignacin
// // // //
Cierto, son iguales Son iguales (tras conversin) Cierto, son idnticas FALSO, el tipo no coincide
04/05/2012
33
04/05/2012
34
1.9.6. Comparaciones.
Operacin Nombre Resultado Cierto si el valor de $a no es $a != $b No igual igual al de $b. Cierto si $a no es igual a $b, o $a !== $b No idntico si no tienen el mismo tipo. Cierto si $a es estrictamente $a < $b Menor que menor que $b. Cierto si $a es estrictamente $a > $b Mayor que mayor que $b. Cierto si $a es menor o igual $a <= $b Menor o igual que que $b. Cierto si $a es mayor o igual $a >= $b Mayor o igual que que $b.
04/05/2012 35
$a = 1; $b = 2; $c = El resultado de . $a . + . $b . es . $a + $b;
04/05/2012
36
04/05/2012
37
1.9.9. Precedencia.
, or xor and print = += -= *= /= .= %= &= |= ^= ~= <<= >>= ?: || && |
^ & == != === !== < <= > >= << >> +-. */% ! ~ ++ -- (int) (double) (string) (array) (object) @ [ new
04/05/2012
38
04/05/2012
40
04/05/2012
41
1.10.4. for
for (expresin1; expresin2; expresin3) { comandos } $factorial5 = 1; for ($i = 2; $i <= 5; $i++ ) { $factorial5 *= $i; }
04/05/2012
42
04/05/2012
43
// PHP <?php for ($i = 1; $i <= 100; $i++) { echo $MiVar; } ?>
04/05/2012 44
1.10.5. foreach
foreach (array as variable) { comandos } $a = array (1, 2, 3, 17); foreach ($a as $v) { print "Valor actual de \$a: $v.\n"; } // // // //
04/05/2012
de de de de
1 2 3 17
45
04/05/2012
46
1.10.6. switch
switch (variable) { case valor1: comandos1 case valor2: comandos2 ... case valorN: comandosN default: comandosDefault }
04/05/2012
47
04/05/2012
49
$x = "0"; if( $x )
04/05/2012
50
$x = array(); if( $x )
04/05/2012
51
Class Yod {} // clase vaca $x = new Yod(); if( $x ) // se evala a falso Class Yod { // clase no vaca var $x = 1; } $x = new Yod(); if( $x ) // se evala a cierto
04/05/2012 52
04/05/2012
53
1.12. Funciones.
04/05/2012
54
04/05/2012
56
04/05/2012
57
function &buscar_cliente($nombre) { // ... buscamos ... return $registro; } $cliente = &buscar_cliente(Juan); echo $cliente->rfc;
04/05/2012 58
require(cabecera.inc); If ($incluir == TRUE) { $archivos = array(uno, dos, tres); foreach ($ archivos as $ archivos ) { include($ archivos ); } }
04/05/2012 59
2. Programando en PHP
04/05/2012
60
2.1.1. Formularios
<form action="accion.php" method="POST"> Su nombre: <input type=text name=nombre><br> Su edad: <input type=text name=edad><br> <input type=submit> </form> Hola <?=$nombre?>. Tiene <?=$edad?> aos.
04/05/2012
61
2.1.2. Formularios
<form action="accion.php" method="POST"> <select multiple name=menu> > name=menu[] <option>Tortilla <option>Paella <option>Fabada <option>Lentejas </select><input type=submit></form> <?php echo "Su eleccin:<br>"; foreach($menu as $plato) { echo "$plato<br>\n"; } ?>
04/05/2012
62
2.2. Cookies.
int setcookie (string nombre [, string valor [, int fin [, string camino [, string dominio [, int seguro]]]]]) setcookie(PruebaCookie, expirar dentro de una hora, time() + 3600); setcookie(PruebaCookie, , time());
04/05/2012
63
2.3. Sesiones.
bool session_start(void); bool session_register (mixed name [, mixed ...]) bool session_destroy(void);
// Ejemplo, un contador session_start(); print($contador); $contador++; session_register("contador"); <A HREF="siguiente.php?<?=SID?>">Continuar</A>
04/05/2012
64
04/05/2012
65
04/05/2012
66
string substr (string cadena, int inicio [, int tamao]) $str $str $str $str = = = = substr('abcdef', substr('abcdef', substr('abcdef', substr('abcdef', 2, 3); -2); -2, 1); 1, -2); // // // // cde ef e bcd
04/05/2012
67
04/05/2012
Secuencias de formato
El carcter de tanto por ciento. Entero en binario. Entero como carcter ASCII. Entero en decimal. Double en punto flotante. Entero en octal. Cadena. Entero en hexadecimal (minsculas). Entero en hexadecimal (maysculas).
69
04/05/2012
04/05/2012
70
$busca = DAlton; // Habr que escapar el apstrofe $sql = SELECT * FROM usuarios WHERE apellido = \ . addslashes($busca) . \;
04/05/2012
71
04/05/2012
72
04/05/2012
73
04/05/2012
74
04/05/2012
75
$arr = array(1,'cosa',1.57,'gato'=>'raton','perro'=>'gato'); current($arr); next($arr); current($arr); prev($arr); end($arr); current($arr); key($arr); reset($arr); each($arr); each($arr); each($arr);
04/05/2012
// // // // // // // // // // //
sort():
rsort():
ksort(): rksort():
04/05/2012
77
Maysculas y minsculas:
string strtoupper (string cadena) string strtolower (string cadena) string ucfirst (string cadena)
04/05/2012
78
04/05/2012
79
04/05/2012
80
04/05/2012
81
2.6.4. Directorios.
int chdir (string directorio) int mkdir (string nombre, int modo) int rmdir (string nombre)
int opendir (string nombre) string readdir (int identificador) void closedir (int identificador)
04/05/2012
82
04/05/2012
83
04/05/2012
84
04/05/2012
85
04/05/2012
87
04/05/2012
89
04/05/2012
91
04/05/2012
92
04/05/2012
95
04/05/2012
96
04/05/2012
98