Вы находитесь на странице: 1из 84

Programacin Web con PHP

EduardoAyalaSnchez http://edwmx.netne.net

1. Repaso de HTML Bsico


1.1Introduccin
HTMLesunlenguajedemarcadodehipertextoysignifica,por sussiglaseningls,(hypertextmarkuplanguage). HTMLnoesunlenguajedeprogramacincomoloesJava,C+ +,Delphi,etc.HTMLesunsistemadecdigosquepermitecrear pginasweb. Estelenguajeesthechodeetiquetasyatributosquetrabajan conjuntamenteparadaralgunacaractersticaespecficaala pginaweb;elnavegadorinterpretadichasetiquetasyatributosy lasdespliegaenlapantalla.

1.2EstructuraBsica
Laestructuradelasetiquetasyatributoshacenusodelos picoparntesis<>,detalformaqueelnavegadorpueda reconocerlasinstruccionesdeHTMLynoconfundirlasconel contenidoquedesplegarlapgina. Paraindicarelfinaldelainstruccinseutilizalamisma etiquetaperoaadiendounadiagonal. Ejemplo:<TITLE>Miprimerapgina</TITLE>.

1.2EstructuraBsica(Cont.)
Laestructuraprincipaldeunapginawebestconformada porlassiguientesetiquetas: <HTML> <HEAD> <TITLE> </TITLE> </HEAD> <BODY> </BODY> </HTML> EmpiezaundocumentoHTML Zonadecabecera Zonadettulo Terminazonadettulo Terminazonadecabecera Zonadecuerpodeldocumento Terminazonadecuerpodeldocumento TerminadocumentoHTML

Ejemplo:
<html> <head> <title> Mi primer ejemplo. </title> </head> <body > Mi primer documento HTML </body> </html>

1.3Texto
Paraincluirtextoenunapginabastateclearsteentrelas etiquetas<BODY>y</BODY>;sinembargo,podemoshacer usodeetiquetasparamejorarlaaparienciadelainformacin. Lasetiquetasqueseutilizanconmayorfrecuenciaparadar formatoaltextoson: <B></B> Textoennegrilla <I></I> Textoenitlica <U></U> Textosubrayado <P> Etiquetadeprrafo <BR> Etiquetaparaintroducirsaltosdelnea <BLOCKQUOTE></BLOCKQUOTE> introducirsangra <FONT></FONT> Fuente

1.3Texto(Cont.)
Losatributosquepermitenhacermodificacionessobrela tipografaseincluyenenlaetiqueta<FONT>;acontinuacin mostramoslosatributosdeestaetiqueta. FACE="x" Paradefinireltipodeletra(estetipodeletra deberestarprecargadoenlacomputadoradelusuariodelo contrarionoseverestafuenteylamquinaocuparaotra), COLOR="x" SIZE="x" Colordelafuente Tamaodelaletra.

Ejemplo:
<html> <head> <title> Modificando el texto. </title> </head> <body bgcolor=yellow text=white> Este es un texto sin formato <br>Introduje un salto de lnea<br> <i> Texto en italica </i><br> <b> Texto en negrillas </b><br> <u> Texto subrayado </u><br> <blockquote> Con sangria </blockquote> </body> </html>

1.4Ligas
Elusodeligascaracterizaalaspginaswebyaquepermite enlazardiferentespginas,yaseandeunmismositio,obien, haciaotroladoenInternet. Alasligasqueseencuentranenunmismositioselellaman absolutas,lasqueseencuentranfueradestesellaman relativas. Laetiquetaparahacerlosenlacesoligaseslasiguiente: <a></a> insertarliga

ytienevariosatributos,entreellosHREFyTARGET.

1.4Ligas(Cont.)
HREF <ahref="http://www.uam.mx">UniversidadAutnoma Metropolitana</a> Cuandounapginaesmuyextensapodemoscrearenlaces entreellamisma,paraelloesnecesarioutilizardosligas.La primeraindicalapalabraalacualsaltareltextoylasegunda sirveparaidentificardichapalabracomoun"ancla". <ahref="#Palabraclave">Irhaciapalabra</a> <aname="Palabraclave"></a>

1.4Ligas(Cont.)
TARGET Elatributotargetseutilizaparaindicarlaventanaenlacualse desplegarelcontenidodelaligaquesehaactivado. TARGET="_blank" sedesplegarenunaventananueva TARGET="_Parent" sedesplegarenlaventanaoriginal TARGET="_self" sedesplegarenlamismaventana TARGET="nombre_de_frame" sedesplegarenlaventana indicada(seutilizacuandoempleamosframes)

1.5Imgenes
Laetiquetaparainsertarimgenesenundocumentoes: <IMGSRC=imagen.jpg"> Insertaimgenes

Algunosdelosatributosdelasimgenesson: WIDTH="X" HEIGHT="X" ALIGN="X" Anchodelaimagen. Alturadelaimagen. Alineamientodelaimagen.

ElatributoALIGNtienetresopciones:top,middleybottom (arriba,abajoyenmedio,respectivamente).

Ejemplo:
<html> <head> <title> Modificando una Imagen </title> </head> <body> <img src=imagen.jpg width=300 height=300 align=middle> </body> </html>

1.6Tablas
Laetiquetaparaconstruirlastablaseslasiguiente: <table></table> Insertartabla

Paracomenzarunafilausaremoslaetiqueta<tr>.Podemos agregartantasfilascomoqueramosenunamismatabla.Para indicarelfinaldeunafilaseutilizalaetiqueta</tr>. Lasceldasseintroducenentrelasetiquetas<tr></tr>,por mediode<td>y</td>.Enlasceldaspodemosinsertar diferentetipodecontenido,yaseatexto,imgenes,ligas,etc.

1.6Tablas(Cont.)
Losatributosmscomunesdelaetiqueta<table>son: WIDTH="X" HEIGHT="X" BORDER="X" ALIGN="X" CELLPADDING="X" CELLSPACING="X" anchodelatabla altodelatabla anchodelbordedelatabla alineamientodelatabla espacioentreelcontenidodeunacelda espacioentrelosbordesdelatabla

Laetiqueta<td>tambinposeeatributosquepermitendistribuirel contenidodelaceldaoeltamaodelamisma.Dichosatributos son: WIDTH="X" HEIGHT="X" ALIGN="X" VALIGN="X"

anchodelacelda altodelacelda alineacindelcontenidodelacelda alineacinverticaldelcontenido

Ejemplo:
<html> <head> <title> Modificando una Tabla </title> </head> <body> <table border cellspacing=10> <tr> <td>cell1</td> <td>cell2</td> </tr> <tr> <td>cell3</td> <td>cell4</td> </tr> </table> </body> </html>

1.7Frames
Paratrabajarconframesesnecesariodefinirlosprimeroy estolohacemospormediodeunnuevodocumentoHTMLen dondeindicaremoseltamaodecadaunadelasventanas quenecesitaremosylamaneraenqueirndistribuidos.Al definirlosframesnoesnecesarioincluirlasetiquetasdela estructurabsicadeundocumentoHTML. FRAMESET definecomoirndistribuidoslosframes dividirlapantallaendeterminado nmerodecolumnas,siendoxun tamaopredeterminado dividirlapantallaendeterminado nmeroderenglones,siendoxun tamaopredeterminado

COLS="X%,X%" ROWS="X%,X%"

Ejemplo:
<frameset cols=40%,60%"> <frame src=http://www.izt.uam.mx"> <frame src=http://turing.izt.uam.mx" name=principal> </frameset>

Ejercicios
Agregarunatablacon3celdas,yagregarunaimagenenla celdanmero1conunanchoyaltode100pixeles,enla celdanmero2agregarunaligaquetellevealapginadela U.A.M.yqueestaligaladespliegueenunaventananuevay ellaceldanumero3agregarunafraseconletraArial12color azulenitalicas. Crearunapginaquemuestretresenlacesadistintas paginas.Dividirlapantallaendosenlacuallasdospartes muestrenlosmismosenlaces,laprimerparte"Hacerla aperturaenotraventana"ylasegunda"Hacerlaaperturaen lamismaventana".

2. Iniciacin a PHP
2.1Conceptosbsicos
Lenguajesdescript PHPesunlenguajedescriptdelladodelservidor.Otros lenguajessimilaressonASP,JSPoColdFusion Originariamente(1994):"PersonalHomePage" Actualmente:"PHP:HipertextPreprocessor" LosscriptsPHPestnincrustadosenlosdocumentosHTMLy elservidorlosinterpretayejecutaantesdeservirlaspginasal cliente ElclientenoveelcdigoPHPsinolosresultadosqueproduce

2.1Conceptosbsicos(Cont.)

PHPesloquellamamosun lenguajedeprogramacindellado delservidor,estosignificaqueel cdigoseinterpretaenelservidor ynoenelordenadordelusuario.


2.2NuestroprimerPHP
AlgunasVentajas Embebido(embedded)enunapginahtml Multiplataforma(GNU/Linux,Windows,MacOS) IndependientedelSistemaOperativo! Fcildeaprender MuchosrecursosenlaWeb

2.2NuestroprimerPHP(Cont.)
IdeasBsicas PHPessensiblealasmaysculas Cmoseincrustaenlapginaweb? <?PHP ... ?> <?= expresin ?>equivalea<? echo expresin ?> Lasinstruccionesseseparanconun;comoenC. Comentarios:comoenC,/**/(variaslneas)y//(una lnea)

2.2NuestroprimerPHP(Cont.)
Sintaxisbsica Paraimprimir:echoyprint echo:muestraunaomscadenas echocadena1[,cadena2]; echo Hola mundo; echo Hola , mundo; print:muestraunacadena printcadena; printHola mundo; printHola . mundo;

Ejemplo:
<HTML> <HEAD> <TITLE>Mi primer programa en PHP</TITLE> </HEAD> <BODY> <?PHP print(<P>Hola mundo</P>); ?> </BODY> </HTML>

Ejemplo:(Cont.)
Cdigogenerado <HTML> <HEAD> <TITLE>Mi primer programa en PHP</TITLE> </HEAD> <BODY> <P>Hola mundo</P> </BODY> </HTML>

2.3Variables
Losnombresdevariablescomienzanconelsigno$yson sensiblesamaysculasyminsculas EnPHPnoesnecesariodefinireltipoantesdeutilizarla,las mismassecreanenelmomentodeemplearlas.Lasvariablesse declarancuandoseleasignaunvalor $dia = 24; //Una variable de tipo integer. $sueldo = 758.43; //Una variable de tipo double. $nombre = "juan"; //Una variable de tipo string. $exite = true; //Una variable boolean.

2.3Variables(Cont.)
Paraqueunavariableseaaccesibledesdecualquierpartede nuestroscriptphp,ladefiniremoscmoglobaldelasiguiente manera: global $miVariableGlobal = 'Hola'; Unaconstanteescomounavariableperoconladiferenciaque unaveztomaunvalorestenopuedevariardurantelaejecucion delscript,otraparticularidaddelasconstantesesqueson globales,porloquesepuedenleerdesdeelinteriordeuna funcionsintenerquepasarlascomoparametro. define ('miConstante','valor de mi constante');

Ejemplo:
<html> <head> <title>Variables</title> </head> <body> <?php $dia = 24; $sueldo = 758.43; $nombre = "juan"; $exite = true; echo "Variable entera: .$dia."<br>"; echo "Variable double: .$sueldo."<br>"; echo "Variable string: .$nombre."<br>"; echo "Variable boolean: .$exite; ?> </body> </html>

Ejemplo:
Algunostips <? $dia=10; $fecha="Hoy es $dia"; echo $fecha; ?> <? $nombreVariable = "miVariable"; $$nombreVariable = "Hola"; echo $miVariable; ?>

Ejercicios
HacerunprogramaenPHPqueescribatunombre(ennegrita),tu edadylaciudaddndenaciste. HacerunprogramaenPHPqueescribaelresultadodelasumade dosvariables(x=35ey=100). Detectarlos7errores: 1. <?php 2. $x = -1; 3. $y = 9; 4. $suma = x + y; 5. print("El valor de x es <i>$x<i>") 6. <br /> 7. print("El valor de y es <i>$y</i><br />"; 8. print("La suma es <b><i>$suma</i></b><br />"); 9. ?>;

3. Operadores en PHP
3.1AritmticosydeAsignacin
Setratadeoperadoresbinariosentodosloscasosyaque requierendosoperandosparafuncionarcorrectamente. Adicin(+)Devuelvelasumadelosdosoperandosquerecibe eloperador. Substraccin()Devuelveladiferenciaentreelprimeryel segundooperando. Multiplicacin(*)Devuelveelproductodelosoperandos. Divisin(/)Devuelveelcocienteenvalorflotantedelos operandos. Mdulo(%)Devuelveelrestodedividirelprimeroperando entreelsegundo.Esteoperadoresmuytilparasabersiun nmeroesmltipledeotro

Ejemplo:
<?php $a = 8; $b = 3; echo $a + $b,"<br>"; echo $a - $b,"<br>"; echo $a * $b,"<br>"; echo $a / $b,"<br>"; echo $a += 1,"<br>"; echo $a .= $b,"<br>"; echo $a *= 2,"<br>"; $a++; echo $a,"<br>"; $b--; echo $b,"<br>"; ?>

3.2Comparacin
Igual(==)Devuelve1silosoperandossonigualesaunque seandetipodistinto. Idntico(===)Devuelve1silosoperandossonigualesy delmismotipo. Diferente(!=o<>)Devuelve1silosoperandossn distintos. Noidnticos(!==)Devuelve1sisondistintosodetipo diferente. Menorque(<)Devuelve1sielprimeroperandoesmas pequeoqueelsegundo. Mayorque(>)Devuelve1sielprimeroperandoesmas grandequeelsegundo. Menoroigualque(<=)Devuelve1sielprimeroperandoes maspequeooigualqueelsegundo. Mayoroigualque(>=)Devuelve1sielprimeroperandoes masgrandeoigualqueelsegundo.

3.2Comparacin(Cont.)
Eloperadordecomparacinternarioesel'?:',esteoperador, evalaunacondicin,quepuedeserunaoperacinde comparacinbinariaysisecumpleejecutaelsegundo operando,delocontrarioejecutaeltercero: <? echo ($variable == 1) ? 'Vale 1' : 'Vale mas de uno'; ?> OperadorControldeErrores:Esteoperadorquese representaconelsignoarroba(@),permiteevitarquese imprimaenlapginaderesultadounerrorproducidoporla ejecucindelcdigoPHPenunalneadeterminada:

3.3Lgicos
LosoperadoresdeLgicanospermitencrearexpresiones mascomplejasparaevaluarnuestrasestructurasdecontrol, permitindonosenlazarvariasoperacionesdecomparacin conlosdiferentesoperadoresbolanos. Y(&&oand)Devuelve1siambosoperandossn1 O(||oor)Devuelve1sialgnoperandoes1 Oexclusivo(xor)Devuelve1sisolo1operandoes1

Ejemplo:
<? echo echo echo echo echo ?> "1: "2: "3: "4: "5: ",!((1 == 1) && (2 != 2)),"<br>"; ",!((1 == 1) and (2 != 2)),"<br>"; ",((1 == 1) || (2 != 2)),"<br>"; ",((1 == 1) or (2 != 2)),"<br>"; ",((1 == 1) xor (2 != 2)),"<br>";

Ejercicios
Tenerunabaseyunaalturadeunrectngulo,calcularsureaysu permetro,ymostrarlosresultadosporpantalla. Suponiendoladeclaracinprevia:x=7,y;,calcularelvalordela variableytrasevaluarcadaunadelassiguientesasignaciones .y=2+x; .y+=2; .y=(y==x); .y=y++x;

4. Instrucciones en PHP
4.1Condicionales
Laestructuraifnospermiteejecutarunbloquedeaccionessi secumpleunadeterminadacondicion,delocontrarionospermite ejecutarotrobloquedeaccionesidentificadoporlasentencia else. Hayotrasentnciaqueusamosamenudoparaunirmasdeun condicionalif,eslasentnciaelseif,estanospermitedarotra condicinporsinosehacumplidolaprimera,despuesdeelseif podemosvolverausarelseconnormalidad

Ejemplo:
<? $var1 = 2; if($var1 == 1){ echo 'La variable vale 1'; } elseif($var1 == 2){ echo 'La variable vale 2'; } else { echo 'La variable tiene otro valor'; } ?>

4.1Condicionales(Cont.)
Enmuchasocasiones,programandoenPHP,nosencontramosque queremoshacerunauotraaccindependiendodelvalordeuna variable,enestecaso,podramosusarunasucesindecondicionales if,peroelcdigoresultanteserconfusoydifcildemodificarenel futuroparaesoutilizamoslaestructuraswitch. <? switch ($i) { case 0: echo "Variable en valor bajo"; break; case 1: echo "Variable en valor alto"; break; default: echo "La variable no es binria"; } ?>

4.2Bucles
Elbuclewhileestainstruccinnospermiteefectuarunbloquede accionesmientrassecumplaunadeterminadacondicin,cuandodeje decumplirse,secontinuarejecutandoelrestodelcdigoPHP,la condicinsecumplemientrasnoderesultado0yestaformadapor operacionesPHP,sobretodoporoperacioneslgicasyde comparacin. <? $var1 = 0; while($var1 < 10){ echo "\$var1 = $var1<br>"; $var1++; // Incrementamos la variable } ?>

4.2Bucles(Cont.)
Elbucledowhileesensuesenciaigualalbuclewhileconla difernciadequeejecutalasaccionesantesdecomprobarla condicin,consiguiendoqueseejecutenlasaccionesunavezsila condicinretorna0oFALSE,as,estebucleseejecutarsiempreuna vezmasquewhilesitienenlamismacondicin: <? $var1 = 0; do { echo "\$var1 = $var1<br>"; $var1++; } while ($var1 < 10); ?>

4.2Bucles(Cont.)
Elbuclefornospermiteejecutarundeterminadobloquedeacciones unnmerodeterminadodeveces,aestaestructuralepasaremostres parmetrosquesepararemosporpuntoycoma(;)yquesern: accininicialInicializalavariabledecontroldelbucle condicinSeevalaencadaiteracin,cuandodevuelve0oFALSE secontinuaejecutandoelcdigodedespusdelfor accinSeejecutaencadabucleydebemodificarlavariabledela condicin <? for ($var1 = 0; $var1 < 10; $var1++){ echo "\$var1 = $var1"; } ?>

.VectoresenPHP
Sedefineelarreglo <?php $vector = array ( "elemento 1", "elemento 2" ); ?> Unavezdefinidoelvector,podemosaccederasuselementos,sus elementosestarnidentificadosporunnmero(empezandopor0)o unaclavequesepuededefiniras: <?php $vector = array ( "clave 1" => "elemento 1", "clave 2" => "elemento 2" ); ?>

.VectoresenPHP(Cont.)
Paraaccederaunelementousaremos[y]consuclave("clave1"o 0) <?php echo $vector[0];// elemento 1 echo $vector['clave 1'];// elemento 1 ?>

Ejemplo:
<?php $vector = array ( "elemento 1", "elemento 2" ); // Aadimos "elemento 3" al final $vector[] = "elemento 3"; // Aadimos un elemento con clave "clave 3" $vector['clave 3'] = "elemento 4"; // Cambiamos el texto al elemento 3 ( 2 contando el 0 ) $vector[2] = "elemento N"; // Borramos el 'clave 3'; unset ( $vector['clave 3'] ); print_r ($vector); ?>

4.2Bucles(Cont.)
Elbucleforeachnospermiteiterarparacadaelementodeun vector,susintaxisessencilla,solohayqueindicarelidentificadordela matriz,laexpresionasyseguidamentelavariablequeidentificarel valordelelemento: <? $vector = array("uno", "dos", "tres"); foreach ($vector as $valor) { echo "Valor: $valor<br>"; } ?>

Ejemplo:
<? $vector = array( "uno" => 1, "dos" => 2, "tres" => 3, "diecisiete" => 17 ); foreach($vector as $indice => $valor) { print "\$vector[$indice] => $valor.\n"; } ?>

4.3Salida
Hastaahorahemosusadolainstruccinechopararealizarsalidaa pantalla,estainstruccinesbastantelimitadayaquenonospermite formatearlasalida.Enestapginaveremoslainstruccinprintfque nosdamuchamspotencia. Sentenciaprintf. <?php printf(cadena formato, variable1, variable2...); ?> %s %d %f %c

Cadenadecaracteres. Nmeroentero. Nmerocondecimales. CarcterASCII.

Ejemplo:
<?php $var="texto"; $num=3; printf("Puede fcimente intercalar <b>%s</b> con nmeros con diferentes formatos: <b>%d %f %.2f</b> <br>",$var,$num,$num,$num); printf("<TABLE BORDER=1 CELLPADDING=20>"); for ($i=0;$i<10;$i++) { printf("<tr><td>%d</td></tr>",$i); } printf("</table>"); ?>

4.4ManejodeCadenas
1.strlen(cadena).Nosdevuelveelnmerodecarcteresdeuna cadena. 2.split(separador,cadena).Divideunacadenaenvariasusandoun carcterseparador. 3.substr(cadena,inicio,longitud).Devuelveunasubcadenadeotra, empezandoporinicioydelongitud. 4.chop(cadena).Eliminalossaltosdelneaylosespaciosfinalesde unacadena. 5.strpos(cadena1,cadena2).Buscalacadena2dentrodecadena1 indicndonoslaposicinenlaqueseencuentra. 6.str_replace(cadena1,cadena2,texto).Reemplazalacadena1por lacadena2eneltexto.

Ejemplo:
<?php echo strlen("12345"),"<br>"; $palabras=split(" ","Esto es una prueba"); for($i=0;$palabras[$i];$i++) echo $palabras[$i],"<br>"; echo substr("Devuelve una subcadena de otra",9,3),"<br><br>"; if (chop("Cadena \n\n ") == "Cadena") echo "Iguales<br><br>"; echo strpos("Busca la palabra dentro de la frase", "palabra"),"<br><br>"; echo str_replace("verde","rojo","Un pez de color verde, como verde es la hierba."),"<br>";

?>

Ejercicios
Generarunvaloraleatoriocomprendidoentre1y10.Luego mostraremosunmensajesiesmenoroiguala5osiesmayora5. Sugerencia:Utilizareloperadorternario?:recuerdautilizarlafuncin $valor=rand(1,10); Generarunvaloraleatorioentre1y100.Luegomostrarsitiene1,2o 3dgitos.Utilizarlasentenciaelseif. Visualizarlatablademultiplicardelosnumeros3,6,9.Sugerencia: Utilizarlassentenciasforowhile. Crearunamatrizdetamao3x3condgitosdel1al9ensuinterior posteriormentedesplegarenpantallaunatabladetamao3x3conlos dgitosdelamatriz. Deltextotantosmundos,tantossiglos,tantoespacioycoincidir imprimirenpantallaunalistaconlalongituddecadapalabra

5. Funciones
5.1Funciones
Paradeclararunafuncinutilizamoslaexpresinfunction seguidadelnombrequequeremosdaralafuncin,a continuacinyentreparntesis,losargumentosquerecibela funcinyfinalmenteyentrecorcheteselcdigoqueestadebe ejecutar,veamosunejemplo: <? function miFuncion ($argumento_1, $argumento_2) { // Codigo de la funcion } ?>

5.1Funciones(Cont.)
Llamadodeunafuncin. Unavezcreadalafuncin,ladebemosllamarcomounafuncin prefabricadadePHP,porsunombrepasandolosargumentosque necesita. Valorderetorno Esinteresantesaberquelasfuncionespuedendevolverunvaloral lugardondelasllamamos,estosehacegraciasalainstruccinreturn seguidadelvalorderetorno,veamosesteejemplo: <? function saludo($nombre,$momento){ return "Hola $nombre buenas $momento"; } echo saludo("Pepe","tardes"); ?>

Ejemplo:
Pordefectolosparmetrossepasanporvalor Pasoporreferencia: <? function incrementa (&$a) { $a= $a+ 1; } $a=1; incrementa ($a); incrementa ($a); print $a; ?>

5.2Libreras
Elusodelibrerasestremendamentetil,nospermitenagrupar variasfuncionesyvariablesenunmismoarchivo,demaneraque luegopodemosincluirestalibreraendistintaspginasydisponerde esasfuncionesfcilmente. Media.phtml <? function mediaAritmetica($a,$b){ return ($a+$b)/2; } ?>

Ejemplo:
<html> <head> <title>Media Aritmetica</title> </head> <body> <? include(Media.phtml); $mediaAritmetica = mediaAritmetica(6,4); echo La media es: $mediaAritmetica; ?> </body> </html>

Ejercicios
Generaunafuncinquerecibacomoparmetro2nmerosyregrese elresultadodelasumadeambosparaposteriormentemostrarlosen pantalla. Generaunafuncinquerecibacomoparmetro2nmerosyregrese elresultadodelasuma,resta,multiplicacinydivisindeambos nmeros.Sugerenciautilizarpasodeparmetrosporreferencia. Incluyeunafuncindentrodeunarchivophp,queimprimalatablade multiplicardelnumeroqueselepaseporparmetroyagrgalacomo libreraenotroarchivophpdondeseejecutara

6. Ejemplos prcticos
6.1EnlaceExterno
ParapasarvariablesporlaURLdelapaginaseutilizael smbolo?Delasiguientemanera: pagina.php?name=TuNombre&age=TuEdad <? $nombre = $_GET[name]; $edad = $_GET[age]; echo Tu eres .$nombre.<br>; echo y tienes .$edad. aos cumplidos; ?>

7. Procesado de formularios
7.1Enviyrecepcin
Unformularioesunentornodeinteraccinconelvisitantede unapginaweb,ensuinteriorencontramosunseguidode camposdeformularioeditablesporelusuario,quelepermiten enviarinformacionanuestroservidordondelapodremostratar porejemploconPHP. Atributosdelaetiquetadeformulario actionDefineladirecciondelprogramaquetratarlosdatos enviados,estaserasimismoladireccionqueverelusuariouna vezenviadoslosdatos methodDefinelamaneraenquesnenviadoslosdatosdel formulario,pudiendoserGET(Datosvisiblesenlabarrade direccion)oPOST. enctypeDefinecomoencriptarlosdatosdelformulario,noes frecuenteusarlo.

Ejemplo:
<html> <head> <title>Mi Formulario</title> </head> <body> <form method="POST" action=form2.php"> Nombre<br> <input type="text" name=name" size="20"> <br><br>Texto<br> <textarea rows="2" name=text" cols="20"></textarea> <br><br> <input type="submit" value="Enviar" name=send"> <input type="reset" value="Restablecer" name=new"> </form> </body> </html>

7.2MtodoGETyPOST
AlenviarunformularioHTML,losdatossnenviadosalservidor Webyesteescapazdeprocesarlosyrealizarunseguidodeacciones enfuncindelosdatosintroducidos,losdatosdelformularioseenvan utilizandounodelossiguientesmtodos,dependiendodelmethoddel formulario: GETLosdatosdelformulariosnenviadosalservidoratravsde losencabezadosHTTP,estosdatossnvisiblesenlaURL. POSTLosdatosdelformulariosnenviadosalservidorcomodatos delapeticin. Estosdatos,podemosrecojerlosdesdenuestraaplicacinPHP utilizandolosarrayssuperglobales,$_GETy$_POSTdemanera respectiva.

Ejemplo:
<?

form2.php

if (!isset($_POST['name'])||$_POST['name']=="") die("Error!! El nombre no tiene ningn valor!"); else echo Tu nombre es: .$_POST['name']; echo <br><br />; echo y tu texto fue: .$_POST[text]; ?>

7.3EnvideEMail
PHPnosofrecelaposibilidaddeenviaremailsdeunamanerasencilla yfcil,paraelloellenguajenosproporcionalainstruccinmail() <?php mail(destinatario, asunto, texto del mensaje); ?> Destinatario Eldestinatariodeunemailserelemaildondeseenviarelemail. Estecampoesobligatorioyaquesinemailnopodrenviarel mensaje. Asunto Estecamponoesobligatorioyaquesinollevaasuntoaparece(sin asunto),sielasuntoesmuylargoseteabreviarcon...(trespuntos).

7.3EnvideEmail(Cont.)
CuerpodelMensajeoContenido Enelcontenidodelmensajeescribirselmotivodelemail.Noes obligatorio,peroporlgicadeberasdeescribiralgo. Elmensajeserunalneadetexto..esdecirnoseejecutarnada solosertexto,menos\x.Haytrescdigos\t,\ny\r. \n=saltodelnea \t=sangra \r=vueltadelnea

Ejemplo:
<html> <head> <title>Envio de un email</title> </head> <body> <form method="POST" action=$PHP_SELF> <input type="submit" value="Enviar" name=send> </form> </body> </html> <? if(isset($_POST[send])){ $email = tuemail@mail.com; $asunto = Hola!!; $texto = Este es el texto del mail; mail($email,$asunto,$texto); echo \nExito!! El email se ha enviado; } ?>

Ejercicios
Escribeunformulariocon2cajasdetextoparaingresarnmerosy unbotnquedigasumaycuandosepresionedichobotnaparezca unaligadebajodeelquetelleveaotrapaginadondesemuestreel resultadoenelsiguienteformato:Operando1+Operando2=Resultado Escribeunformulariocon3cajasdetexto,enlaprimerapedirel nombre,enlasegundalaedad,yenlaterceraingresarlaURLdesu foto,aldarclickenelbotnenviarqueaparezcaenotrapaginasu nombreennegritas,suedadencursivasindicandosiesonomayor deedadysufotoenuntamaode150x150pixeles Escribeunformularioparaenviaruncorreoelectrnicoquecontenga emaildeldestinatario,asuntoytextoesteultimoutilizandouncontrol textarea.Validarqueseaobligatoriounadireccindecorreo electrnicoyunasuntoantesdeenviarelcorreoeindicarqueel correoseenviexitosamente.

8. Sesiones
8.1Quson?
Unasesineslasecuenciadepginasqueunusuariovisitaen unsitioweb.Desdequeentraenelsitio,hastaqueloabandona. Utilizaremossesionesparaalmacenarunaseriedevariablesen elservidorrelacionndolas(graciasaunavariablepasadapor cookieoporURL)conunusuarioconcretoparaqueestn disponiblesendiferentespginasdenuestrositioweb. Unavezalmacenadaunavariabledesessin,podremosleerla desdetodaslaspginasdenuestrawebmientraslasesinnose destruya.

8.2Inicializacin
Guardarunavariable ElsoporteparasesionesdePHPnospermiteinicializarfacilmenteuna sesinutilizandosession_startygraciasalvectorsuperglobal $_SESSION,podremostrabajarconsesionescomosidecualquier otrovectorsetratara: <?php // Inicializamos sesion session_start(); // Guardamos una variable $_SESSION['nombre'] = 'Fernando Daz'; ?>

8.2Inicializacin(Cont.)
Leerunavariableguardada Estoloharemossimplementeinicializandolasesinyconelmismo vector$_SESSION,paraversiexisteunavariabledesesin determinada,usaremosissetcmoconcualquierotravariable.: <?php // Inicializamos sesion session_start(); // Comprobamos si existe la variable if ( isset ( $_SESSION['nombre'] ) ) { // Si existe echo $_SESSION['nombre']; } else { // Si no existe echo 'desconocido'; } ?>

8.2Inicializacin(Cont.)
Borrarunavariable Podemosborrarunavariabledesesinusandolafuncinunset,pero ademspodemoseliminarlasesinconsession_destroy: <?php // Inicializamos sesion session_start(); // Borramos la variable unset ( $_SESSION['nombre'] ) { // Borramos toda la sesion session_destroy(); ?>

8.3Unejemplo
Descarga el archivo ejemplo de la siguiente pagina: http://edwmx.netne.net

8.4Errorcomn
Unodeloserroresmscomunescuandoseutilizansesioneses dejarlneasenblancoantesdelainicializacindePHPoenviar algunasalidaalapantalla.Paraprobarlocreaunalneaenblancoo concualquiercosaantesde<?php. Teencontrarsunerrordeestetipo: Warning: Cannot send session cookie - headers already sent by (output started at /home/session.php:2) in /home/session.php on line 4 PHPestinformandodequenopuedeactivarloscookiesenel navegadordelusuario,porquelascabecerasyahansidoenviadas. Simplementeporlaexistenciadeunalneaenblanco.Comomedida prctica,nodejesespaciosniantesdeliniciodelscript,nidespusde lafinalizacin.Teahorrarmuchosdisgustos.

8.5CarritodeCompras
<?php session_start(); session_register('itemsEnCesta'); $item=$_POST['item']; $cantidad=$_POST['cantidad']; $itemsEnCesta=$_SESSION['itemsEnCesta']; if ($item){ if (!isset($itemsEnCesta)){ $itemsEnCesta[$item]=$cantidad; }else{ foreach($itemsEnCesta as $k => $v){ if ($item==$k){ $itemsEnCesta[$k]+=$cantidad; $encontrado=1; } } if (!$encontrado) $itemsEnCesta[$item]=$cantidad; } } $_SESSION['itemsEnCesta']=$itemsEnCesta; ?>

8.5CarritodeCompras(Cont.)
<html> <body> <form action="<?=$PHP_SELF."?".$SID?>" method="post"> Dime el producto <input type="text" name="item" size="20"><br> Cuantas unidades <input type="text" name="cantidad" size="20"><br> <input type="submit" value="Aadir a la cesta"><br> </form> <? if (isset($itemsEnCesta)){ echo'El contenido de la cesta de la compra es:<br>'; foreach($itemsEnCesta as $k => $v){ echo 'Artculo: '.$k.' ud: '.$v.'<br>'; } } ?> </body> </html>

Ejercicios
Implementaelcarritodecomprasmodificandoelarchivoejemplo, paraquedeestamanerasolopuedasagregarproductosalacestasi hasiniciadosesin.Nota:SolodebesdetenerunarchivoPHP

9. Expresiones Regulares EE.RR.


9.1Quson?
Lasexpresionesregularessoncadenasdecaracteresque formanunpatrnyexpresanuntextomsextenso,enPHPse puedenusarmuchasfunciones,estassonalgunas: preg_match():Encuentracoincidenciasenunacadenaapartir deunaexpresinregular. Parausarestafuncinsetienenqueusardelimitadores,aqu usaremosslashes(/)esdecir: / ( expresin ) / [modificadores]

Ejemplo:
<?php $patron = "/ca/"; $string = "casa; if( preg_match($patron, $string)){ echo "Coincide"; }else{ echo "No coincide"; } ?>

Elmodificador"i",lograquenosehagaladistincinentre maysculasyminsculas.

9.2Patrones
^Representaelprincipiodeunpatrny$representaelfinal,sia nuestroejemplocambiamoselpatrna:$patron="/^ca/,solo mostraraunacoincidenciaalaspalabrasqueiniciencon"ca","casa", "campo"etc.. Silocambiamosa:$patron="/ca$/,tomarasololasqueterminenen "ca","oca","coca",etcyporultimo Silocambiamosa:$patron"/^ca$/,darsolocoincidenciaen"ca" yaqueexponeuninicioyunfindecadena. Siqueremosbuscarunacadenaconuncarcterespecial,por ejemplounacantidad,buscarelsignode$,ahqueanteponerun backslashantes(\$).

9.2Patrones(Cont.)
Existenciertoscaracteresquesoncomocomodines,porejemplo: *+? Elsigno*,esmuygeneral,tomaloqueleprecedeycoincidesiesta presente0omasveces $patron = "/^Ca*/"; $string = "Caaaaaaaaaaa"; Coincidira,el"?"eslomismo,soloquecoincidesiestapresente0o 1vezyporultimo"+",coincidesiestapresente1omasveces.

Ejercicios
Encontrarunaexpresinregularquevalidesiunapalabratieneono 2bsconsecutivas Encontrarunamaneradevalidarsiunapalabratieneono2as consecutivasperoquetermineenasiempre.Sugerenciautilizarla sentenciaelseif.

Fin del Curso Programacin Web con PHP

EduardoAyalaSnchez http://edwmx.netne.net

Вам также может понравиться