PHP Programacion v6 1

download PHP Programacion v6 1

of 78

Transcript of PHP Programacion v6 1

  • 7/25/2019 PHP Programacion v6 1

    1/78

    Manual de Programacin en PHP [email protected]

    MANUAL

    DE

    PROGRAMACIN EN PHP

    MARCELO MARABOLI ROSSELOTTINGENIERO CIVIL ELECTRNICO

    UNIVERSIDAD TCNICA FEDERICO SANTA MARA

    CERTIFIED INFORMATION SECURITY SPECIALIST PROFESSIONAL(CISSP)

    VALPARASO,JUNIO 2003

    Captulo.1.- Instalacin de Apache+MySQL+PHP+OpenLAP+OpenSSLVer documento adjunto

    Captulo !.- Conceptos "#sicos

    El lenguaje PHP es un lenguaje de programacin de estilo clsico, es decir que es un lenguaje deprogramacin con variables, sentencias condicionales, bucles, funciones, etc. No es un lenguaje de etiquetascomo podra ser HT!, "! o #!. Est mas cercano a $ava%cript o a &, para aquellos que conocen estoslenguajes.

    Pero a diferencia de $ava o $ava%cript que se ejecutan en el navegador, PHP se ejecuta en el servidor, poreso nos permite acceder a los recursos que tenga el servidor como por ejemplo podra ser una base de datos. El

    1

  • 7/25/2019 PHP Programacion v6 1

    2/78

    Manual de Programacin en PHP [email protected]

    programa PHP es ejecutado en el servidor ' el resultado enviado al navegador. El resultado es normalmente unapgina HT! pero igualmente podra ser una pagina #!.

    (l ser PHP un lenguaje que se ejecuta en el servidor no es necesario que su navegador lo soporte, es

    independiente del navegador, sin embargo para que las pginas PHP funcionen, el servidor donde estn alojadasdebe soportar PHP.

    !.1.- $uest%o p%i&e% PHP

    !a ventaja que tiene PHP sobre otros lenguajes de programacin que se ejecutan en el servidor )comopodran ser los script &*+ Perl, es que nos permite intercalar las sentencias PHP en las pginas HT!, es unconcepto algo complicado de entender si no se -a visto nunca como funciona unas paginas PHP o (%P.

    amos a ver un ejemplo sencillo para comprenderlo mejor. En a/ul est el cdigo HTML' en rojo elcdigo PHP. %eguiremos este criterio durante todo el manual.

    0122 anual de PHP 223

    0-tml3

    0-ead3

    0title3Ejemplo de PHP04title3

    04-ead3

    0bod'3

    Parte de HT! normal.

    05630563

  • 7/25/2019 PHP Programacion v6 1

    3/78

    Manual de Programacin en PHP [email protected]

    Parte de HTML norma)'

    Parte de PHP

    Linea

    Linea #Linea *

    Linea +

    Linea ,

    Linea -

    Linea .

    Linea /

    Linea 0

    Linea 1

    !.!.- 'a%ia"les

    =na variable es un contenedor de informacin, en el que podemos meter n

  • 7/25/2019 PHP Programacion v6 1

    4/78

    Manual de Programacin en PHP [email protected]

    !.(.- A%it&)ticos

    !os operadores de PHP son mu' parecidos a los de & ' $ava%cript, si usted conoce estos lenguajes leresultaran familiares ' fciles de reconocer.

    Estos son los operadores que se pueden aplicar a las variables ' constantes num@ricas.

    Operador Nombre Ejemplo Descripcin

    A %uma - $ . %uma dos n

  • 7/25/2019 PHP Programacion v6 1

    5/78

    Manual de Programacin en PHP [email protected]

    *'............/

    1

    *

    !.*.- Co&pa%acin

    !os operadores de comparacin son usados para comparar valores ' as poder tomar decisiones.

    Operad

    or

    Nombre Ejemplo Devuelve verdadero cuando:

    +guala !!

    b

    aes igual b

    +d@nticoa !!!

    b

    a e9 igua)b

    : ambo9 9on de) mi9mo tipo

    1 Cistintoa !

    b

    aes distinto b

    1No

    id@ntico

    a !!

    b

    a no e9 idntico ab

    0enor

    que

    a

    3

    0

    4

    -t

    7

  • 7/25/2019 PHP Programacion v6 1

    8/78

    Manual de Programacin en PHP [email protected]

    m

    l

    3

    #

    #

    #

    #

    ,a%1 1 // Asi0nacin,a%! 1,a%( 123,a%1 ,a%!4

    // Cie%to5 son i0uales3,a%1 ,a%(4 // Son i0uales 3t%as

    con,e%sin43,a%1 ,a%!4 // Cie%to5 son id)nticas3,a%1 ,a%(4 //6ALSO5 el tipo no coincide

    !.7.- L0icos

    !os operadores lgicos son usados para evaluar varias comparaciones, combinando los posibles valores deestas.

    Operador Nombre Ejemplo Devuelve verdadero cuando:

    FF G (/>*% == (**% and (**% (**% or (**% Niega el valor de la e>presin.

    8

  • 7/25/2019 PHP Programacion v6 1

    9/78

    Manual de Programacin en PHP [email protected]

    0122 anual de PHP 223

    0-tml3

    0-ead3

    0title3Ejemplo de PHP04title3

    04-ead30bod'3

  • 7/25/2019 PHP Programacion v6 1

    10/78

    Manual de Programacin en PHP [email protected]

    0122 anual de PHP 223

    0-tml3

    0-ead3

    0title3Ejemplo de PHP04title3

    04-ead30bod'3

    04bod'3

    04-tml3

    a no e9 menor Aue b

    En este ejemplo la condicin no es verdadera por lo que se ejecuta la parte de cdigo correspondiente ale)9e.

    %entencia 9itch ''' ca9e

    0122 anual de PHP 223

    0-tml3

    0-ead3

    0title3Ejemplo de PHP04title3

    04-ead3

    0bod'3

  • 7/25/2019 PHP Programacion v6 1

    11/78

    Manual de Programacin en PHP [email protected]

    La 4ariab)e contiene e) 4a)or arriba

    &on la sentencia 9itchpodemos ejecutar unas u otras instrucciones dependiendo del valor de unavariable, en el ejemplo anterior, dependiendo del valor de la variable po9icionse ejecuta el bloque 9 cuandoel valor es 8arriba8, el bloque ? cuando el valor es 8abajo8 ' el bloque J si no es ninguno de los valoresanteriores.

    Este tipo de condicionales se ocupa mu' frecuentemente para distinguir entre navegadores ' luegoejecutar cdigo especial para cada uno, i.e.7 cdigo para Netscape &ommunicator ' cdigo para icrosoft+nternet E>plorer.

    !.9.- :ucles

    !os bucles nos permiten iterar conjuntos de instrucciones, es decir repetir la ejecucin de un conjunto de

    instrucciones mientras se cumpla una condicin.

    %entencia hi)e

  • 7/25/2019 PHP Programacion v6 1

    12/78

    Manual de Programacin en PHP [email protected]

    0122 anual de PHP 223

    0-tml3

    0-ead3

    0title3Ejemplo de PHP04title3

    04-ead30bod'3

    +nicio0563

    Kinal0563

    04bod'3

    04-tml3

    Fnicio

    E) 4a)or de i e9

    E) 4a)or de i e9 #

    E) 4a)or de i e9 *

    E) 4a)or de i e9 +

    E) 4a)or de i e9 ,

    E) 4a)or de i e9 -

    E) 4a)or de i e9 .

    E) 4a)or de i e9 /

    E) 4a)or de i e9 0

    E) 4a)or de i e9 1

    Gina)

    En el siguiente ejemplo, el valor de ial comien/o es , durante la ejecucin del bucle, se va sumando #al valor de ide manera que cuando ivale #'a no se cumple la condicin ' se termina la ejecucin delbucle.

    %entencia for

  • 7/25/2019 PHP Programacion v6 1

    13/78

    Manual de Programacin en PHP [email protected]

    for(i! ; i

    Kinal056304bod'3

    04-tml3

    Fnicio

    E) 4a)or de i e9

    E) 4a)or de i e9 #

    E) 4a)or de i e9 *

    E) 4a)or de i e9 +

    E) 4a)or de i e9 ,

    E) 4a)or de i e9 -

    E) 4a)or de i e9 .

    E) 4a)or de i e9 /

    E) 4a)or de i e9 0

    E) 4a)or de i e9 1

    Gina)

    !a instruccin fores la instruccin de bucles ms completa. En una sola instruccin nos permite controlar

    todo el funcionamiento del bucle.

    El primer parmetro del for, es ejecutado la primera ve/ ' sirve para iniciali/ar la variable del bucle, elsegundo parmetro indica la condicin que se debe cumplir para que el bucle siga ejecutndose ' el tercer

    parmetro es una instruccin que se ejecuta al final de cada iteracin ' sirve para modificar el valor de lavariable de iteracin.

    !.;.- Salida

    Hasta a-ora -emos usado la instruccin echopara reali/ar salida a pantalla, esta instruccin es bastantelimitada 'a que no nos permite formatear la salida. En esta pgina veremos la instruccin printfque nos damuc-a ms potencia.

    0Lp-p Sentencia printfprintf)cadena formato, variable9, variable?...M

    L3

    !a cadena de formateo indica cmo se -an de representar las valores que posteriormente le indicaremos.!a principal ventaja es que adems de poder formatear los valores de salida, nos permite intercalar te>to entreellos.

    13

  • 7/25/2019 PHP Programacion v6 1

    14/78

    Manual de Programacin en PHP [email protected]

    0122 anual de PHP 223

    0-tml3

    0-ead3

    0title3Ejemplo de PHP04title3

    04-ead30bod'3

  • 7/25/2019 PHP Programacion v6 1

    15/78

    Manual de Programacin en PHP [email protected]

    0122 anual de PHP 223

    0-tml3

    0-ead3

    0title3Ejemplo de PHP04title3

    04-ead30bod'3

  • 7/25/2019 PHP Programacion v6 1

    16/78

    Manual de Programacin en PHP [email protected]

    O. chop(cadena%. Elimina los saltos de lnea ' los espacios finales de una cadena.

    . 9trpo9(cadena#2 cadena*%. 5usca la cadena? dentro de cadena9 indicndonos la posicin en laque se encuentra.

    Q. 9tr3rep)ace(cadena#2 cadena*2 teto%. 6eempla/a la cadena# por la cadena* en el

    te>to.

    0122 anual de PHP 223

    0-tml3

    0-ead3

    0title3Ejemplo de PHP04title3

    04-ead3

    0bod'3

  • 7/25/2019 PHP Programacion v6 1

    17/78

    Manual de Programacin en PHP [email protected]

    @p%int BMia%%ay es &ia%%ay@:DEBp%int BMia%%ayF7G es &ia%%ayF7G@:DEB&ia%%ayF7G BPosicin 8taB p%intBMia%%ayF7G es &ia%%ayF7G@:DEB p%int

    BMia%%ay es &ia%%ay@:DEB E

    que produce la siguiente salida7

    Mi arra: e9

    Mi3arra:R-S e9

    Mi3arra:R-S e9 Po9icin .ta

    Mi3arra: e9 Krra:

    Concatenarel mismo string7

    cad A esta cadena cad cad . le ,a&os a aadi% s te

  • 7/25/2019 PHP Programacion v6 1

    18/78

    Manual de Programacin en PHP [email protected]

    0ettype3a%04etorna un 9tring repre9entando e) tipo de argumentoB integer2 doub)e2 9tring2 arra:2

    object o unDnon t:pe'isint3a%045 isinte0e%3a%045islon03a%04etorna 4erdadero 9i arg e9 de tipo entero2 fa)9o en ca9o contrario'

    isdou"le3a%045 isNloat3a%045is%eal3a%04etorna 4erdadero 9i arg e9 un doub)e2 fa)9o en ca9o contrario'

    is"ool3a%04etorna 4erdadero 9i arg e9 de) tipo Coo)ean (TUE o GKL@E% : fa)9o 9i no )o e9'

    isst%in03a%04etorna 4erdadero 9i arg e9 un 9tring'

    isa%%ay3a%04etorna 4erdadero 9i arg e9 un arra:'

    iso">ect3a%04etorna 4erdadero 9i arg e9 un objeto'

    !.1*.- 6unciones

    El uso de funciones nos da la capacidad de agrupar varias instrucciones bajo un solo nombre ' poderllamarlas a estas varias veces desde diferentes sitios, a-orrndonos la necesidad de escribirlas de nuevo.

  • 7/25/2019 PHP Programacion v6 1

    19/78

    Manual de Programacin en PHP [email protected]

    0122 anual de PHP 223

    0-tml3

    0-ead3

    0title3Ejemplo de PHP04title3

    04-ead30bod'3

  • 7/25/2019 PHP Programacion v6 1

    20/78

    Manual de Programacin en PHP [email protected]

    0122 anual de PHP 223

  • 7/25/2019 PHP Programacion v6 1

    21/78

    Manual de Programacin en PHP [email protected]

    Esta cabecera estar en todas sus pginas.

    Pgina 1

    Contenido bab bab ab

    !s cosas...

    "in

    Este es e pie de pgina.

    #utor$ %o&n 'oe

    Ejemplo ?7

    0122 anual de PHP 223

    0-tml3

    0-ead3

    0title3Ejemplo de PHP04title3

    04-ead3

    0bod'3

  • 7/25/2019 PHP Programacion v6 1

    22/78

    Manual de Programacin en PHP [email protected]

    (.!.- P#0inas con plantillas 3usando li"%e%as4

    En este ejemplo vamos a usar el PHP ' la capacidad de definir libreras para conseguir que todas nuestraspginas tengan el mismo formato de pgina, inclu'endo las partes comunes en libreras. (s mismo modificando

    la librera modificaramos tambien todas las pginas de una manera mu' rpida.

    )ibpagina'phtm)

    0122 anual de PHP 223

  • 7/25/2019 PHP Programacion v6 1

    23/78

    Manual de Programacin en PHP [email protected]

    Esta cabecera estar en todas sus pginas.

    Esta es otra pgina

    Pagina 1co!peta!ente distinta

    Pagina 2 pero co!parte e pie ( a cabecera con a otra.

    Este es e pie de pgina.

    #utor$ %o&n 'oe

    ejem.a*'phtm)

    0122 anual de PHP 223

    0-tml3

    0-ead3

    0title3Ejemplo de PHP04title3

    04-ead3

    0bod'3

  • 7/25/2019 PHP Programacion v6 1

    24/78

    Manual de Programacin en PHP [email protected]

    Esta cabecera estar en todas sus pginas.

    Pgina 1

    Pagina 1

    Pagina 2Contenido bab bab ab

    !s cosas...

    "in

    Este es e pie de pgina.#utor$ %o&n 'oe

    (.(.- nlace eternos ' de forma que la Ueb e>ternaqueda en la parte inferior del frame ' as no se sale de nuestra Ueb.

    ejem.b'htm)

    0122 anual de PHP 223

    0-tml3

    0-ead30title3Ejemplo de PHP04title3

    04-ead3

    0bod'3

    0( H6EK8ejem:b?.p-tmlLdire-ttp744UUU.p-p.netS3UUU.p-p.net04(305630563

    0( H6EK8ejem:b?.p-tmlLdire-ttp744UUU.abc.com83UUU.abc.com04(3

    04bod'3

    04-tml3

    ))).p&p.net

    ))).abc.co!

    ejem.b*'phtm)

    24

  • 7/25/2019 PHP Programacion v6 1

    25/78

    Manual de Programacin en PHP [email protected]

    0122 anual de PHP 223

    0122 frames 223

    0K6(E%ET 6I#%89::,B83

    0K6(E N(E8arriba8 %6&8ejem:bJ.-tml8 (6*+N#+CTH89:8

    (6*+NHE+*HT89:8%&6I!!+N*8auto8 K6(E5I6CE68:83

    0K6(E N(E8abajo8 %6&88 (6*+N#+CTH89:8

    (6*+NHE+*HT89:8 %&6I!!+N*8auto8 K6(E5I6CE68:83

    04K6(E%ET3

    Captulo *.- La di%ecti,a %e0iste%0lo"als en PHP *.!.?

    ( partir de la versin de PHP .?.: el valor por defecto de la directiva registerVglobals es off. El por qu@ deeste cambio viene motivado por un aumento del nivel de seguridad en la configuracin del PHP por defecto. Peroesto puede provocar que nuestras pginas dejen de funcionar.

    !a directiva registerVglobals cuando esta activada )estado que estaba por defecto antes de la versin .?.:de PHP, provoca que automticamente se generen variables globales para cooWies ' valores enviados por get 'post entre otros.

    Por ejemplo7

    %i llambamos a una pgina con -ttp744UUU.internet.com4prueba.p-pLvar9, esto provocaba que en la

    pgina prueba.p-p automticamente se generase la variable 4ar#con el valor .

    Por ra/ones de seguridad este comportamiento automtico se -a cambiado, estableciendo el valor pordefecto de registerVglobals a off.

    Este cambio puede producir que nuestras antiguas pginas dejen de funcionar, ante esto tenemos dosopciones7

    (ctivar el regi9ter3g)oba)9a on.

    Cejar regi9ter3g)oba)9a off' cambiar nuestraspginas por las referencias adecuadas a cada caso. Esta esla opcin ms recomendable.

    RC&o de"e&os hace% este ca&"io

    25

  • 7/25/2019 PHP Programacion v6 1

    26/78

    Manual de Programacin en PHP [email protected]

    Cebemos buscar todas aquellas variables que son definidas automticamente, variables del servidor, queprovienen de get o post, cooWies, files, variables de entorno o sesin.

    6eempla/ar esas variables por las referencias adecuadas en cada caso, en PHP se -an definido unos arra's

    diferentes con valores, dependiendo del lugar de procedencia. (s tenemos los arra's 3@EVE, 3QET,3P@T, 3OXFE, 3GFLE@, 3EV, EYUE@T' 3@E@@F.

    %i por ejemplo tenamos el siguiente script7

    print "@u edadB "'edad; 77cooDie print

    "a4egadorB "'HTTP3U@E3KQET; print

    "Variab)eB "'4ar; 774ariab)e de get

    Ceberamos reempla/arlas por7

    print "@u edadB "'3OXFERZedadZS; 77cooDie print

    "a4egadorB "'3@EVERZHTTP3U@E3KQETZS; print

    "Variab)eB "'3QETRZ4arZS; 774ariab)e de get

    Captulo 7.- n,o y %ecepcin de datos usando 6o%&ula%ios

    El lenguaje PHP nos proporciona una manera sencilla de manejar formularios, permiti@ndonos de estamanera procesar la informacin que el usuario -a introducido.

    (l diseXar un formulario debemos indicar la pgina PHP que procesar el formulario, as como en m@todopor el que se le pasar la informacin a la pgina.

    0122 anual de PHP 223

    0-tml3

    0-ead3

    0title3Ejemplo de PHP04title3

    04-ead3

    0bod'3

    0H93Ejemplo de procesado de formularios04H93+ntrodu/ca su nombre70KI6 (&T+IN8procesa.p-tml8 ETHIC8*ET83

    0+NP=T TGPE8te>t8 N(E8nombre830563

    0+NP=T TGPE8submit8 (!=E8Enviar83

    04KI63

    04bod'3

    04-tml3

    26

  • 7/25/2019 PHP Programacion v6 1

    27/78

    Manual de Programacin en PHP [email protected]

    (l pulsar el botn Enviar el contenido de cuadro de te>to es enviado a la pgina que indicamos en elatributo KOTFde la etiqueta GM.

    PHP crea una variable por cada elemento del GM, esta variable creada tiene el mismo nombre que elcuadro de te>to de la pgina anterior ' el valor que -a'amos introducido. En este ejemplo se -a creado unavariable llamada nombrecon el valor que -a'a introducido el navegante.

    0122 anual de PHP de #ebEstilo.com 223

    0-tml3

    0-ead3

    0title3Ejemplo de PHP04title3

    04-ead3

    0bod'3

    0H93Ejemplo de procesado de formularios04H93

    El nombre que -a introducido es7

    0br304KI63

    04bod'3

    04-tml3

    27

  • 7/25/2019 PHP Programacion v6 1

    28/78

    Manual de Programacin en PHP [email protected]

    7.!.- M)todo K y POSK

    En la pgina anterior -emos comentado que los datos de un formulario se enva mediante el m@todoindicado en el atributo ETHIC de la etiqueta KI6, los dos m@todos posibles son *ET ' PI%T.

    !a diferencia entre estos dos m@todos radica en la forma de enviar los datos a la pgina, mientras que elm@todo *ET enva los datos usando la =6!, el m@todo PI%T los enva por la entrada estndar %TC+I.

    0122 anual de PHP 223

    0-tml3

    0-ead30title3Ejemplo de PHP04title3

    04-ead3

    0bod'3

    0H93Ejemplo de procesado de formularios04H93

    0KI6 (&T+IN8procesa?.p-tml8 ETHIC8*ET83

    +ntrodu/ca su nombre70+NP=T TGPE8te>t8 N(E8nombre830563

    +ntrodu/ca sus apellidos70+NP=T TGPE8te>t8 N(E8apellidos830563

    0+NP=T TGPE8submit8 (!=E8Enviar83

    04KI63

    04bod'3

    04-tml3

    28

  • 7/25/2019 PHP Programacion v6 1

    29/78

    Manual de Programacin en PHP [email protected]

    0122 anual de PHP de #ebEstilo.com 223

    0-tml3

    0-ead3

    0title3Ejemplo de PHP04title3

    04-ead3

    0bod'3

    0H93Ejemplo de procesado de formularios04H93

    0KI6 (&T+IN8procesa?.p-tml8 ETHIC8PI%T83+ntrodu/ca su nombre70+NP=T TGPE8te>t8 N(E8nombre830563

    +ntrodu/ca sus apellidos70+NP=T TGPE8te>t8 N(E8apellidos830563

    0+NP=T TGPE8submit8 (!=E8Enviar83

    04KI63

    04bod'3

    04-tml3

    29

  • 7/25/2019 PHP Programacion v6 1

    30/78

    Manual de Programacin en PHP [email protected]

    procesa?.p-tml

    0122 anual de PHP 223

    0-tml3

    0-ead3 0title3Ejemplo de PHP04title304-ead3

    0bod'3

    0H93Ejemplo de procesado de formularios04H93

    El nombre que -a introducido es7

  • 7/25/2019 PHP Programacion v6 1

    31/78

    Manual de Programacin en PHP [email protected]

    El resultado final es el mismo, solo que con el m@todo *ET podemos ver los parmetros pasados 'a queestn codificados en la =6!.

    31

  • 7/25/2019 PHP Programacion v6 1

    32/78

    Manual de Programacin en PHP [email protected]

    7.(.- n,o de e&ails

    PHP nos ofrece la posibilidad de enviar emails de una manera sencilla ' fcil, para ello el lenguaje nos

    proporciona la instruccin mai)( %

  • 7/25/2019 PHP Programacion v6 1

    33/78

    Manual de Programacin en PHP [email protected]

    0122 anual de PHP 223

    0-tml3

    0-ead3

    0title3Ejemplo de PHP04title3

    04-ead3

    0bod'3

    0H93Ejemplo de envio de email04H93

  • 7/25/2019 PHP Programacion v6 1

    34/78

    Manual de Programacin en PHP [email protected]

    En este ejemplo creamos una tabla llamada prueba con J campos7 un campo identificador, que nos servirpara identificar unvocamente una fila con el valor de dic-o campo, otro campo con el nombre de una persona 'por

  • 7/25/2019 PHP Programacion v6 1

    35/78

    Manual de Programacin en PHP [email protected]

    (l ejecutar la instruccin m:9A)3connectcreamos un vnculo entre la base de datos ' la pagina PHP,este vnculo ser usado posteriormente en las consultas que -agamos a la base de datos.

    Kinalmente, una ve/ que -emos terminado de usar el vnculo con la base de datos, lo liberaremos con la

    instruccin m:9A)3c)o9epara que la cone>in no quede ocupada.

    Es necesario consultar con su administrador Ueb para ver las variables por omisin )b' defualt que setienen fijadas en el arc-ivo Rp-p.iniS en relacin a las bases de datos, como por ejemplo la -abilitacin opro-ibicin de usar cone>iones persistentes )m'sqlVpconnect.

    8.!.- Consultas a la "ase de datos

    =na ve/ que nos -emos conectado con el servidor de bases de datos, 'a podemos reali/ar consultas a las

    tablas de la base de datos.

    Para facilitar la programacin -emos separado la funcin de cone>in en una librera a parte, de talmanera que la incluiremos en todas las pginas que accedan a la base de datos.

    cone>.p-tml

    0122 anual de PHP 223

  • 7/25/2019 PHP Programacion v6 1

    36/78

    Manual de Programacin en PHP [email protected]

    0122 anual de PHP 223

    0-tml3

    0-ead3 0title3Ejemplo de PHP04title304-ead3

    0bod'30H93Ejemplo de uso de bases de datos con PHP ' '%Z!04H93

  • 7/25/2019 PHP Programacion v6 1

    37/78

    Manual de Programacin en PHP [email protected]

    En este ejemplo -emos utili/ado J instrucciones nuevas7 m:9A)3Auer:, m:9A)3fetch3arra: 'm:9A)3free3re9u)t. &on la instruccin m:9A)3Auer:-emos -ec-o una consulta a la base de datos en ellenguaje de consultas %Z!, con la instruccin m:9A)3fetch3arra:e>traemos los datos de la consulta a unarra' ' con m:9A)3free3re9u)tliberamos la memoria usada en la consulta.

    8.(.- Inse%cin de %e0ist%os

    Hasta a-ora nos -emos conectado a una base de datos ' -emos -ec-o consultas a la misma, a-orapresentaremos como introducir nuevo registros en la base de datos.

    Para ello usaremos un formulario ' en el KOTF del GM indicaremos que debe ser procesado una pagina PHP, esta pgina lo que -ar ser introducir los datos delformulario en la base de datos.

    ejem:Qd.p-tml

    37

  • 7/25/2019 PHP Programacion v6 1

    38/78

    Manual de Programacin en PHP [email protected]

    0122 anual de PHP 223

    0-tml3

    0-ead3

    0title3Ejemplo de PHP04title3

    04-ead3

    0bod'3

    0H93Ejemplo de uso de bases de datos con PHP ' '%Z!04H93

    0KI6 (&T+IN8procesar.p-tml83

    0T(5!E3

    0T63

    0TC3Nombre704TC3

    0TC30+NP=T TGPE8te>t8 N(E8nombre8 %+E8?:8 ("!EN*TH8J:8304TC3

    04T63

    0T630TC3(pellidos704TC3

    0TC30+NP=T TGPE8te>t8 N(E8apellidos8 %+E8?:8 ("!EN*TH8J:8304TC3

    04T63

    04T(5!E3

    0+NP=T TGPE8submit8 N(E8accion8 (!=E8*rabar83

    04KI63

    0-r3

  • 7/25/2019 PHP Programacion v6 1

    39/78

    Manual de Programacin en PHP [email protected]

    procesar.p-tml

  • 7/25/2019 PHP Programacion v6 1

    40/78

    Manual de Programacin en PHP [email protected]

    8.*.- :o%%ado de %e0ist%os

    G finalmente, para cerrar el ciclo, nos queda el borrado de registros. El borrado de registros el uno de losprocesos ms sencillos.

    Para indicar que elemento vamos a borrar -emos usado un enlace a la pgina borra'phtm)pasndole elFN3Pruebade cada registro, de esta manera la pgina borra'phtm)sabe que elemento de la tabla -a deborrar.

    ejem:Qe.p-tml

    0122 anual de PHP 223

    0-tml3

    0-ead3 0title3Ejemplo de PHP04title304-ead3

    0bod'3

    0H93Ejemplo de uso de bases de datos con PHP ''%Z!04H93

  • 7/25/2019 PHP Programacion v6 1

    41/78

    Manual de Programacin en PHP [email protected]

    borra.p-tml

  • 7/25/2019 PHP Programacion v6 1

    42/78

    Manual de Programacin en PHP [email protected]

    Captulo 9.- Dest%in0i% el acceso

    En esta seccin se e>plica cmo se puede restringir el acceso a las pginas, para que solo las personas

    autori/adas puedan acceder a ciertas partes del sitio Ueb.

    Atencin7 El acceso restringido a pginas usando las variables globales PHP3KUTH3U@E,PHP3KUTH3P^' PHP3KUTH3T_PEsolo funciona si PHP -a sido instalado como un mdulo de (pac-e, si -asido instalado como un &*+ los ejemplos de @sta seccin no funcionarn.

    Atencin7 %i tiene activado Rregister globals onS en su p-p.ini )que es IN por omisin en PHP .J.> enadelante, entonces deber cambiar la variable PHP3KUTH3U@Epor 3@EVER`PHP3KUTH3U@E`S'

    Para conseguir la autentificacin en las pginas usaremos el sistema de autentificacin del protocolo HTTP,este sistema se basa en las variables globales 3@EVER`PHP3KUTH3U@E`S'3@EVER`PHP3KUTH3P^`S'.

    9. PHP3KUTH3U@E. Nombre de usuario introducido.?. PHP3KUTH3P^. &ontraseXa introducida.

    Para que el navegador nos muestre la ventana de peticin de nombre de usuario ' contraseXa basta conenviar la siguiente cabecera )HE(CE67

    Esto provoca que se muestre la ventana de nombre de usuario ' contraseXa ' los datos introducidos seasignen a las variables 3@EVER`PHP3KUTH3U@E`S ' 3@EVER`PHP3KUTH3P^`S .

    ( partir de aqu reali/aremos las comprobaciones necesarias para asegurarnos que los datos introducidosson los correctos )usuarios que deberan tener acceso a la informacin.

    En el siguiente ejemplo pediremos autori/acin ' comprobaremos si el nombre de usuario es oe ' la

    contraseXa #*+, si es as tendremos acceso al resto de la pgina.

    42

  • 7/25/2019 PHP Programacion v6 1

    43/78

    Manual de Programacin en PHP [email protected]

  • 7/25/2019 PHP Programacion v6 1

    44/78

    Manual de Programacin en PHP [email protected]

    9.1.- 'alidacin de usua%ios usando un a%chi,o de te

  • 7/25/2019 PHP Programacion v6 1

    45/78

    Manual de Programacin en PHP [email protected]

    Itra forma de -acer lo mismo.....

    @php

    auth Nalse // Asu&e Tue el usua%io no est# autentiNicado an...

    iN 3isset3 PHPAKHSD 4 UU isset3PHPAKHPV44 W

    // Lee% el a%chi,o co&pleto en la ,a%ia"le Nilecontents Nilena&e X/path/to/Nile.t

  • 7/25/2019 PHP Programacion v6 1

    46/78

    Manual de Programacin en PHP [email protected]

    9.!.- 'alidacin de usua%ios usando htaccess

    Un archi4o 'htacce99 e9 u9ado por e) 9er4idor ^eb (i'e' Kpache% paraautenticar u9uario9' @e a)macena e) nombre de) u9uario : )a c)a4e de 9te en e)archi4o 'htpa99d en forma encriptada con e) e9tIndar NE@ u9ando )a funcincr:pt(%B

    >oeV,YodahMD=S\>ane0(D_>`7e,,dM>ulie_YASYKo!'MA

    46

  • 7/25/2019 PHP Programacion v6 1

    47/78

    Manual de Programacin en PHP [email protected]

    @php

    auth Nalse // Asu&e Tue el usua%io no est# autentiNicado an...

    iN 3isset3 PHPAKHSD 4 UU isset3PHPAKHPV44 W

    // Lee% el a%chi,o co&pleto en la ,a%ia"leNilecontents

    Nilena&e X/path/to/.htpassZdXNp Nopen3 Nilena&e5 X%X 4Nilecontents N%ead3 Np5 NilesiYe3 Nilena&e 4 4

    Nclose3 Np 4

    // Coloca% cada lnea del a%chi,o en un a%%e0lo.

    lines e

  • 7/25/2019 PHP Programacion v6 1

    48/78

    Manual de Programacin en PHP [email protected]

    real_name

    Joe Smith

    Jane Smith

    Mary Smith

    Bob Smith

    Dilbert

    username

    joe

    jane

    mary

    bob

    dilbert

    password

    ai89d

    !9hjj

    #sSS9!

    !$$g8ed

    a%&'(s

    )na coincidencia para el nombre de usuario y su cla*e correspondiente se puede obtener con la

    siguiente sentencia S+,:

    SLCK 6DOM use%s

    VHD use%na&eXSD'DF[PHPAKHSD[GX and passZo%dXSD'DF[PHPAKHPV[GX

    @phpauth Nalse // Asu&e Tue el usua%io no est# autentiNicado an...

    iN 3isset3 PHPAKHSD 4 UU isset3PHPAKHPV44 W// Conne

  • 7/25/2019 PHP Programacion v6 1

    49/78

    Manual de Programacin en PHP [email protected]

    El t@rmino sesin en PHP, session en ingl@s, se aplica a esta secuencia de navegacin, para ello crearemosun identificador iste la retomamos

    %i no e>iste creamos una nueva*enerar un identificador

  • 7/25/2019 PHP Programacion v6 1

    50/78

    Manual de Programacin en PHP [email protected]

    ;.1.- InicialiYacin de la sesin

    Para utili/ar sesiones en PHP lo primero es iniciali/arlas. Podemos -acerlo e>plcitamente, mediante la

    funcin 9e99ion39tart(%, o al registrar una variable en una sesin mediante9e99ion3regi9ter(ZmiVariab)eZ%. En ambos casos se crea una nueva sesin, si no e>iste, o se retomala sesin actual. eamos un sencillo ejemplo7

    Esta es la forma ms bsica, si el usuario tiene los cooWies activados, PHP -abr insertado de formaautomtica la sesin ' @sta ser pasada de una pgina a otra sin -acer nada ms. Cesde un punto de vistaprctico la sesin es operativa, pero no vemos nada. Podemos obtener la sesin en cualquier momentomediante la funcin 9e99ion3id(%. +nserta en las sucesivas pginas la siguiente lnea para ver si la sesinest disponible7

  • 7/25/2019 PHP Programacion v6 1

    51/78

    Manual de Programacin en PHP [email protected]

    &omo se dijo anteriormente la sesin se crea o recoge mediante 9e99ion39tart(%, o tambi@n cuandose registra una variable de sesin mediante 9e99ion3regi9ter(%.

    %i no -as utili/ado nunca las sesiones, el concepto de variable de sesin, puede resultar un poco abstracto.5sicamente es una variable, como cualquiera de las que gestiona PHP, pero que reside en un espacioespecfico en el servidor, junto con el identificador de sesin, ' que pertenece

  • 7/25/2019 PHP Programacion v6 1

    52/78

    Manual de Programacin en PHP [email protected]

    !a asignacin del nombre de sesin debe reali/arse antes que ninguna otra funcin con sesiones, antes

    que 9e99ion39tart(%o 9e99ion3regi9ter(%.

    %%o% co&n

    =no de los errores ms comunes cuando se utili/an sesiones es dejar lneas en blanco antes de lainiciali/acin de PHP o enviar alguna salida a la pantalla. Para probarlo crea una lnea en blanco o con cualquiercosa antes de

  • 7/25/2019 PHP Programacion v6 1

    53/78

    Manual de Programacin en PHP [email protected]

  • 7/25/2019 PHP Programacion v6 1

    54/78

    Manual de Programacin en PHP [email protected]

    =na breve e>plicacin. En la lnea comprobamos si el usuario -a pasado alg

  • 7/25/2019 PHP Programacion v6 1

    55/78

    Manual de Programacin en PHP [email protected]

    El navegador las enva, permitiendo la identificacin del usuario por parte del servidor.

    El manejo de cooWies en PHP se reali/a mediante el uso de la funcin 9etcooDie, esta funcin estadisponible a partir de la versin J de PHP.

    int 9etcooDie (9tring ombre R2 9tring Va)or R2 int Epire R2 9tring

    Path R2 9tring Nominio R2 int @ecureSSSSS%

    @etcooDie(% define una cooWie que es enviada junto con el resto de la informacin de lacabecera)-eader. !as cooWies deben ser enviadas antes de cualquier tag de -tml, por lo tanto deberemosreali/ar la llamada a estas funciones antes de cualquier tag o . Esta es una restriccin de lascooWies no de PHP.

    Todos los argumentos e>cepto el nombre son opcionales.

    ombre. Nombre de la cooWie. %i creamos una cooWie solamente con el nombre, en el cliente seeliminara la cooWie que e>ista con ese nombre. Tambi@n podemos reempla/ar cualquier argumento conuna cadena vaca )88.

    Va)ue. alor que almacenar la cooWie en el cliente.

    Epire. El argumento e>pire es un argumento entero que indica la -ora en que se eliminara la cooWieen el formato de -ora que devuelven las funciones =N+" time) ' mWtime). Normalmente se usatime(% $ ' 9egundo9 de duracin, para especificar la duracin de una cooWie.

    Path. %ubdirectorio en donde tiene valor la cooWie.

    Nominio. Cominio en donde tiene valor la cooWie. %i ponemos como dominio 'domain'comlacooWie no se transmite para domain'com, mientras que si ponemos domain'comla cooWie se

    transmite tanto para domain'comcomo para 'domain'com @ecure. El argumento secure indica que la cooWie solo se transmitir a trav@s de una cone>in segura

    HTTP%.

    Ejemplo

    9etcooDie("u9uario"2 "Lui9"2 time(%$+.2"7"2"php'net"%;

    En este ejemplo establecemos una cooWie de nombre u9uarioque contiene el valor Lui9, que dura #hora)J:: segundos vlida para todo el dominio php'net

    55

  • 7/25/2019 PHP Programacion v6 1

    56/78

    Manual de Programacin en PHP [email protected]

    =.1.- >e&plo de uso de coo\ies

    En este ejemplo vamos a ver como establecer una cooWie ' cmo se recupera el valor establecido. Paraello pediremos al usuario que introdu/ca su nombre, que guardaremos en una cooWie.

    Primero pedimos al usuario que introdu/ca el valor de su nombre, usamos un formulario que procesar lapgina proce9ar3cooDie'phtm).

    0122 anual de PHP 223

    0-tml3

    0-ead3

    0title3Ejemplo de PHP04title304-ead3

    0bod'3

    0H93Ejemplo de uso de cooWie04H93+ntrodu/ca su nombre70KI6 (&T+IN8procesarVcooWie.p-tml8 ETHIC8*ET83

    0+NP=T TGPE8te>t8 N(E8nombre830563

    0+NP=T TGPE8submit8 (!=E8Enviar83

    04KI63

    04bod'3

    04-tml3

    56

  • 7/25/2019 PHP Programacion v6 1

    57/78

    Manual de Programacin en PHP [email protected]

    %e establece la cooWie ejemu9uario con el valor introducido anteriormente, ' cu'a duracin es una-ora.

  • 7/25/2019 PHP Programacion v6 1

    58/78

    Manual de Programacin en PHP [email protected]

    Captulo 1?.- PHP y LAP

    PHP tiene varias funciones que permiten reali/ar consultas a un servidor !C(P. Para ver si su PHP poseesoporte para !C(P, debe ejecutar la funcin Rp-pinfo)S ' observar si e>iste un recuadro !C(P.

    Para efectos de ejemplo se usar la siguiente base de !C(P7

    58

  • 7/25/2019 PHP Programacion v6 1

    59/78

    Manual de Programacin en PHP [email protected]

    dnB dc!m:5domain2 dc!comobjectO)a99B dcbjectobjectO)a99Borganiation oB

    M:rganiation dcB m:5domain'com

    dnB mai)!root[m:5domain'com2 dc!m:5domain2dc!comobjectO)a99BinetrgPer9on cnB Xeith9nB ichard9mai)B root[m:5domain'com

    dnB mai)!joe[m:5domain'com2 dc!m:5domain2dc!com objectO)a99B inetrgPer9on cnB oe 9nB@omebod:mai)B joe[m:5domain'com

    dnB mai)!9arah[m:5domain'com2 dc!m:5domain2dc!comobjectO)a99BinetrgPer9on cnB @arah9nB obod:mai)B 9arah[m:5domain'com

    te)ephoneumberB *+ ./ #*0 -.+1

    ( continuacin se muestra un cdigo PHP que se conecta al servidor !C(P ' muestra el directoriocompleto. leerVldap.p-p

    59

  • 7/25/2019 PHP Programacion v6 1

    60/78

    Manual de Programacin en PHP [email protected]

    0-tml3

    0-ead3

    04-ead3

    0bod'3

  • 7/25/2019 PHP Programacion v6 1

    61/78

    Manual de Programacin en PHP [email protected]

    0-tml3

    0-ead3

    0title3%earc-04title304-ead3

    0bod'3

    0form action8searc-.p-p8 met-od8PI%T83

    0input t'pe8te>t8 name8name8 lengt-8J:83

    0input t'pe8submit8 name8submit8 value 8%earc-83

    04form3

    04bod'3

    searc!p!p

    0-tml3

    0-ead3

    04-ead3

    0bod'3

  • 7/25/2019 PHP Programacion v6 1

    62/78

    Manual de Programacin en PHP [email protected]

    Al buscar por "joe# buscar$!tml

    @earch

    Gir9t name



    La9t name



    Emai) addre99



    62

  • 7/25/2019 PHP Programacion v6 1

    63/78

    Manual de Programacin en PHP [email protected]

    searc!$p!p

    Al buscar por "joe#

    El siguiente cdigo nos sirve para listarlos usuarios en el directorio !C(P......

    63

  • 7/25/2019 PHP Programacion v6 1

    64/78

    Manual de Programacin en PHP [email protected]

  • 7/25/2019 PHP Programacion v6 1

    65/78

    Manual de Programacin en PHP [email protected]

    a%re%arun usuario al directorio !C(P......

    add!tml

    65

  • 7/25/2019 PHP Programacion v6 1

    66/78

    Manual de Programacin en PHP [email protected]

    Kdd Entr:

    Gir9t name

    La9t name

    E5mai) addre99

    =nb9p;=nb9p;

    addp!p

    66

  • 7/25/2019 PHP Programacion v6 1

    67/78

    Manual de Programacin en PHP [email protected]

  • 7/25/2019 PHP Programacion v6 1

    68/78

    Manual de Programacin en PHP [email protected]

    editp!p

  • 7/25/2019 PHP Programacion v6 1

    69/78

    Manual de Programacin en PHP [email protected]