Professional Documents
Culture Documents
PHP
Introduccin
30.10.2003
PHP
Caracteristicas
Caracteristicas:
Software libre
30.10.2003
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.
30.10.2003
PHP
Estticas vs Dinmicas
http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/01ej.html
30.10.2003
PHP
Estticas vs Dinmicas
30.10.2003
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
Estructura de Datos
y
Control de Flujo
30.10.2003
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
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
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
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
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
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
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
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
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
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
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
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]." ".
$arrVal["Apellidos"][1]."<BR>");
?>
30.10.2003
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
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
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;
?>
30.10.2003
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
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>;
?>
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
28
PHP
Sentencias de Control SWITCH
Condicional SWITCH
<?
$intNumber=1;
switch($intNumber){
case0:
echoCero;
break;
case1:
echoUno;
break;
default:
echoMayordeUno;
}
?>
30.10.2003
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);
?>
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
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
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
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
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
37