Академический Документы
Профессиональный Документы
Культура Документы
5>). ‘Lo importante es saber identificar que se trata de cédigo PHP. La notacién de PHP noes complicada. Para iniciar un parrafo en PHP, se debe escribir: FO Bimeemnes ‘The famous Hello world script Salucla al mumdo de PHP diciendo Hell, En el patrafo
que antes hemos dejado en blanco, escribe estas Iineas: Hlelloc/b> World!"; Como pueces ver, es posible mezclar instruc- ciones en HTML y PHP tranquilamente. Eso mismo es lo que hace que trabajar con PHP sea tan flexible. Punto y coma para final de linea Quizas te estés preguntando para qué se nece- sita el punto y coma al final. Lo cierto es que es obligatorio: para senalizar el final de una linea, hay que usar un punto y comaPrimeros pasos con PHP 15 echo "eb>Hello world!"; Al igual que en C++, Java 0 JavaScript, los sal- tos de linea en el cédigo PHP exigen un punto y coma. Sobre todo si el script tiene mas de una iinea de cédigo, ya que de lo contrario aparece dn mensajes de error. Te te et poe oe a OO GB IBY Ov Cae Parse error pase sor, menpected T_ECHO, expecting ot in C:apachefriend:\xampphidece phpSikelo,php on ine 10 ened @ Un error tipico: falta el punto y coma. Donde hay una regla hay una excepeidn: si se define una funcién con la palabra function (), no hay que hacer tso del punto y coma. Tam- poco se permite un punto y coma después de Sf, else, while, switen etc. En estos tiltimos casos te lo recordaré cuando sea necesario. En el caso de JavaScript se puede prescindir de Jos puntos y coma siempre que se inserte un salto de linea, pero no cuando se trabaja con PHP. " Sien PHP nos olvidamos tun punto y coma, Re ae Comentar el codigo Mi experiencia me dice que trabajar con co- mentarios es muy recomendable, ya que ayuda a mantener la perspectiva. Por eso deberias anotar lo que hace cada linea de cédigo. (Quizas te pareceré inditil hacerlo en scripts cor- tos, pero en proyectos grandes, después de semanas y meses de trabajo, seguro que no re- cordarés qué hace una determinada funcién 0 a qué hace referencia el undécimo paréntesis de cierte. :Nos apostamos algo? Sintaxis de los comentarios en PHP Para comentarios cortos, se utiliza una doble barra //. Los comentarios que ocupen varias lineas se suclen escribir entre /= ... */ 1/ fsto es un comentario cor (+ Este comentario puede ocupar varias Lines */ En los ejemplos més largos del cuadero in- cluiré comentarios coctos. Ademés, normal- mente divido el cédigo con espacios en blanco adicionales y lineas vacias adicionales. Me gus- ta indentarlo (aplicarle sangria) y verlo bien ordlenadlo. De todas formas esto no afecta al funcionamiento del cédigo, ya que PHP no lee las lineas vacias. ‘Los comentarios, espacios en blanco 0 lineas en blanco no afectan al rendimiento del pro- grama. En el ultimo capitulo te presentaré las reglas més importantes para ordenar bien el cdigo. ‘Te mostraré como puedes dejarlo todo bien or- denado automaticamente gracias a PHPEdit. Truco: descomentar {Para qué otra cosa sirven los comentarios? Pa- ra el diagndstico de errores. Si tras insertar ‘unas nuevas lineas de cédigo el script PHP de- ja de funcionar, comenta una linea y vuéivelo a probar. Sigue comentando lineas hasta que lo- gres detectar el problema.16 Variables como comodin variable Variables como comodin variable Y llegamos por fin a las variables. No hay nin- atin lenguaje de programacién que no las utili- ce, Pero antes de nada, permiteme explicar en detalle el concepto de variable. Las variables son huecos de memoria en la memoria del ordenador. Imaginalas como con- tenedores que estan disponibles durante la eje~ cucién del programa. En estos “contenedores” se pueden “almacenar” valores mientras se ejecute el script. No importa si almacenamos ntimeros 0 texto (cadenas de caracteres).. En inglés, las cadenas de caracteres se sue- | Jen Mamar strings, ee Durante la “vida” de una variable, podremos acceder a los valores almacenacios en ella. Y no s6lo es0, sino que los valores de las variables también se pueden cambiar. Piensa, por ejem- plo, en el resultado del célculo de un carrito de Ja compra. Por cada nuevo producto que se agrega al pedido, aumenta el resultado. Y también el texto “crece”: asi, por ejemplo, es posible que inicialmente una variable s6lo con- tenga una palabra, pero al final puede almace- nar el texto de una pagina HTML completa Tipos de datos de las variables Ya he mencionado dos “tipos de datos”: de un lado, tenemos las strings, y del otro los ntime- ros. Los grandes lenguajes de programacién como C++, Visual Basic o Java subdividen es- tas categorias con gran precisién. Asi, en funcidn del lenguaje, junto a una string también tenemos integer (ntimeros enteros), boolean (valores booleanos), byte (ntimeros de 0-255), cioat (ntimeros de coma flotante), double, date, currency, variant etc. Cada vez que se crea (se declara) una variable, es necesa- rio asignarle un determinado tipo de datos. Si se aprende un idioma ast, enseguida se cae en la mas absoluta desesperacién. Por suerte, PHP es un lenguaje de seripts senci- Uo, que s6lo fue creado para la Web. Sus crea- dores han omitido todo aquello que no sea im- prescindible. En pocas palabras: cuando se tra~ baja con PHP no es necesario preocuparse por el tipo de datos. Los tipos de datos se recono- cen y asignan automaticamente. Al igual que JavaScript (que por regla general s6lo se usa en la Web) PHP es un lenguaje con “loose ty- ping’ ‘Nota all margen: PHP trabaja internamente con los tipos de datos string (texto), £0 ger (niimero entero), cioax (coma eae boolean como true/te: Y otro dato mas para los que conozcan JavaS- cript: no es necesario declarar las variables ca- da vez. Cuando ya se ha utilizado (inicializa- do) una variable por primera vez, ésta se con- sidera declarada. Sin embargo, puesto que nos interesa que tengas un buen fundamento, aprenderemos a declarar las variables. Nombres de variables permitidos {Qué aspecto tiene una variable? Ante todo, hay que recordar que el nombre de una varia- ble debe (a diferencia de JavaScript y cia.) em- pezar con el signo del délar (3). El resto del nombre es de libre eleccién. Por ejemplo, po- demos usar Snosbre como comodin para alma- cenar un nombre. ‘acentos, espacios en blanco ni ca~ ee neo _ tinguen maydsculas y miniisculas, por | quonny sete son arable iti ‘Tampoco se pueden usar como nombres de va- riables algunas palabras reservadas para PHP como while, ‘f, switch ete. Asimismo, tampo- co se puede empezar con un ntimero. Sin em- bargo, el guién bajo (_) esta permitido y se sue- Je usar como sustituto del espacio en blanco. Hello Mikkel, nice to meet ror 2Qué tal silo vemos con un ejemplo prictico? Crea un documento llamado variabiet php,Variables como comodin variable 17 Escribe el esqueleto de un documento HTML (-selecciona nuevamente File | New | HTML en. PHPEdit). Para este ejemplo, saltidaremos en inglés al editor de PC Cuadernos, Mikkel Franck: ake Oa Be N= ecto Deere, noe, G+ > BF DP) (Diretoareniterienteite | Variables Heo Mikel ceo mise | fo Lastring o cadena almacenada-en la variable se muestra en el navegador como HTML. Crea un nuevo parrafo escribiendo las etique- tas . (No es necesario, pero segtin la norma HTML cualquier texto debe aparecer dentro de un elemento de bloque). Inserta las siguientes lineas PHP dentro del parrafo: <2php Silane = "Mikkel: echo "ilelle same, nice to meet yout": Abre el documento en el navegador. Si todo ha salido bien, deberias ver en pantalla el texto Hello Mikkel, nice to meet you! {Qué efecto tienen estas lineas? Ein la primera linea de cédigo hemos declarado la variable, y al mismo tiempo la hemos inicializado, En este ejemplo, la “rellenamos” con la string Mikkel. La segunda linea sirve para presentar el conte- nido de la variable con un aspecto mas pulido. | Atencién: la variable fares ual Ce eet ie ete Ge bin el eet Seep | ae eras vexers selsaetehe Importante: en esta ocasién, el texto que sigue a echo debe escribirse entre comillas, ya que es el unico modo de que PHP busque variables y analice su contenido. Si por el contrario, lo quie queremos es guardar un valor numérico para una variable, no deberemos usar comillas, Sin embargo, en el ejemplo anterior se trata de una cadena de caracteres, es decir de una variable del tipo string, Pero, como ya hemos dicho, no tenemos que preocuparnos por el tipo de datos en este mo- mento. PHP es incluso capaz. de convertir nti- meros (que hayamos escrito entre comillas por error) auitomaticamente del tipo string a uno de los tipos de ntimeros. Y viceversa Concatenar strings y variables Si sabes algo de JavaScript (u otto lenguaje de programacién), en este punto seguramente te estards preguntanco donde est el operador de concatenacién en la expresién con echs. Por que normalmente es necesario concatenar las cadenas de caracteres (la parte entre comillas) y las variables. Para ello, en JavaScript se utili- 2a el operador de concatenacién +, lo que siempre conlleva problemas porque el signo + se utiliza al mismo tiempo como operador aritmético. La buena noticia es que PHP es sencillo, por lo que no suele ser necesario concatenar variables con cadenas de caractetes. Esto supone una gran mejora en comparacién con JavaScript y otros lenguajes de programacién. Oy Te Teel me Meer HELL) punto (.) Como ya hemos dicho, por lo general no es ne- cesario concatenar cadenas de caracteres y va- riables. Es posible usar el operador de conca- tenacion, pero no es obligatorio. Sin embargo, hay una excepcién a esta regla, en la que deberas usar el operacor de concate nacién, por ejemplo para la emisién de valores, de funciones o arrays. Con raz6n, en PHP se cligié el punto (.) en lugar del signo de suma. Para que comprendas bien la sintaxis, te mos- traré el script “Hello Mikkel ” en una variante concatenada mas “complicada’’. Tendria este aspecto:jEnviame un e-ail!
to siento, ha ocurride un error.
\n"y 1 , > 46 Envio de un formulario de opinién Pq e ect sg {Has cargado el script en el servidor y lo has probado? El programa no es demasiado com- plicado: tenemos un formulario que recopila la direccidn de e-mail (variable $ p09 (‘¥311")) yee texto del mensaje (variable §_ post message" |). Tras hacer clic en el bot6n. Enviar la pagina se vuelve a llamar a si misma. He resaltado todo el cédigo PHP con un fondo gris. PHP comprueba sila variable + post {'Mail') esté definida y no vacia, De este forma nos aseguramos de que como minimo se haya in- sertado algiin dato como direccién del remiten- te. 2Son ciertas ambas condiciones? Gracias a nuestro operador && (Y) deben cumplinse to- das las condiciones. Entonces, el destino pasa a manos de la funcién mat (). Resulta especial- mente practico que la direccién del destinatario se determine al principio del script, en la va- tiable Sreceivertiail. La funcién mail) asu- me el valor de esta variable como primer at- gumento. Pero no nos limitamos a enviar estos datos por Jas buenas, sino que aprovecharemos la “prue- ba de éxito” integrada en la funcién mast () como medida adicional de seguridad: a fun- cidn nai () devolverd t-rue en caso de que el proceso tenga éxito, mientras que en caso de error devolverd faise. ae Shan zi che eas ‘naii() ha funcio- {Ha funcionado? En ese caso, proporcionamos amail() la direccidn del destinatario y un asunto predefinido (Tienes correo nuevo). Como cuerpo del mensaje se utiliza el escrito del campo de formulario textarea. La direcci6n “From” se deduce de la variable $_post[*mail' |. Confirmacion de envio Si el mensaje logra enviarse correctamente, el usuario veré el texto Gracias por tu apinién. Por el contrario, si se produce algtin error entra en accidn else e informa al usuario sobre el problema. Prueba el script en tu sistema local. De este modo te aseguraris de “forzar” este error, ya que en ttt equipo local no tienes insta- lado ningiin servidor de correo. En el sistema loca, ef script provoca un error. ultar mensajes de error Hemos logrado que, en caso de error, el script devuelva el mensaje deseado: Lo siento, ha ocu- rrido un error. Sin embargo, el codigo que acompafia este mensaje no es nada bonito, aparte de no proporcionar mucha informacién al usuario. Ademés, un hacker potencial podria sacar muchas conclusiones a partir de estos mensajes de error -en este caso el codigo “dela- ta” la ruta de acceso y el niimero de linea. Por suerte existe un truco para ocultar los mensajes de error. Inserta un signo de arroba al Principio de la funcién: @. Es decir, en lugar de mail () escribe @nail(). Esto es precisamente lo que he hecho en nues- tro ejemplo feeaback. php , ya continuacién te muestro el resultado. Solo tienes que afadir el signo de arroba en el archivo de ejemplo del suplemento. yore Sw wraae terme te @ Gee BD B [Divorietecrsroriete % Oe Eonar) Los ciptcos mensajes de erro han desaparecido: ahora ef scriph slo muestra el mensaje que hemes programado nosotros.Envio de un formulario de opinion 47 PSC ra im Acer cir) Antes de presentarte mi “formmailer univer- sal” me gustaria hacer hincapié en un par de cosas. Los programadores suelen ser bastante -vagos y prefieren abreviar siempre que sea po- sible. De hecho, ya hemos visto algunos trucos para ello: asi, a++ significa a = a + Ly b- equivaleab = » - 1. Es una “reformulacion” del operacior de suma o resta, Sin embargo, también es posible “reformular” el operador de asignacién =. Se puede usar simulténeamente para concatenar 6 incluso para sumar (0 res- tar). Observa el script del formmailer que encontra- rs en la pagina siguiente. En él presento un ejemplo de la forma abreviada de concatena- cin. Mientras que en forma desarrollada se es- cribiria asi: Smessage = $message . “Snane~Svalue\n"; Si usamos el operador de asignaci6n = nos ahorramos tener que escribir una variable: Snessage .= "Snane=$value\n": Algo similar ocurre con la sustitucién de a = a + »pora += b. En este caso recurrimos al ope- rador de asignacién +=. Esta explicaciOn es s6lo a titulo informativo, para que no te extrafies cuando te tropieces con construcciones como esta. Y a continuacién, me complace presentar mi... TE MA Lest | En este punto me gustaria presentar mi propio formmailer, que te servira para enviar todos tus formularios, (casi) independientemente de como estén montados y de cudntos campos tengan. Importante: deberds incluir en tu for- mulario un campo llamado sta: para la direc- cidn de correo electrénico del remitente. Slo se enviard el contenido del formulario si la va- ible suai esté definida. Ademés, ten en ‘cuenta que deberds ajustar cada elemento del formulario con otro nombre. Si deseas que el script envie casillas de verificacién, una posible estructura de ejemplo seria es No necesitarias agregar una segunda checkbox Hamada partner, sino que bastaria con lamar- la partnex2 o similar. En la pagina siguiente encontrarés el cédigo fuente del mailer -el ar- chivo del suplemento se llama uninsiler.php. Enel suplemento del cuaderno he inchuido también un archivo Hamado sampieforn. html para que puedas probarlo. nane="partner"48 Envio de un formulario de opinion <1DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN"> ‘cheml>Tu mensaje ha sido enviado.
\n"s /* €n caso contrario, se muestra un mensaje de error: */ } else { echo "chi>Le sentimes, ne se pude enviar tu mensaje.