You are on page 1of 37

Introduccin a PHP

Resti Martinez Risque


Francisco M. SNCHEZ
fsanchez@fi.upm.es

2003 Resti MARTINEZ RISQUE

Copyright (c) 2003 Resti MARTNEZ RISQUE Permission is granted to copy,


distribute and/or modify this document under the terms of the GNU
Free Documentation License, Version 1.2 or any later version
published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the GNU Free Documentation License can be found in:
http://www.gnu.org/licenses/licenses.html#FDL

2003 Resti MARTINEZ RISQUE

PHP
Introduccin

Acrnimo de PHP Hypertext Pre-Processor


Concebido principalmente como herramienta
para el desarrollo de aplicaciones web
PHP permite disear pginas dinmicas del lado
del servidor.
Lenguaje interpretado de alto nivel embebido
en pginas HTML y ejecutado en el servidor
Ampliamente utilizado junto a ASP, JSP, Cold
Fusion y Perl.

30.10.2003

2003 Resti MARTINEZ RISQUE

PHP
Caracteristicas

Caracteristicas:

Software libre

Multiplataforma: U*x, Win32, Mac OS, etc ...

Soporte para multiples servidores: Apache, Microsoft IIS,


etc ...

Sigue la filosofia del Software Libre

Complemento ideal para el tandem LAMP (Linux-ApacheMySQL-PHP)

Sencillez de uso para programadores principiantes

Potente para programacin avanzada: BD, sockets,


grficos, etc

30.10.2003

2003 Resti MARTINEZ RISQUE

PHP
ASP vs PHP
ASP
Tecnologa propietaria de microsoft
Slo sobre plataformas Microsoft (*)
Gran coste econmico en software
adicional (* *)
Ejecucion Lenta debido a los
comunicaciones COM
*

PHP
Filosofa Software Libre
Varias Plataformas
Muchas opciones incluidas
de forma gratuita
Gran rapidez de ejecucin

- Existen soluciones como Sun ONE ASP que permiten su utilizacion sobre
Linux/Unix pero conlleva un coste elevado.

* * - ASPEncrypt (componente encriptacion),


- ServerObject's Qmail (componente para correo electronico),
- Artisans SAFileUp (componente para descargas de ficheros)

30.10.2003

2003 Resti MARTINEZ RISQUE

PHP
Estticas vs Dinmicas

Ejemplo1 Esttico : Listar Nmeros del 1 al 10

http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/01ej.html

30.10.2003

2003 Resti MARTINEZ RISQUE

PHP
Estticas vs Dinmicas

Ejemplo1 Dinmico: Listar Nmeros del 1 al 10.


http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/01ej.phps

30.10.2003

2003 Resti MARTINEZ RISQUE

PHP
Estticas vs Dinmicas
Cliente

Pginas
Estticas

Servidor

Peticin HMTL
Respuesta HMTL

Pginas
Dinmicas
Cliente

Go!
Servidor

Peticin PHP

Motor PHP

Respuesta HMTL

HTML
30.10.2003

2003 Resti MARTINEZ RISQUE

Estructura de Datos
y
Control de Flujo
30.10.2003

2003 Resti MARTINEZ RISQUE

PHP
Script en PHP
Para escribir cdigo PHP dentro de una pgina html, tenemos varias
alternativas:
* Incluir el cdigo entre <? y ?>
* Incluir el cdigo entre <?PHP y ?>
* Incluir el cdigo entre bloques <SCRIPT LANGUAGE="php"> y
</SCRIPT>
El resultado de la salida estndar de ese cdigo ser escrito en esa
misma posicin de la pgina html.

<HTML>
<BODY>
<?
echo"HolaMundo!<BR>";
?>
</BODY>
</HTML>
30.10.2003

2003 Resti MARTINEZ RISQUE

10

PHP
Comentarios en PHP
Los comentarios en PHP se escriben:
* Con // o # para comentarios de una sla lnea.
* Entre /* y */ para comentarios de una o ms lneas.
Ejemplo:

<?
/*Ttulo:MiPrimerapginaPHP
Autor:Yo
*/
//Saludamos
echo"HolaMundo!<BR>";
?>

30.10.2003

2003 Resti MARTINEZ RISQUE

11

PHP
Variables - Declaracion
Todas las variables en PHP empiezan con el caracter
dlar

"$"
Las variables se declaran simplemente inicializndolas:
<?
$strCadena="HolaMundo";
echo($strCadena);
?>

30.10.2003

2003 Resti MARTINEZ RISQUE

12

PHP
Variables - Tipos
Los tipos bsicos de PHP son : Integer, Double, String,
Array y Object.
Las variables booleanas no existen
Cualquier valor numrico distinto de 0 es TRUE
Cualquier cadena no vaca se considera TRUE
Las variables PHP no tienen un tipo fijo, dependen de la
ltima asignacin realizada.
La funcin gettype($nombrevar) permite obtener el tipo
de esa variable en forma de cadena:

30.10.2003

2003 Resti MARTINEZ RISQUE

13

PHP
Variables - Tipos
Ejemplo:
<?
$variable="Unacadena";
echo(gettype($variable));
$variable=0;
echo(gettype($variable));
?>
Is_Double($varname), Is_Array($varname),
Is_String($varname) y Is_Object($varname) tambin
nos permiten saber el tipo de una variable.

30.10.2003

2003 Resti MARTINEZ RISQUE

14

PHP
Variables - Cadenas
Las cadenas en PHP se especifican rodeadas por
comillas simples o por comillas dobles:
<?
$strCadena1="HolaMundo<BR>";
echo($strCadena1);
$strCadena2='HolaInmundo<BR>';
echo($strCadena2);
?>

30.10.2003

MARTINE
2003 2003
RestiResti
MARTINEZ
RISQUE

15

PHP
Variables - Cadenas
Existe un pequeo matiz entre una y otra:
http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/02ej.phps

<?
$strMsg="HolaMundo";
$strMsgIn="$strMsg<BR>";
echo($strMsgIn);
$strMsgIn='$strMsg<BR>';
echo($strMsgIn);
?>

30.10.2003

2003 Resti MARTINEZ RISQUE

16

PHP
Variables - Cadenas
El operador para concatenar cadenas es el punto ".":
http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/03ej.phps

<?
$strCadena="Hola";
$strCadena=$strCadena."Mundo";
echo($strCadena);
?>

30.10.2003

2003 Resti MARTINEZ RISQUE

17

PHP
Variables - Cadenas
Las comillas pueden abarcar ms de una lnea sin ningn
problema:
http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/04ej.phps

<?
$strConsulta='SELECT*FROMusersWHERE
login=\'Paco\'andpass=\'Pass\'';
echo$strConsulta;
?>
Para escapar las comillas se utiliza la combinacin \'.

30.10.2003

2003 Resti MARTINEZ RISQUE

18

PHP
Variables - Arrays
Los arrays en PHP son bastante potentes y flexibles:
http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/05ej.phps
<?
$arrVal[0]=1;
$arrVal[1]="Unacadena";
echo("\$arrVal[0]=$arrVal[0]<br>".
"\$arrVal[1]=$arrVal[1]<BR>");
?>

30.10.2003

2003 Resti MARTINEZ RISQUE

19

PHP
Variables - Arrays
Si no ponemos subndices, el valor asignado se asigna a
las siguiente posicin libre del array.
Al comenzar en la posicin 0 el codigo anterior quedaria:
<?
$arrVal[]=1;
$arrVal[]="Unacadena";
echo("\$arrVal[0]=$arrVal[0]<br>".
"\$arrVal[1]=$arrVal[1]<BR>");
?>

30.10.2003

2003 Resti MARTINEZ RISQUE

20

PHP
Variables - Arrays
Otra forma de crear arrays es mediante la construccin
Array():
<?
$arrVal=Array(1,"Unacadena");
echo("\$arrVal[0]=$arrVal[0]<BR>".
"\$arrVal[1]=$arrVal[1]<BR>");
?>

30.10.2003

2003 Resti MARTINEZ RISQUE

21

PHP
Variables - Arrays
Arrays Asociativos.
En vez de accederse por ndice, se accede por clave o
key
http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/06ej.phps
<?
$arrVal["nombre"]="Resti";
$arrVal["Apellidos"]=array("Martinez","Risque");
echo("\$arrVal[\"nombre\"]=$arrVal[nombre]<BR>".

"\$arrVal[\"Apellidos\"]=".
$arrVal["Apellidos"][0]."&nbsp;".
$arrVal["Apellidos"][1]."<BR>");
?>

30.10.2003

2003 Resti MARTINEZ RISQUE

22

PHP
Variables - Arrays
Arrays Asociativos.
La construccin Array() tambin puede usarse con
arrays asociativos:
http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/07ej.phps
http://www.htmlcodetutorial.com/_XMP.html

<?
$arrValores=array(
"nombre"=>"Resti",
"Apellidos"=>array("Martinez","Risque"));
echo"<xmp>";
print_r($arrValores);
echo"</xmp>";
?>

30.10.2003

2003 Resti MARTINEZ RISQUE

23

PHP
Variables - Arrays
La construccin List() nos permite asignar los valores
de un array a una serie de variables de una sola vez:
http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/08ej.phps
<?
$arrVal=Array(1,"Unacadena",1.2);
List($intNumber,$strCadena,$floNumber)=$arrVal;
echo("\$intNumber=$intNumber,<br>
\$strCadena='$strCadena',<br>
\$floNumber=$floNumber<br>");
?>

30.10.2003

2003 Resti MARTINEZ RISQUE

24

PHP
Variables - Conversiones
Para convertir una variable de un tipo a otro se emplea
el casting mediante parntesis:
<?
$strVariable="5";
$valor=(integer)$strVariable;
echo$valor+2;
?>

Tambin podemos emplear la funcin SetType($varname,


"vartype") para forzar que la variable $varname sea del
tipo vartype.

30.10.2003

2003 Resti MARTINEZ RISQUE

25

PHP
Variables - Conversiones
PHP es bastante consecuente en cuanto a los tipos, de
manera que si sumamos un nmero a una cadena, esa
cadena se convierte en un nmero:
http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/09ej.phps
<?
$strVariable="5";
$valor=(integer)$strVariable;
echo(($valor+2)."".($strVariable+3));
?>

30.10.2003

2003 Resti MARTINEZ RISQUE

26

PHP
Constantes
Las constantes en PHP son literales que no comienzan
por "$" y que se inicializan con la construccin
define(nomconst):
http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/10ej.phps
<?
define("MAX_CLIENTS",25);
echo(MAX_CLIENTS)."<br>;
echo(__LINE__)."<br>;
echo(__FILE__)."<br>;
?>

Las constantes predefinidas __FILE__ y __LINE__ nos


dan el nombre del fichero y el nmero de lnea actual
30.10.2003

2003 Resti MARTINEZ RISQUE

27

PHP
Sentencias de Control - IF
Las estructuras de control de PHP son iguales a las de
C
Condicional IF
http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/11ej.phps
<?
$intEdad=45;
if($intEdad<=18){
echoMenordeEdad;
}
elseif($intEdad<=65){
echoAdulto;
}
else{
echoJubilado;
}
?>
30.10.2003

2003 Resti MARTINEZ RISQUE

28

PHP
Sentencias de Control SWITCH
Condicional SWITCH
<?
$intNumber=1;
switch($intNumber){
case0:
echoCero;
break;
case1:
echoUno;
break;
default:
echoMayordeUno;
}
?>

30.10.2003

2003 Resti MARTINEZ RISQUE

29

PHP
Sentencias de Control - Bucles
Bucle FOR
<?
for($i=0;$i<=10;$i++){
echo$i.<BR>;
}
?>

Bucle WHILE
<?
$i=0;
while($i<=10){
echo$i.<BR>;
$i++;
}
?>

30.10.2003

Bucle DO...WHILE
<?
$i=0;
do{
echo$i.<BR>;
$i++;
}while($i<=10);
?>

2003 Resti MARTINEZ RISQUE

30

PHP
Funciones - Esqueleto
Un esqueleto tipico para las funciones es el siguiente:
http://gayuba2.datsi.fi.upm.es/~rmartinez/tutorial_php/ej12.php
<?
functionvoidColorear($strCadena,$strColor){
//Sacaunacadenaconelcolordeseado

echo("<FONT
COLOR=\"$strColor\">$strCadena</FONT>");
}
voidColorear("Verde","green");
echo"<br>";
voidColorear("Azul","blue");
?>

30.10.2003

2003 Resti MARTINEZ RISQUE

31

PHP
Funciones - Parametros
Parametros por Defecto.
Siempre que una funcin tenga n parmetros por
defecto, stos debern ser los n ltimos parmetros
declarados.
http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/13ej.phps
<?
functionvoidColorear($strCadena,$strColor=blue){
//Sacaunacadenaconelcolordeseado

echo("<FONT
COLOR=\"$strColor\">$strCadena</FONT>");
}
voidColorear("Verde","green");
echo"<br>";
voidColorear("Defecto");
?>

30.10.2003

2003 Resti MARTINEZ RISQUE

32

PHP
Funciones - Parametros
Parametros por Referencia.
En PHP por defecto los parmetros se pasan por valor.
Si queremos que los valores se modifiquen en la
funcion tendremos
que pasarlo por refencia.
http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/14ej.phps
<?
functionvoidConcatena(&$strDes,$strOrg){
//Concatena$strOrgcon$strDes
$strDes=$strDes.$strOrg;
}
$strCad1="Hola";
$strCad2="Mundo";
voidConcatena($strCad2,$strCad1);
echo"\$strCad1=$strCad1<br>\$strCad2=$strCad2<br>";
?>
30.10.2003

2003 Resti MARTINEZ RISQUE

33

PHP
Formularios
Los formularios sirven para enviar informacion del
Cliente al Servidor
Existen varias formas de creacin de pginas PHP
para procesar la informacin que llega de los clientes.
1 archivo HTML para Enviar y 1 archivo PHP para
recibir
1 archivo PHP para Enviar y 1 archivo distinto PHP
para recibir
1 archivo PHP para Enviar y el mismo archivo para
recibir.

30.10.2003

2003 Resti MARTINEZ RISQUE

34

PHP
Formularios
Ejemplo 15; de un formulario con una sola pagina Web.
<html>
<head></head>
<body>
<?
if(isset($_POST["login"])&&isset($_POST["pass"])){

echo"SELECT*FROMUSERSWHERELOGIN='".$_POST["login"]."'ANDPASS='".$_POST
["pass"]."'";
}
else{?>
<formmethod="post">
<table>

<tr>

<td>Login:</td><td><inputtype="text"name="login"></td>
<tr>

<td>Password:</td><td><inputtype="text"name="pass"></td>

</tr>

<tr>

<tdcolspan="2"><inputtype="submit"value="Enviar"></td>

</tr>
</table>
</form>
<?}?>
</body>
</hmtl>
2003 Resti MARTINEZ RISQUE

30.10.2003

35

PHP
Formularios
Mismo ejemplo utilizando el metodo GET (ejemplo 16).
<html>
<head></head>
<body>
<?
if(isset($_GET["login"])&&isset($_GET["pass"])){
echo"SELECT*FROMUSERSWHERELOGIN='".$_GET["login"]."'ANDPASS='".
$_GET["pass"]."'";
}
else{?>
<formmethod="get">
<table>
<tr>
<td>Login:</td><td><inputtype="text"name="login"></td>
<tr>
<td>Password:</td><td><inputtype="text"name="pass"></td>
</tr>
<tr>
<tdcolspan="2"><inputtype="submit"value="Enviar"></td>
</tr>
</table>
</form>
<?}?>
</body>
2003 Resti MARTINEZ RISQUE
30.10.2003 </hmtl>

36

PHP
Formularios
Hay que destacar la importancia de validar en
Servidor todos los datos que recibimos por parte del
Cliente.
Un dato que no validemos supondra un agujero de
seguridad bastante fcil de atacar.
Tpicos ataques por no validar:
Ataque de Inyeccion SQL

Ataque de Cross-Site-Scripting

30.10.2003

2003 Resti MARTINEZ RISQUE

37

You might also like