Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

89
Hola como yo me dedico a la creacion de webs hoy les vengo a dejar codigos en php y algunos en html para personas que no sepan mucho de php Primero para los que no saven que es PHP , es un lenguaje de programación interpretado, diseñado originalmente para la creación de páginas web dinámicas. Cofigos php : Formulario de Correo: Script para enviar formulario por correo <form action="mailto:[email protected]" encType="text/plain" method="post" onsubmit="alert('Gracias por sus Comentarios')"> <div align="center"><center><p><small><small><br> </small></small><textarea rows="8" name="comment" cols="50"></textarea><small><small><br> </small><input type="submit" value="Enviar" style="font-family: Verdana, Arial"><input type="reset" value="Borrar" style="font-family: Verdana, Arial"></small></p> </center></div> </form> Solo tiene que camviar [email protected] y poner su mail Scripts de Correo Php En este artículo, vamos a ver cómo hacer formularios y scripts de correo en Php , JavaScript y html . En concreto, estudiaremos el código que yo utilizo en mis páginas, programado por mi. Versatil, polivalente, fácil de implementar y actualizar. Es requerido cierto conocimiento de Html , Php , y JavaScript. Pero si sabe programar, le resultará muy sencillo modificar los fuentes con mis comentarios. El formulario requerido,para trabajar con el script de correo php , y asp, que son prácticamente idénticos, se muestra a aquí. El JavaScript, que se muestra en la misma página anterior, verificará que los campos obligatorios han sido cubiertos. Y por último, lo envía a un

Transcript of Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

Page 1: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

Hola como yo me dedico a la creacion de webs hoy les vengo a dejar codigos en php y algunos en html para personas que no sepan mucho de php 

Primero para los que no saven que es PHP, es un lenguaje de programación interpretado, diseñado originalmente para la creación de páginas web dinámicas. 

Cofigos php: 

Formulario de Correo: Script para enviar formulario por correo 

<form action="mailto:[email protected]" encType="text/plain" method="post" onsubmit="alert('Gracias por sus Comentarios')"> <div align="center"><center><p><small><small><br> </small></small><textarea rows="8" name="comment" cols="50"></textarea><small><small><br> </small><input type="submit" value="Enviar" style="font-family: Verdana, Arial"><input type="reset" value="Borrar" style="font-family: Verdana, Arial"></small></p> </center></div> </form> 

Solo tiene que camviar [email protected] y poner su mail 

Scripts de Correo Php 

En este artículo, vamos a ver cómo hacer formularios y scripts de correo en Php, JavaScript y html. En concreto, estudiaremos el código que yo utilizo en mis páginas, programado por mi. Versatil, polivalente, fácil de implementar y actualizar. Es requerido cierto conocimiento de Html, Php, y JavaScript. Pero si sabe programar, le resultará muy sencillo modificar los fuentes con mis comentarios. 

El formulario requerido,para trabajar con el script de correo php, y asp, que son prácticamente idénticos, se muestra a aquí. El JavaScript, que se muestra en la misma página anterior, verificará que los campos obligatorios han sido cubiertos. Y por último, lo envía a un programa, que lo procesa y envía al usuario 

Podemos utilizar distintos formularios con el mismo programa siguiendo las instrucciones. Este código, tiene la ventaja, de que es muy fácil de adaptar a otros usos, e introducir mas campos opcionales sin mas que incluirlos en el nuevo formulario. Podemos utilizar el mismo fuente sin modificar para varios formularios. 

La utilidad, es un simple feedback de email para el webmaster. Puesto que no almacena el envío en el servidor -no requiere sql-, lo envía directamente a la dirección de email que queramos. La gran ventaja, es que permite introducir campos al formulario html sin necesidad de modificar el código. Diseñamos el formulario, y nos olvidamos del resto. 

Quien no tengan conocimientos, por favor, no soliciten ayuda al webmaster. En la página de buscadores de cursos y manuales de este portal. Seguramente encontrarán la información y

Page 2: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

materiales necesarios para introducirse en la programación. Además, su host, ha de tener intérprete de php, y servicio de mail habilitado. 

La mayoría de hospedajes gratuitos, solo ofrecen Html. Y la inmensa mayoría. no permiten enviar mails. Si necesita un host gratuito con estas capacidades, visite tripod españa es útil para aprender. Iespaña, ofrece intérprete php, el resto de servicios, desconozco su estado actual. Algunos host, tienen páginas predefinidas de mail, similares a estos fuentes. Pero no puede modificarlas. 

Con JavaScript únicamente, no se pueden hacer formularios de correo que utilicen el servidor de mail del servidor. Se necesita algún lenguaje de servidor como php, asp, ó perl. utilice mailto: en un enlace en lugar de href:. En los sitios de manuales y códigos, hay bastante documentación. Y fuentes prácticamente listos para instalar sin mucho conocimiento. 

Además, le recomendamos nuestro transciptor html, un programa gratuito que convierte textos html en scrips php, javascipt, perl, asp,VBasicScript, C#, y VBasic. 

Nosotros, utilizamos este código en nuestras páginas, con buenos resultados y estamos muy satisfechos. 

Y bueno, vamos a dejarlo como licencia GNU. El problema de estas cosas, es que si no están protegidas, todo el mundo se puede atribuir la paternidad. De todas formas, es tan sencillo, que bueno, qué vamos a hacer, dejémoslo para la educación. 

Script de mail en Php 

## VARIABLES ## Dirección de tu email $micorreo="[email protected]"; ## Asunto axiliar si no lo introduce un asunto que identifique la procedencia del mail. $xasunto="Correo desde tu pagina"; ## Pagina final de gracias. Si el formulario no incluye este campo oculto del formulario. $gracias_defecto="http://www.buscarportal.com"; ## Página final si se produce un error al enviar el email $error_correo="http://www.buscarportal.com/anuncios/error_correo.html"; ## variable auxiliar, que produce un salto de línea $retorno="rn"; 

## CABECERAS DE CORREO ## Diversas cabeceras para el email. Luego, lo usaremos para enviarlo ## $nombre $correo son variables que contienen los valores de: nombre y email del formulario. $headers = "MIME-Version: 1.0rn" ; ## campos y variables nombre, $nombre y email $correo. No puede ser modificado su nombre en el form ## Han de mantenerse en el formulario para utilizar el mismo script con distintos formularios ## Añadimos esta linea por compatibilidad, Ver la Explicación $nombre=$HTTP_GET_VARS['nombre'];$correo=$HTTP_GET_VARS['correo']; ## Origen del mensaje $headers .= "From: $nombre<$correo>rn"; 

Page 3: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

## Responder al mail $headers .= "Reply-To: $correo<$correo>rn"; ## Otras cabeceras que pueden ponerse si ocurren problemas u omitirse si todo va bien. ## Obligatoriamente, cada elemento de la cabecera termina en rn Nueva línea. ## $headers .= "X-Mailer: PHP/" . phpversion(); ## $headers .= "X-Sender: $correo<$correo>rn"; ## $headers .= "Return-Path: <$correo>rn"; ## $headers .= "Cc: $nombre<$correo>rn"; 

## CUERPO DEL MENSAJE INICIO ## Obtención de la IP del visitante ## Empezamos a contruir el mensaje final, sumando los elementos del mensaje $mfinal.="IP visitante: "; ## Guardamos la IP del visitante $mfinal.=$HTTP_SERVER_VARS['REMOTE_ADDR']; $mfinal.=": "; ## Y el puerto del usuario $mfinal.=$HTTP_SERVER_VARS['REMOTE_PORT']; ## añadimos dos retornos de línea $mfinal.=$retorno; $mfinal.=$retorno; 

## CUERPO DEL MENSAJE AÑADIDO DE CAMPOS AL MENSAJE ## $vareliminar Número de botones del formulario y campos ocultos (últimos elementos) + 1 --> en este caso (1+1) ## Si queremos eliminar del mensaje el campo oculto de la página final $vareliminar=3; $vareliminar=2; ## Almacenar en un array los nombres de variables del formulario enviado $claves_array=array_keys ($HTTP_GET_VARS); ## de i=0 hasta el número de campos del formulario, - variables a eliminar for ($i=0;$i<=(count($HTTP_GET_VARS)-$vareliminar);$i++){ ## Obtenemos el nombre de cada campo en concreto $nombrevar=$claves_array[$i]; ## Sumamos el nombre de campo de formulario al mensaje final $mfinal .= $nombrevar; $mfinal .= ": "; ## Y añadimos el contenido que haya introducido nuestro visitante $mfinal .= $HTTP_GET_VARS[$nombrevar]; ## Separamos cada campo por dos retornos, podemos eliminar uno $mfinal .= $retorno; $mfinal .= $retorno; } ## Si no hay asunto, o no contiene nada, le damos al email un asunto defecto if (is_null($asunto)){ $asunto2="correo desde la web";} ## Si hay asunto, añadimos un prefijo propio para identificar que es email desde la web. else { $asunto2 ="Asunto-> $asunto"; } 

## ENVÍO DEL CORREO ## Para finalizar, envíamos el mail, y comprobamos el resultado 

Page 4: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

$resultado=mail($micorreo, $asunto2, $mfinal, $headers); ## Si quisiésemos enviar un mensaje de acuso de recibo, añadimos esta línea, sabiendo que: ## tenemos que asignar estas variables $asuntoreply (Asunto), $mreply (mensaje), $headers2(mensaje) ## de modo similar a como hemos construido las variables anteriores ## $resultado2=mail($correo, $asuntoreply, $mreply, $headers2); 

## COMPROBACIÓN ## Si no se ha podido enviar el correo. if ($resultado ==true) { ## Si no hay página de gracias carga las página de defecto if (is_null($pagina_gracias)){ header( "Location: $gracias_defecto" );} else{ ## Si hay página de gracias, cárgala header( "Location: $pagina_gracias" ); } } ## Si se ha producido un error, advierte al usuario else header( "Location: $error_correo" ); ?> 

Formulario web seguro antispam PHP Veamos primero el código del formulario en PHP, consta de 2 archivos, contacto.php y gracias.php: 

contacto.php 

// QUINTI.NET SECURE FORM VERSION 1.0 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" > <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" /> <meta name="keywords" content="" /> <meta name="description" content="" /> <link rel="shortcut icon" href="image.gif" type="image/x-icon" /> <title>Quinti.net - Contact form example web secure anti spam with captcha</title> //U NEED A PHP SERVER. //START REQUIRED IN HEAD <? // Quinti.net - Secure Contact Form Antispam with CAPTCHA v1.0 // Created by Jesus Quintana // http://www.quinti.net // Visit site for help and new versions 

echo "<script type="text/javascript">n"; echo "<!--n"; 

Page 5: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

echo "function validar(form1) {n"; echo "if (form1.name.value.length < 2) {n"; echo "alert('"; echo "Inserte el nombre";; echo "')n"; echo "form1.name.focus();n"; echo "return (false);}n"; echo "var checkOK = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚ" + "abcdefghijklmnñopqrstuvwxyzáéíóú ";n"; echo "var checkStr = form1.name.value;n"; echo "var allValid = true;n"; echo "var uword = hex_md5(document.getElementById('uword').value)n"; echo "for (i = 0; i < checkStr.length; i++) {"; echo "ch = checkStr.charAt(i);n"; echo "for (j = 0; j < checkOK.length; j++)n"; echo "if (ch == checkOK.charAt(j))n"; echo "break;n"; echo "if (j == checkOK.length) {n"; echo "allValid = false;n"; echo "break;"; echo "}}n"; echo "if (!allValid) {n"; echo "alert('"; echo "Inser a name"; echo "');n"; echo "form1.name.focus();n"; echo "return (false);}n"; echo "if ((form1.email.value.indexOf ('@', 0) == -1)||(form1.email.value.length < 9) || form1.email.value.indexOf ('.', 0)== -1 ){n"; echo "alert('"; echo "Insert a valid email "; echo "');n"; echo "form1.email.focus();"; echo "return (false);}n"; echo "if (form1.message.value.length < 7) {n"; echo "alert('"; echo "Insert a message"; echo "');n"; echo "form1.message.focus();"; echo "return (false);}n"; echo "if (uword==cword[anum-1]) {n"; echo "return true;}n"; echo "else {n"; echo "alert('"; echo "Insert image code (is to prevent spam) "; echo "');n"; echo "document.getElementById('uword').focus();n"; echo "return false;}n"; echo "return (true);}n"; 

Page 6: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

echo "-->n"; echo "</script>n"; ?> <script type="text/javascript" src="md5.js"></script> <script type="text/javascript" src="jcap.js"></script> //END REQUIRED IN HEAD <style type="text/css"> <!-- img{border:0;} --> </style> </head> <body> //START REQUIRED IN BODY <form method="post" onsubmit="return validar(this)" id="form1" action="gracias.php"> <p> <input type="hidden" name="token" value="<?=$token?>" /> </p> <p> Nombre:*<input name="name" type="text" value="" /> </p> <p> E-mail:* <input name="email" type="text" value="" /> </p> <p> Asunto: <input name="phone" type="text" value="" /> </p> <p> Mensaje:* <br /> <textarea name="message" cols="30" rows="5"></textarea> </p> <p> Insert the image code* (to prevent spam)</p> <p><input type="text" name="uword" id="uword" value="" /> </p> <p><script type="text/javascript">cimg()</script> </p> <p> <input type="submit" value="enviar" /> </p> </form> <p>fields with * are obligatory. <a href="http://www.quinti.net" title="www.quinti.net - diseño web y multimedia"><img src="http://www.quinti.net/pics/q.png" width="21" height="14" alt="diseño web y multimedia" /></a></p> //END REQUIRED IN BODY <p> <a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml11" alt="Valid XHTML 1.1" height="31" width="88" /></a> </p> 

Page 7: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

</body> </html> 

bien, vemos que en el <head> escribimos en php el validador de campos en JavaScript. Y también incluimos 2 archivos .js externos, propiedad de http://www.archreality.com/jcap/#j1 los cuales les he modificado una función. 

Veamos ahora el procesador del formulario, llamado gracias.php 

// QUINTI.NET SECURE FORM VERSION 1.0 

//START REQUIRED CODE <? // Quinti.net - Secure Contact Form Antispam with CAPTCHA v1.0 // Created by Jesus Quintana // http://www.quinti.net // Visit site for help and new versions 

Page 8: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar
Page 9: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

@import_request_variables("gpc" ;//import variables 

Page 10: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

$youremail = "[email protected] "; //your mail $subject = "el título del tema "; // for example, title of your contact page page - contact $redirect = "contacto.php";//url to be redirected when contact form is sent $secs = "5";// time in seconds will be redirected if(eregi("MIME-Version:",$postVars)) { 

Page 11: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

mail("[email protected]", "Form Hijack Attempt", "A spam relay was attempted from

Page 12: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

the Web site and was blocked.", "From:SpamMonitor" ; 

Page 13: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

die(); } //bl  

spam $secret = 'ssshhitsa  cret'; $token = md5(rand(1, 1000).$  cret); $_SESSION['token'] =  to  

; ?> //END REQUI  

CODE <  DOCT PE html PUBLIC "-//W3C//DTD XHTML  1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml  . dtd"   <html xmlns="http://www.w3.org/1999/xhtml" xml:lan  "es" >  <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-88 -1" /> <title> Thank you, processor example anti spam with captcha by quinti.net, correct process  title> //START REQUI  D META <meta http-equiv="refresh" content="<?=$secs;?>;URL=<?=$redirec ?>" /> //END REQUI  D META  /head>  <body> //START REQUIRED  N  DY <? // variables to stop  ammers $name = stripslashes name); $message = stripslashes($m  sage); $headers .= "From: " . $email . rnrn"; //This is where the email is sent using your values from above. Be sure to update this if you change any fields in con ct.php mail("$youremail", "$su ect"," Nam   $name Email $email Phone  $phone Message:  essage ",$h  ders); // Strip r and n from the email  ddress $_POST['email'] = preg_replace("r", "", $_POST['e il']); $_POST['email'] = preg_replace("n", "", $_POST['e  il']); $_SESSION['token'] =  token; $token = md5(rand(1, 1000).$  cret); $secret = 'ssshhitsa  cret'; $field = preg_replace( "/[nr]+/", " ", $  eld ); 

Page 14: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

// Remove injected headers 

Page 15: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

$find = array("/bcc:/i","/Content-Type:/i","/cc:/i","/to:/i" ; 

Page 16: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

$_POST['email'] = preg_replace($find, "", $_  ST['email']); $message = preg_repl e($find, "", message); $email=st  replace("r","n",$email); $name=str_rep  ce("r","n",$name); $message=str_re 

e("r","n",$message); $phone=str_replace("r","n",$phone); if(!eregi("^[_a-z0-9-]+(.[_a- -9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$", $email)) { 

Page 17: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

ob_clean(); 

Page 18: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

mail("$youremail", "Message Killed", "$message", "From: $name <$email>" ; 

Page 19: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

Page 20: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

t("Message killed." ; 

Page 21: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

Page 22: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

if (eregi('^(bcc$|content-type|mime-version|--)',$key)) 

Page 23: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

print_error("Field names indicate exploit." ; //bloqueo de spam 

Page 24: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

?> <p>Thank you, the contact form was sent correctly. In 5 seconds you will be redirected to index page.  

> //END REQUIRED IN  DY </b  y> </ h 

> HTML para los que no saven  

P Cursores para  Sus   

 

 <st  e> b  y{ cursor:url(http://cuw.iespana.es/archivos/pun02.cu  ;} </style><a href="http://www.frasesdeamore.com">frases de amor  

 

 <st  e> b  y{ cursor:url(http://cuw.iespana.es/archivos/pun04.cu  ;} </style><a href="http://www.frasesdeamore.com">frases de amor  

 

 <st  e> b  y{ cursor:url(http://cuw.iespana.es/archivos/pun06.cu  ;} </style><a href="http://www.frasesdeamore.com">frases de amor  

> Chat par   tu  

b <embed src="http://www.***/web_gear/chat/chat.swf" quality="high" width="540" height="405" name="chat" FlashVars="id=45441243" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://xat.com/update_flash.shtml /> <b  /> <small><a target="_BLANK" href="">  hat  Web</a></small><b 

> <img style="visibility:hidden;width:0px;height:0px;" border=0 width=0 height=0 src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyMjg1NzM1NTYwNjImcHQ9MTIyODU3Mzc*NDQwNiZwPTUzMTUxJmQ9Jmc9MSZ*PSZvPWRiNDY3YTMzYWZmNDQ5NDg4NjU*NmE3YjNmOWJmMWFk.gif" /> 

Page 25: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

Calendario para tu Web: lo pueden usar tanto en html como en php 

<iframe src="http://www.free-blog-content.com/Calendars/calendar0037.htm" width="166" height="240" marginwidth="0" marginheight="0" frameborder="no" scrolling=no allowtransparency="true"></iframe><center><a style="font-size: 3mm" href="http://www.crearunaweb.net/">Calandario Web</a></center> 

Relog para tu web: Lo pueden usar tanto en html como em php 

<!---Reloj flash para t!---> <table border="0"><tr><td><a href="http://www.crearunaweb.net" title="relojes web"><embed style="" src="http://www.crearunaweb.net/complementos/reloj08.swf" wmode="transparent" type="application/x-shockwave-flash" height="100" width="100"><param name=wmode value=transparent /></embed></a></td></tr><tr><td align="center"></br><a href="http://www.emoticonosi.com" style="font-size:10px;" title="emoticonos" >emoticonos</a></td></tr></table> <!---Reloj flash para t!--> 

Page 26: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

Me decidi por comenzar a redactar un completo tutorial de diseño y programacion web. Muchas veces me paso de agarrar muchos pdfs bastante largos y la verdad, tanta informacion te quema la cabeza, asi que la idea es ser muy concreto, y tirar links con informacion adicional para determinados puntos. 

Mi idea es ir subiendo por partes todo el contenido, 100% redactado por mi, no tengo nada diagramado, simplemente lo que vaya surgiendo lo ire agregando. 

Este tutorial va a empezar totalmente desde CERO, asi que si no cazas un palo, no importa, si me seguis, vas a captarlo, porque voy a ser muy basico al principio, y voy a tratar de utilizar vocabulario y palabras comunes, o sea, no pretendas que voy a escribir y hablar como las cosas que encontras en un libro jeje, lo aclaro ahora, despues no se me quejen juaaaaaaa 

El contenido va a ser: 

- HTML - CSS - JavaScript - PHP - MySQL - XML - Web Services - WAP - Hostings - Y no se, otras cosas tambien. 

Quizas algunas veces me cuelgue de subir la info, laburo y facu me mata, pero bue, cuando tenga tiempo al pedo, vengo y sigo agregando cosas je. 

Recuerden, voy a ser MUY CONCRETO y BASICO en muchos puntos, voy a tratar de inducirlos, uds sigan investigando! 

En fin, comencemos. 

Introduccion HTML 

Bue, la onda es asi, HTML significa HyperText Markup Language, que significaria algo asi como lenguaje de etiquetas de hipertexto. 

Este lenguaje, en si, no es programacion, sino que es una forma de darle estructura a las paginas, o sea, para ubicar como querramos todas las cosas que se visualizan en un sitio. 

Este codigo que se redacta, es interpretado por el navegador, y se muestra al usuario. 

Para comenzar a realizar algunas pruebas, vamos a necesitar algunas HERRAMIENTAS: 

+ Un navegador Web para visualizar nuestras paginas: Si estas viendo este post desde taringa, ya tenes un navegador  . Yo recomiendo Firefox, pero bue, Internet Explorer alcanza 

Page 27: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

+ Un editor de codigo: Todo el codigo de HTML se puede escribir en el notepad de Windows. Si tenes eso, ya alcanza por ahora. Igual, te recomiendo que te vayas bajando el Notepad++ http://notepad-plus.sourceforge.net/es/site.htm, ya que te colorea el codigo que vas escribiendo, y te ayuda muchisimo. 

Comenzemos a escribir codigo HTML! 

Aclaracion sobre el codigo: Si nunca vieron algun tipo de codigo de programacion, no se asusten si no cachan una. Simplemente hay que seguir determinadas reglas y sintaxis para que todo funcione ok. Empiecen de a poquito a comprenderlas, y dia a dia incorporen en sus cabezas un par mas! 

Bue ahora si, toda pagina web HTML tiene una estructura basica comun, que es la siguiente. 

<html> <head> </head> <body> </body> </html> 

Cada uno de los elementos que visualizan se llaman etiquetas ( o tags ). Los tags en HTML generalmente se redactan asi: <nombre_del_tag> </nombre_del_tag>. Esto se refiere a que el 1er tag denota el comienzo de esa estructura o evento, y el segundo tag ( que tiene la barra invertida al principio, denota el final. 

Explicacion de los tags que utilizamos en el ejemplo: 

* HTML: Significa que ahi empieza nuestra pagina, tiene que estar arriba de todo * HEAD: Es el encabezado de la pagina, se utiliza para agregar algunas cosas extras, por ahora no importa * BODY: Alli se redacta el cuerpo de la pagina 

Con respecto a los tags y su ubicacion y orden, tenemos que pensarlos como conjuntos: 

* HEAD esta adentro de HTML, o sea, se abre HTML, adentro de HTML se abre y cierra HEAD, y luego al final de todoHTML se cierra. si recien dijimos que HTML indica el inicio de la pagina, nunca pero nunca HEAD podria estar antes deHTML, ya que nunca se inicio la pagina, ni tampoco podria estar despues del cierre de HTML, ya que eso indica el fin de la pagina. 

Ahora lo que vamos a hacer, es copiar y pegar en el notepad el codigo de la estructura basica de una pagina. Aqui se los pongo. 

<html> <head> </head> <body> </body> </html> 

Page 28: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

Ahora guardamos el archivo como taringa.html ( Fijense que cuando van a "guardar como", el tipo de guardado no sea archivo de texto, sino que sea todo tipo de archivos, sino aca windows te cambia la extension y te lo guarda como taringa.html.txt ) 

Una vez que lo guardamos, vamos, y lo abrimos con el navegador. La pagina va a estar en blanco!!!! y si, si lo unico que pusimos es una estructura basica, sin texto ni nada!!!! 

Agregando texto a nuestra pagina: 

Hoy habiamos dicho que la etiqueta BODY es el cuerpo de la pagina, alli debemos redactar todo el contenido, antes del cierre, y despues del inicio. 

<html> <head> </head> <body> El que lee es puto </body> </html> 

Copiamos y pegamos este codigo en Notepad, lo guardamos con extension .HTML ( por ejemplo, taringa.html ), lo abrimos con el navegador, y ya vamos el texto!!! 

Cualquier cosa que redacten dentro de body, luego van a visualizarlo en la pagina!! o sea, cambien "el que lee es puto" por "el diego es el mas grande de la argentina" y listo! guarden los cambios y abran la pagina. 

Bueno, si se dan cuenta, todo el texto es re plano, sin colores ni nada!!! En la proxima entrega les voy a contar como ordenar texto, parrafos, negrita, etc etc!!! 

Espero que les haya gustado esta primera edicion apresurada

Page 29: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

ueno gente, como les habia prometido, aqui llega la segunda parte. 

Si todavia no leiste el primero, anda abajo de todo que tenes el link! 

Si se acuerdan del capitulo pasado, ya aprendimos a armar la estructura basica de una pagina, y a ponerle texto adentro de ella, pero la cagada es que todo el texto que colocamos es re plano, cero formato, todo chato, por mas que en el codigo veamos que hay espacios. Esto sucede porque como les habia dicho, para acomodar todos los elementos en una pagina, necesitamos utilizar etiquetas. 

Algunas de las etiquetas mas utilizadas comúnmente son: 

PARRAFOS 

<p></p>. Esta se utiliza para organizar el texto en parrafos, por ejemplo, podriamos armar dos parrafos asi: 

<html> <head> </head> <body> <p>Hola, este es el primer parrafo</p> <p>Hola, este es el segundo parrafo.</p> </body> </html> 

Page 30: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

( Espero que ya no haga falta que les diga que lo tienen que guardar como .html y abrirlo con el

Page 31: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

navegador   ) 

Page 32: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

Traten de no hacer chiquero con el codigo html, si ustedes escriben todo el codigo en una sola linea, el navegador lo va a interpretar perfectamente, pero después, cuando el codigo sea muy largo, no van a entender un choto ustedes! Ejemplo de algo que si funciona pero es totalmente inentendible para un humano a la larga: 

<html><head></head><body><p>Hola, este es el primer parrafo</p><p>Hola, este es el segundo parrafo.</p></body></html> 

NEGRITA 

Para poner el texto en negrita, utilizamos la etiqueta <strong></strong>, por ejemplo ( A partir de ahora voy a dejar de poner la estructura basica, pero ustedes ya saben que el contenido visible se coloca entre las etiquetas <body></body> ) 

<strong>Hola, esto esta en negrita</strong> 

O sino: 

<p>Hola, esto esta en <strong>negrita</strong> ( ahora, unicamente la palabra “negrita” esta en negrita )</p> 

ENFASIS 

Ahora, vamos a utilizar la etiqueta para dar énfasis a una palabra o frase, la misma es <em></em>, por ejemplo: <p>Hola, este texto esta en un parrafo, y esta <strong>palabra</strong> esta en negrita, y tambien le voy a dar énfasis a <em>esta palabra</em></p> 

Entienden como va todo? Fijense que todo el texto forma un parrafo, porque esta encerrado entre <p></p>, “palabra” esta en negrita porque esta encerrado entre <strong></strong>, y “esta palabra” tiene énfasis porque esta encerrado entre <em></em>!!! 

LISTA ORDENADA 

Tambien con HTML, podemos ordenar en lista, o sea, tipo 1, 2 , 3 ,4 , etc. La etiqueta utilizada es <li>, y todos los elementos de una lista se agrupan con <ul>, o sea, con <ul> indicamos que comienza un listado, con <li></li> colocamos cada elemento, y cuando termina la lista, cerramos con </ul>, por ejemplo, seguimos combinando todas las etiquetas aprendidas: 

<p>Hola, este texto es un parrafo, y ahora <strong>esto va en negrita</strong> y aca <em>con énfasis</em>, y ahora armamos un listado:</p> 

Page 33: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

<li> este es el 1er elemento, y fijense que abrimos la agrupación con UL</li> <li>este es el segundo elemento</li> <li>este el tercer elemento</li> <li>este el cuarto y ultimo, y abajo vamos a cerrar el listado con UL</li> </ul> <p>Aca abrimos otro parrafo! Y ponemos <strong>NEGRITA!</strong></p> 

TITULOS 

Tambien tenemos forma de indicar titulos, o sea, titulo que se supone que es encabezado, cada encabezado tiene un nivel, nivel 1, nivel 2, nivel 3, de acuerdo a la importancia, ustedes le asignan el nivel que quieren, las etiquetas son <h1></h1>, <h2></h2>, <h3></h3>,<h4>/<h4>, Ahora el ejemplo, seguimos agregando cosas a nuestro codigo ( Para que se entienda bien todo, ya ahora voy a incluir la estructura completa, que habiamos visto al principio: 

<html> <head> </head> <body> 

<h1>Este es el titulo!</h1> <p>Hola, aca estamos colocando texto en un parrafo <strong>con negrita</strong> y aca <em>con énfasis</em></p> <ul> <li>armamos un listado</li> <li>elemento 2</li> <li>ultimo elemento, y cerramos el ul</li> </ul> <h2>Un titulo menor </h2> <p>aca otro parrafo, no se…</p> </body> </html> 

ESPACIOS Y LINEAS HORIZONTALES 

Si queremos dejar espacios de lineas para abajo sin abrir otro parrafo, utilizamos la etiqueta <br />, esta no tiene apertura y cierre, es unica, al colocar <br /> el navegador tira el contenido una linea abajo, tambien, esta la etiqueta <hr />, esta, lo que hace es trazar una linea horizontal en toda la pagina, vamos a verla en practica: 

<html> <head> 

Page 34: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

</head> <body> 

<h1>Este es el titulo!</h1> <p>Hola, aca estamos colocando texto en un parrafo <strong>con negrita</strong> y aca <em>con énfasis</em></p> <p>aca escribo algo, y dejo espacio abajo con br <br /><br /><br /> cada br es un espacio, ahora voy a trazar una linea horizontal <hr /> 

<ul> <li>armamos un listado</li> <li>elemento 2</li> <li>ultimo elemento, y cerramos el ul</li> </ul> <h2>Un titulo menor </h2> <p>aca otro parrafo, no se…</p> </body> </html> 

Bueno, esto es todo por hoy! En la proxima, vamos a terminar de ver algunas etiquetas mas, como armar tablas, y, ustedes se preguntaran, como carajo le damos color a esto no? Bueno, vamos a aprender a darle estilos a nuestra pagina!

Page 35: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

Bueno, llega la 3ra parte! 

En el capitulo anterior, habiamos visto como utilizar etiquetas para darle forma a nuestro contenido ( parrafos, negrita, listas, etc ). 

Les dejo un link con una lista de etiquetas para que las lean! 

http://www.htmlquick.com/es/reference/tags.html 

De todas maneras, vamos a seguir con algunas mas, y ya nos vamos a introducir con el tema de CSS ( Estilos ). 

COMO INSERTAR UN LINK 

Tenemos 2 formas de definir un enlace a otra página. El enlace puede ser externo ( Quiere decir que colocamos un link a una pagina que no esta en nuestro dominio, por ejemplo, un link a Google ) o puede ser un link interno ( Se refiere a una pagina que esta en nuestro dominio ) 

Ejemplo link externo : 

<a href='http://www.google.com'>Texto del link</a> 

La estructura es asi <a href='direcciondelapagina'>texto que va a mostrar el link</a>. Tengan en cuenta que siempre las direcciones deben empezar con http:// 

Ejemplo de link interno: 

Este tipo de enlace, es para paginas relativas al nivel de carpeta donde esta situada la pagina actual, por ejemplo, tenemos la pagina taringa.html, y en la misma carpeta, tenemos la pagina taringa2.html, si queremos colocar un link desde taringa.html a taringa2.html, el codigo es el siguiente: 

<a href='taringa2.html'>Este es un link a taringa2.html</a> 

Fijense que ya no hace falta hacer referencia a todo el dominio completo, ya que la pagina se encuentra en la misma carpeta de origen. 

Puede suceder que la pagina taringa2.html, se encuentre en un nivel mas bajo, en una carpeta, llamada "otros". En este caso, el link sera asi: 

<a href='otros/taringa2.html'>Este es un link a taringa2.html que esta dentro de la carpeta "otros"</a> 

COMO INSERTAR IMAGENES 

Para insertar imagenes, se utiliza la etiqueta IMG. Se escribe de la siguiente manera: 

Page 36: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

<img src='imagen.jpg'> 

En este caso, lo que hacemos, es colocar una imagen que se encuentra en la misma carpeta donde esta nuestra paginahtml. Si queremos insertar una imagen que esta en cualquier lado de internet, lo que hacemos es: 

<img src='http://www.google.com.ar/images/firefox/sprite.png'> 

Fijense que cuando es una imagen externa, hacemos referencia a la URL completa, comenzando por http:// 

Al igual que los links, si tenemos las imagenes bajo la carpeta "imagenes", relativa a nuestra pagina, entonces el codigo se escribe asi: 

<img src='imagenes/imagen.jpg'> 

COMO CENTRAR CONTENIDO 

Para centrar contenido, por ejemplo, texto, imagenes, etc, podemos hacer uso de la etiqueta "center". se utiliza de la siguiente manera: 

<center><img src='imagenes/imagen.jpg'></center> 

En este ejemplo, lo que hacemos, es centrar la imagen "imagen.jpg". 

Tambien podemos centrar texto: 

<center><p>Hola, este es un texto centrado</p></center> 

COMO ARMAR TABLAS 

Cuando lo que queremos mostrar en nuestra pagina son DATOS, lo mejor es utilizar tablas ( como por ejemplo visualizamos la informacion en excel ) 

La estructura para armar tablas es la siguiente: 

Inicio de tabla: <table> Mostramos una fila: <tr></tr> Definimos encabezados del contenido: <th></th> Mostramos los datos para cada celda: <td</td> Fin de la tabla: </table> 

Ahora, pongamos un ejemplo de una tablita facil: 

<table> <tr><th>Columna 1</th><th>Columna 2</th><th>Columna 3</th></tr> <tr><td>Dato 1</td><td>Dato 2</td><td>Dato 3</td></tr> <td><td>Dato 11</td><td>Dato 22</td><td>Dato 33</td></tr> 

Page 37: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

</table> 

Y Ahi tenemos una tablita ya armada!!!! 

INTRODUCCION A LOS ESTILOS CSS 

CSS quiere decir Cascading Style Sheets, que significa en castellano Hojas de Estilo en Cascada. 

Hojas de estilo, basicamente, es porque es un archivito que le da estilo a nuestras paginas ( Estilo me refiero a color, tamaño de texto, ubicacion del contenido, etc ). 

En Cascada, se refiere a que los estilos se aplican por niveles. Por ejemplo, miremoslo de esta manera, utilicemos como ejemplo las tablas. TABLE seria un elemento padre, un elemento hijo seria TR ( ya que se define dentro de table), y un elemento hijo de TR seria TD ( ya que se define dentro de TR), Entonces, podriamos aplicar un estilo de tamaño de texto a TABLE, y el mismo, tambien se aplicaria a TR, TD. 

Los estilos se pueden escribir tanto dentro de la pagina html ( en el encabezado head), se pueden aplicar directamente a etiquetas, o se pueden escribir en archivitos separados. 

Generalmente, es muy habitual, cuando se trata de una pagina muy grande con muchos estilos, manejar por separado los estilos del codigo HTML, o sea, manejarlo como archivitos externos. 

ESCRIBIENDO CSS DESDE EL HTML 

En este caso, vamos a escribir estilos directamente desde el HTML. Les paso la estructura de como seria: 

<html> <head> <style type='text/css'> </style> </head> <body> <p>Texto bla bla</p> </body> </html> 

Fijense que incluimos en head la etiqueta STYLE, donde alli adentro escribiremos el codigo CSS. 

EJEMPLOS DE CSS 

Bueno, comencemos a escribir codigo CSS!!! 

Page 38: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

Lo que hacemos con CSS, es darle estilos a cada elemento de nuestra pagina ( elemento se refiere a etiquetas, por ejemplo, links, parrafos, tablas, etc ). 

Cada elemento tiene varias propiedades, como son tipo de letra, tamaño de letra, color de letra, color de fondo, etc. 

Ahora, pensemos esto, a un parrafo de texto, queremos ponerle un tamaño de letra grande y con color rojo, como hacemos??? 

CODIGO DE EJEMPLO 

p { font-family: verdana; font-size: 18px; font-color: red; } 

P es el elemento al que va a aplicar el estilo, despues, ese elemento tiene varias propiedades como dijimos, y lo que hacemos, es asignarles determinado valor a cada una de las propiedades. 

Propiedades, piensenlo como caracteristicas, imaginense, P es una persona, Pablo, pablo tiene las propiedades de altura, peso, color de pelo, etc. Y lo que hacemos, es asignarle las propiedades a Pablo, queremos que sea 1.80 de alto, pesa 70kilos, etc.   

Explicacion de las propiedades: 

font-family: Es el tipo de letra font-size: El tamaño de la letra en pixeles. 10px, 12px, lo que quieran. font-color: el color de la letra. 

Vamos ahora al ejemplo completo. Guarden este codigo como ejemplo.html 

<html> <head> <style type='text/css'> p { font-family: verdana; font-size: 18px; font-color: red; } </style> </head> <body> <p>Parrafo que va a cambiar de propiedad, va a tener tamaño 18, color rojo, y la fuente va a ser verdana.</p> </body> </html> 

Page 39: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

Y Listo!!!! 

En el proximo capitulo vamos a entrar mas en profundidad en lo que es CSS... 

Tag HTMLA continuación, encontrarás una lista de todos los tags HTML(lenguaje de marcas hipertextual) para el estándar HTML 4.01, que también pertenecen al estándar XHTML (lenguaje de marcas hipertextual extensible) con la excepción de aquellos desaprobados. Junto a cada tag encontrarás un símbolo indicando si el tag es vacío o no, lo que podría ayudarte en la labor de escribir código XHTML, el cual representa una mejor opción no tan difícil de lograr. Recomendamos fuertemente usar XHTML en lugar de HTML, debido a los beneficios y a las pequeñas diferencias.

El color rojo se ha usado para marcar tags desaprobados, cuyo uso no es recomendado. Esto se debe a que han sido reemplazados por otros tags (por ejemplo, el tag applet ha sido reemplazado por el tag object) o porque las hojas de estilos se han convertido en la forma preferida de lograr sus mismos efectos. Nota, que los tags y atributos desaprobados en HTMLpueden no ser soportados por futuras versiones (por ejemplo, XHTML 1.0). Esta es una buena razón para dejar de usarlos.

Nota: Si no sabes lo que es un tag y/o cómo se debe utilizar, te recomendamos que leas nuestro tutorial "tags y atributos HTML" que puedes encontrar en nuestra sección de tutoriales HTML.

Lista de tags HTML

Tag Vacío Descripción corta

<!-- --> Inserta comentarios ocultos

<!DOCTYPE> Establece el tipo de documento

<a>   Inserta vínculos o marcadores

<abbr>   Explica abreviaciones

<acronym>   Explica acrónimos

<address>   Provee información de contacto

<applet>   Inserta un applet (scripts)

<area> Define sectores para mapas de imagen

<b>   Texto en negrita

<base> URI base para resolver URIs relativas

<basefont> Tamaño de la fuente predeterminado

<bdo>   Suprime el algoritmo bidireccional

<big>   Texto en tamaño "grande".

<blockquote>   Citar párrafos

Page 40: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

<body>   Contiene los elementos a mostrar

<br> Fuerza un quiebre de línea

<button>   Crea un botón

<caption>   Establece un título para una tabla

<center>   Centra su contenido

<cite>   Inserta una cita o referencia

<code>   Representa texto de computadora

<col> Da atributos a columnas en una tabla

<colgroup>   Agrupa columnas en una tabla

<dd>   Define descripciones en una lista

<del>   Indica texto eliminado

<dfn>   Asigna una definición a un término

<dir>   Inserta una lista de directorios (árbol)

<div>   Define un bloque de contenido

<dl>   Define una lista

<dt>   Inserta un término en una lista

<em>   Indica énfasis

<fieldset>   Agrupa controles en un formulario

<font>   Establece el estilo de fuente

<form>   Inserta un formulario

<frame> Inserta un marco

<frameset>   Inserta un grupo de frames

<h1>   Encabezado de nivel 1

<h2>   Encabezado de nivel 2

<h3>   Encabezado de nivel 3

<h4>   Encabezado de nivel 4

<h5>   Encabezado de nivel 5

<h6>   Encabezado de nivel 6

<head>   Define el bloque de encabezado

<hr> Dibuja una línea o regla horizontal

<html>   Contiene al documento

Page 41: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

<i>   Muestra texto en itálica

<iframe>   Inserta un marco dentro del documento

<img> Inserta una imagen

<input> Muestra controles de entrada

<ins>   Indica texto insertado

<isindex> Entrada de línea simple

<kbd>   Indica texto a ingresarse por el usuario

<label>   Establece una etiqueta para un control

<legend>   Asigna un título a un "fieldset"

<li>   Define un artículo en una lista

<link> Ofrece informacón relacional

<map>   Define un mapa de imagen

<menu>   Lista menú

<meta> Da información sobre el documento

<noframes>   Contenido alternativo para marcos

<noscript>   Contenido alternativo para scripts

<object>   Ejecuta aplicaciones externas

<ol>   Inserta una lista ordenada

<optgroup>   Agrupa opciones en un control select

<option>   Define una opción en un control select

<p>   Define un párrafo

<param> Da un parámetro para un objeto

<pre>   Bloque de texto preformateado

<q>   Inserta una cita en una línea

<s>   Muestra texto tachado

<samp>   Representa texto de programas

<script>   Contiene scripts

<select>   Crea un control select

<small>   Muestra texto en letra "pequeña"

<span>   Asigna atributos al texto en líneas

<strike>   Muestra texto tachado

<strong>   Indica énfasis fuerte

Page 42: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

<style>   Define atributos visuales (hojas estilo)

<sub>   Define texto en sub-índice

<sup>   Define texto en super-índice

<table>   Inserta una tabla

<tbody>   Define un cuerpo en una tabla

<td>   Celda regular de una tabla

<textarea>   Entrada de texto de líneas múltiples

<tfoot>   Define un pie en una tabla

<th>   Celda de encabezado de una tabla

<thead>   Define un encabezado de tabla

<title>   Define el título del documento

<tr>   Inserta una fila en una tabla

<tt>   Muestra texto en "teletype"

<u>   Muestra texto subrayado

<ul>   Inserta una lista sin orden

<var>   Indica una instancia de una variableVariables de PHP Este ejemplo te mostrará información acerca de la instalación de PHP en tu servidor o computadora, muchas veces es útil para saber qué módulos están activos o cuales no, así como para identificar los límites de memoria que tienen ciertas configuraciones que talvez te estén ocasionando problemas. 

<html> <body> 

<?php phpinfo(); ?> 

</body> </html> 

Identificando el navegador Además de las variables locales y globales existen las _variables reservadas_ también conocidas como globales, a éstas no se les puede asignar un valor, pues lo que contienen es información del servidor web o información del cliente que lo visita. El siguiente código nos muestra el tipo de navegador que estamos utilizando para ingresar. 

Page 43: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

<html> <body> 

<?php echo $_SERVER["HTTP_USER_AGENT"]; ?> 

</body> </html> Utilizando IF y las variables reservadas Ahora veamos un ejemplo combinando dos de los temas aprendidos en este tutorial, lo que haremos es evaluar si el navegador utilizado es Internet Explorer para entonces mostrar un mensaje. <html> <body> 

<?php if (strstr($_SERVER["HTTP_USER_AGENT"], 'MSIE')) { echo "Usted utiliza Internet Explorer<br />"; } ?> 

</body> </html> 

Como notarán, utilizamos una función llamada strstr al hacer el IF, lo que esto realiza es buscar una cadena de texto dentro de otra, en este caso la frase MSIE dentro del resultado de la variable $_SERVER y mostrarnos todo el texto que le sigue, otro ejemplo similar: <?php $nombre = 'Juan Carlos López Morales'; $extraer = strstr($nombre, 'Carlos'); echo $extraer; // Nos devolverá Carlos López Morales ?> 

A la variable $extraer le estamos indicando que busque el texto “Carlos “ dentro de $nombre, para que entonces nos devuelva Carlos más el resto del contenido. Utilizando funciones predefinidas PHP tiene una cantidad de funciones listas para usarse tal como vimos con strstr , veamos algunos otros ejemplos. 

Page 45: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

echo date("Y/m/d"  . "<br />"; 

Page 46: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

echo date("Y.m.d"  . "<br />"; 

Page 47: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

ec  date("Y-m-d" ?> La función date() devuelve la fecha actual del servidor o computadora en donde estemos ejecutando el código y la puede mostrar en diferentes formatos, tal como el ejemplo anterior en donde Y = al año, m = al mes y d= día   valores  uméricos. Man  l de PHP:  unciones  ontenido [ocultar]   1 Funciones Básicas • 2 Fun  ones con Parámetros • 3 Funciones con  os o más Parámetros • 4 Funciones con R orno de información • 5 Funciones con Retorno 

múltiples valores PHP posee cientos de funciones prediseñadas tal como vimos algunas en mód los anteriores, pero nosotros también podemos crear funciones propias que ejecuten ciertas instrucciones cada vez que hagamo un llamado a ellas. Por ejemplo, podemos crear una función que haga un calculo matemático complejo cuando le enviemos dos valores, entonces en lugar de programar de nuevo ese cálculo en cada momento que lo necesitemos, solo lo hacemos una vez como una función, y luego ha emos un llamado cada vez que vayamos a necesitar de ese bl ue de programación. Para declarar la función dentro de nuestros programas  cemos lo siguiente: funct  n ombredeFuncion() { bl  u de programación; } Veamos algunos ejemplos, desde los más sencill   para ir avanzand   Func  nes Bá  

as <  ml> <body> <?php  nction sitioweb() {   h 'Foros del Web'; } echo 'Bienvenido a nue  ro sitio ll  ad 

; siti  eb();    </body> </html> En éste primer ejemplo iniciamos nuestro bloque de programación creando nu stra primera función titulada sitioweb que tiene una impresión de pantalla por medio de echo , la función por si misma no hace nada hasta que la llamamos, aún teniendo el echo el mensaje no se esplegará sino hasta que e ribimos sitioweb(); Fun  ones con Parámetros Para hacer las funciones mucho más útiles, podemos enviarles parámetros, es decir valores para que los utilice y realice algún  álculo u operación. 

Page 48: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

<html> <body> 

<?php function suma($valor1) { $valor2=10; echo "El resultado es " . ($valor1+$valor2); } 

echo "Sumar 15 + 10: "; suma(15); ?> 

</body> </html> En este caso lo que hacemos es ingresar dentro de los paréntesis de suma() el valor de 15, allí estamos llamando a la función por lo que el programa ejecutará el código indicado arriba sumando el valor enviado más el valor de la variable $valor2 para mostrarnos el resultado. Conviene poner los paréntesis agrupando la operación. Funciones con dos o más Parámetros Similar al ejemplo anterior pero ahora enviando más parámetros dentro del paréntesis, como vemos debemos separar cada uno con una coma (,). Conviene poner los paréntesis agrupando la operación. <html> <body> 

<?php function suma($valor1,$valor2) { echo "El resultado es " . ($valor1+$valor2) ; } echo "Sumar 15 + 10: "; suma(15,10); ?> </body> </html> Funciones con Retorno de información En los ejemplos anteriores cada función imprime el resultado de la operación automáticamente, pero también podemos decirle que nos regrese ese resultado para que nosotros lo utilicemos en el espacio y momento que lo necesitemos. <?php function suma($valor1,$valor2) { $total=$valor1+$valor2; return $total; } 

echo "La suma de 15 + 10 es igual a " . suma(15,10); ?> Otro ejemplo: <?php 

Page 49: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

function Cuadrado($numero) { return $numero * $numero; } 

echo Cuadrado(4); // igual a 16 ?> Funciones con Retorno de múltiples valores En el ejemplo anterior vemos que return nos devuelve el resultado de una operación o variable, pero en algunas ocasiones necesitamos más de un dato, para ello utilizamos un arreglo (array) y la función llamada list. function numeros() { return array (0, 1, 2); } 

list ($cero, $uno, $dos) = numeros(); En return array() tenemos tres valores los cuales luego podemos asignar cada uno a una variable distinta gracias a la función list, de esa forma $cero tendrá el primer valor, $uno tendrá 1 y $dos el último valor del arreglo. Manual de PHP: Utilizando Formularios para el envío de datos Contenido [ocultar] • 1 $_GET y $_POST • 2 Ejemplos de envío de información mediante GET • 3 Ejemplos de envío de información mediante POST 

Gran parte del trabajo que harán nuestros programas será procesar información que los usarios ingresen a través de formularios HTML, con esos datos podemos realizar operaciones en el momento o guardarlos a bases de datos por ejemplo. Vamos a ver cómo deben estar estructurados los formularios y luego explicaremos la conexión con nuestros programas enphp, la base de un formulario es la siguiente: <form action="programa.php" method="post" id=”formulario”> Nombre: <input type="text" name="nombre" /> Edad: <input type="text" name="edad" /> <input type="submit" /> </form> En este ejemplo, la etiqueta <form> sirve para armar el formulario en HTML, dentro de ésta etiqueta estamos utilizando action para indicar que toda la información sea enviada al archivo llamado programa.php y por último method es para especificar de qué forma será enviada esa información para lo cual hay dos formas, GET y POST. $_GET y $_POST Cuando utilizamos $_GET dentro del php y el formulario, la información que enviamos será visible por cualquier persona pues es mostrada en la barra de direcciones, por lo que no debemos utilizar éste método para enviar contraseñas o información sensible. Una limitante de GET es que solo puede enviar hasta 100 caracteres. Comparado a $_POST, la información enviada por esta forma es invisible pues no se muestra cuando se envía y prácticamente no hay un límite en cuanto a tamaño se refiere. Es recomendable utilizar el segundo método cuando vamos a enviar información que por ejemplo va a ser almacenada en una base de datos y ya no va a ser modificada, o cuando vamos a enviar

Page 50: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

un formulario de contacto por ejemplo, y utilizamos GET cuando la información puede cambiar en algún momento, por ejemplo, si estamos buscando algo en Google puede ser que los resultados no son los que necesitemos entonces regresamos a la pantalla anterior para modificar la información. Ejemplos de envío de información mediante GET Realicemos el primer ejemplo creando un archivo llamado formulario.php con el siguiente contenido utilizando el método GET: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Formulario</title> </head> <body> 

<form action="programa.php" method="get" id=”formulario” name=”formulario”> Nombre: <input type="text" name="nombre" id="nombre" /> Edad: <input type="text" name="edad" id="edad" /> <input type="submit" value="enviar" name="enviar" id="enviar" /> </form> 

</body> </html> Y creamos un archivo llamado programa.php con lo siguiente <html> <body> 

Bienvenido <?php echo $_GET['nombre'];?>. <br /> Tu edad es: <?php echo $_GET['edad'];?> años. 

</body> </html> Ahora abrimos en el navegador formulario.html, ingresamos la información que se nos pide y veremos cómo nuestro programa procesa los datos. A simple vista podemos entender bastante bien cómo funciona, como vemos al utilizar $_GET['nombre']; lo que hacemos es capturar el campo llamado nombre del formulario: <input type="text" name="nombre" id="nombre" /> Y lo mostramos utilizando echo tal como aprendimos a imprimir en pantalla las variables. • o Captura de pantalla* En el ejemplo anterior la barra de direcciones luciría de la siguiente forma: 

http://localhost/programa.php?nombre=Juan&age=25 Ejemplos de envío de información mediante POST Ahora veamos cómo funciona POST, en donde al enviar la información la barra de direcciones quedaría como http://localhost/programa.php Crear un archivo llamado formulario.html <html> 

Page 51: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

<body> 

<form action="archivo.php" method="post" id=”formulario”> Nombre: <input type="text" name="nombre" /> Edad: <input type="text" name="edad" /> <input type="submit" /> </form> 

</body> </html> 

Y otro llamado programa.php: <html> <body> 

Bienvenido <?php echo $_POST["nombre"]; ?>,<br /> Tu edad es: <?php echo $_POST["edad"]; ?> años. 

</body> </html> Como vemos cuando en el formulario utilizamos method=”get” en la programación también debemos utiliza $_GET, igual para post, sin embargo también existe $_REQUEST que puede obtener la información de los formularios sin importar qué metodo se utiliza, ejemplo: Bienvenido <?php echo $_REQUEST["nombre"]; ?>,<br /> Tu edad es: <?php echo $_REQUEST["edad"]; ?> años. 

<input type="text" name="nombre" id="nombre" /> Y lo mostramos utilizando echo tal como aprendimos a imprimir en pantalla las variables. En el ejemplo anterior la barra de direcciones luciría de la siguiente forma: 

http://localhost/programa.php?nombre=Juan&age=25 

Manual de PHP: Tipos de control para los formularios Contenido [ocultar] • 1 Inputs • 2 Radio • 3 Checkbox • 4 Textarea 

Un formulario puede tener diversos tipos de datos para la recolección de información, vamos a ver algunos de ellos junto a una breve explicación, te recomiendo irlos probando dentro de un documento .html para que veas cómo funcionan. 

Inputs Son campos regularmente para el ingreso de texto, son los que vemos en los formularios de contacto para ingresar nombre, correo electrónico, etc. Sintaxis: <form> 

Page 52: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

<label for="nombre_campo">Texto</label> <input id="nombre_campo" type="text" name="nombre" value="texto_default" /> </form> La primera línea label sirve para identificar el nombre del campo que le sigue, es además la etiqueta que aparece para que el usuario sepa qué dato se le está pidiendo que llene aunque no es necesario encerrarlo en una etiqueta label. 

Otra variante de este Input es el de tipo password que hace que el texto que se escribe en el sea reemplazado por símbolos como protección: <input id="contraseña" type="password" name="contraseña" value=""" /> Y también podemos ocultar éstos campos de texto colocándole el type=hidden lo cual nos sirve para enviar alguna información ya predefinida junto a todo lo que el usuario ingrese. <input type="hidden" name="contador" value="350″ /> 

El último tipo de input que veremos es el submit que es el botón que regularmente hacemos click para poder enviar un formulario con la información que llenamos. <form name="input" action="programa.php" method="get"> Nombre: <input type="text" name="nombre" /> <input type="submit" value="Enviar" /> </form> Radio Los controles de tipo Radio son los que vemos que tienen una forma redonda y se pueden utilizar para preguntar opciones de tipo falso/verdadero, masculino/femenino, etc y en donde solo puede estar seleccionada una de las opciones: <form> <label for="nombre_input">Masculino</label> <input type="radio" name="sexo" value="masculino" checked="checked"/> <label for="nombre_input">Femenino</label> <input type="radio" name="sexo" value="femenino" /> </form> Checked nos sirve para indicar que queremos que ese campo aparezca seleccionado desde un inicio. 

Checkbox Estos controles son usados cuando se necesita que se pueda seleccionar una o más opciones de las que se presentan, o también cuando solo se presenta una opción y necesitamos que el usuario la marque por ejemplo para poder continuar con algún proceso. <form> Mac OS <input type="checkbox" name="sistema" value="mac" checked="checked"/> <br /> Windows <input type="checkbox" name="sistema" value="windows" /> <br /> Apple <input type="checkbox" name="sistema" value="linux" /> </form> El campo value puede contener también números, 

Page 53: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

Textarea A diferencia del primer input que vimos, los textarea son campos grandes para ingreso de texto multilínea en donde podemos especificar la cantidad de éstas y de columnas que queramos. <form> <textarea id="comentario" name="comentario" rows="10" cols="30"> texto default si deseamos </textarea> </form> Manual de PHP: Bases de Datos Contenido [ocultar] • 1 Introducción a las bases de datos • 2 El lenguaje SQL • 3 Gestores de bases de datos 

Introducción a las bases de datos Como ya vimos en los tutoriales básicos, una de las ventajas de PHP es que, al ser un lenguaje interpretado por el servidor, permite generar páginas HTML dinámicas, es decir, que van cambiando su contenido en base a distintas situaciones. El ejemplo clásico es mostrar un mensaje de bienvenida a los usuarios registrados de nuestro sitio, y uno distinto a aquellos visitantes no registrados. Es decir, hemos personalizado el contenido mostrado antes de enviárselo al usuario como HTML. Habiendo recordado este punto muy importante, entenderemos fácilmente la función de las bases de datos. En términos simples, constituyen un sistema de almacenamiento organizado de datos, en los cuales se pueden ingresar nuevos datos, modificar los ya existentes, leerlos y procesarlos, o incluso eliminarlos. Cabe señalar que aquí nos vamos a referir al modelo de bases de datos relacional, puesto que existen muchos modelos distintos de bases de datos. En general, vamos a ver que una base de datos relacional está formada por múltiples tablas, y cada tabla de una serie de datos o registros. • Las tablas son los contenedores de información. En nuestra base de datos podremos tener múltiples tablas, cada una destinada a un fin específico. En una guardaremos los datos de los usuarios registrados en nuestro sitio, en otra pondremos los mensajes de visita, y en otra las noticias. Podemos crear tantas tablas como necesitemos para el sistema que queremos crear. • Cada tabla está formada por una serie de columnas, llamadas usualmente campos o atributos. Éstas van a contener un determinado tipo de datos, como números o texto, y van a estar representadas por un nombre único que las va a identificar. Por ejemplo, si queremos tener un sistema de comentarios en nuestro sitio, tendremos una tabla llamada comentarios, y en ella múltiples columnas, como nombre, fecha, ip, email y comentario. Una práctica estándar muy recomendada es tener siempre una columna índice que va a identificar cada registro en nuestra tabla. Por lo tanto, a nuestros campos añadiremos uno llamado id. • Una fila es un registro de datos. Podemos tener tantas filas en nuestra tabla como capacidad tenga nuestro servidor. Siguiendo el ejemplo anterior, cada nuevo comentario que deje un usuario será almacenado en nuestra tabla destinada a ello, junto con los otros datos como su nombre, fecha, etc. Este conjunto de datos que vamos a insertar en la tabla constituye un registro o una fila dentro de ella. Un ejemplo de tabla en una base de datos relacional: 

Page 54: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

El lenguaje SQL Una base de datos es un sistema que dispone de su propio lenguaje, muy diferente al lenguaje PHP. Hay muchos lenguajes en función de la base de datos, pero el que vamos a utilizar es el conocido lenguaje SQL, este está formado por una serie de instrucciones, las cuáles van a modificar, agregar o eliminar los datos almacenados en la base de datos. No es el objetivo de este tutorial profundizar en este lenguaje. Para poder interactuar con la base de datos PHP dispone de una serie de funciones, las cuáles permiten tres tipos de operaciones básicamente: • Abrir/cerrar conexiones con los servidores de bases de datos • Ejecutar consultas SQL • Trabajar sobre el resultado de dichas consultas Gestores de bases de datos Los Sistemas Gestores de Bases de Datos (SGBD), son los encargados de facilitarnos la creación y manipulación de las bases de datos. Existen un gran número de gestores de bases de datos, y PHP dispone de herramientas para integrar y relacionar sistemas con muchos de ellos. Nosotros utilitzaremos, evidentemente, los de bases de datos relacionales, y entre los más conocidos destacan: 

• MySQL • Manual de PHP & MySQL • PostgreSQL • Oracle • ODBC En todas ellas se usa el lenguaje SQL. La más usada y conocida es MySQL, pero PHP puede también interactuar con las demás. Cabe destacar que, pese a que conozcamos el lenguaje SQL y estos SGBD estén basados en él, puede que algunas instrucciones determinadas no funcionen en algunos de éstos. Esto es porque en realidad estos gestores pueden haber redefinido en mayor o menor medida el lenguaje para lograr el objetivo para el que fueron diseñados. Sin embargo, esto sólo suele ocurrir en las instrucciones más avanzadas, en cuyo caso si recibimos un error de sintaxis deberíamos recurrir al manual para comprobar cuál es la instrucción adecuada para nuestro propósito. 

Manual de PHP: MySQL De Foros del Web Saltar a navegación, buscar Contenido [ocultar] • 1 Videotutorial • 2 Conectar y desconectar al servidor • 3 Seleccionar la base de datos • 4 Realizar consultas • 5 Procedimientos más comunes o 5.1 SELECT: Obtener los datos  5.1.1 Leer los datos devueltos  5.1.2 Calcular el número de filas  5.1.3 Obtener un dato específico  5.1.4 Liberando la memoria o 5.2 INSERT: Insertar datos o 5.3 UPDATE: Modificar registros o 5.4 DELETE: Borrar registros 

Page 55: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

Como mencionamos al hablar de bases de datos, MySQL es el gestor de bases de datos más difundido y quizás el más usado. PHP dispone de un amplio grupo de funciones para interactuar con este motor, haciendo que el manejo de la información almacenada en la base de datos desde un script PHP sea muy fácil. Ya mencionamos que para poder enviarle instrucciones al servidor MySQL tenemos que hacerlo en su propio lenguaje, el lenguaje SQL. Conforme vayamos desarrollando cada sección iremos viendo la sintaxis básica de las sentencias SQL más usadas. 

Videotutorial A continuación puedes ver un video con un ejemplo de como conectarse a una base de datos de mySQL y extraer información, el video está basado en los ejemplos y la documentación que leerás en esta misma página. Conectar y desconectar al servidor Antes de ejecutar cualquier consulta SQL debemos primero abrir una conexión con el servidor MySQL. Para ello disponemos de la función mysql_connect(). Para abrir una conexión debemos contar con la dirección del servidor MySQL (proporcionada por el proveedor de hosting, o en su defecto localhost), un nombre de usuario y una contraseña, los cuáles pasaremos como parámetros a esta función. $servidor = 'localhost'; $usuario = 'root'; $clave = 'abcdef'; 

mysql_connect($servidor, $usuario, $clave); Luego de hacer esto tendremos una conexión abierta con nuestro servidor MySQL, y podemos ahora trabajar sobre ella. Ocasionalmente necesitaremos conectarnos a dos o más servidores simultáneamente (de hecho son casos muy excepcionales). Para poder lograrlo debemos trabajar también con recursos de conexión. Un recurso es, en términos simples, una variable que lleva consigo la llave de determinado proceso. La función mysql_connect() genera un recurso de conexión, llamado identificador de enlace, que lleva consigo la conexión abierta con el servidor MySQL. Podemos usar ese recurso para hacer referencia a esa conexión de forma específica. Para obtenerlo basta con asignar la función vista a una variable que se convertirá en el recurso para esa conexión: $conexion = mysql_connect($servidor, $usuario, $clave); Como casi nunca tendremos que abrir varias conexiones simultáneas, no tocaremos más el tema de los identificadores de enlace. Sólo tienes que saber que están ahí. También disponemos de mysql_close(), una función destinada a cortar la conexión abierta con el servidor MySQL. Antiguamente se sugería siempre cerrar la conexión con el servidor MySQL al terminar de ejecutar todas las consultas SQL, argumentando que se liberaba la memoria usada por ésta en el servidor; pero ahora se sugiere dejarla abierta, ya que al terminar la ejecución del script todas las conexiones abiertas son cerradas automáticamente; además, si por alguna razón se necesita volver a consultar a la base de datos tendremos que abrir nuevamente la conexión, y eso sí genera una carga totalmente innecesaria al servidor. Por lo tanto, el uso de mysql_close() debe quedar reservado exclusivamente para aquellos casos en los que se requiera procesar una gran cantidad de información tras ejecutar las consultas SQL. En general, nunca cerraremos la conexión con el servidor MySQL; bastará con indicar entonces que para hacerlo basta con llamar a esa función: mysql_close(); 

Page 56: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

Seleccionar la base de datos Una vez que tenems abierta la conexión con el servidor MySQL debemos seleccionar nuestra base de datos. Aclaremos que el servidor MySQL no es lo mismo que la base de datos. Un servidor contiene numerosas bases de datos, nosotros podemos crear nuevas bases de datos o borrar alguna del servidor. Por lo tanto, es imprescindible indicarle al script y al servidor sobre qué base de datos vamos a trabajar. Para realizarlo, usamos la función mysql_select_db(), a la cuál pasaremos como parámetro el nombre de nuestra base de datos. mysql_select_db('base_de_datos'); Una vez seleccionada la base de datos, podemos empezar a ejecutar consultas SQL. Realizar consultas Como ya hemos venido diciendo, las consultas SQL, o también conocidas por su nombre en inglés como queries, son instrucciones que le enviamos al servidor MySQL para que ejecute determinada tarea. Una consulta, en términos prácticos, no es más que una cadena de texto. Para ejecutar la consulta debemos usar la función mysql_query() pasándole como parámetro la cadena de texto que contiene la consulta SQL. Al llamarla así, estaremos haciendo una consulta a la base de datos. Al igual que mysql_connect(), esta función también crea un recurso, el cuál no será útil después paratrabajar en base a la consulta que hemos realizado. Veamos un ejemplo de todo lo visto hasta ahora: mysql_connect('localhost', 'admin', ''); mysql_select_db('mi_base_de_datos'); 

$query = mysql_query('SELECT * FROM tabla'); Al realizar la consulta, tenemos el recurso $query que podremos usar luego para leer los datos devueltos por la consulta o trabajar sobre ella. NOTA: es muy frecuente ver que muchos intentan usar el recurso devuelto por mysql_query() como si fuese el resultado en sí de la consulta. Debemos aclarar que por sí sólo este recurso no representa nada, no se puede imprimir ni se puede emplear directamente, sino a través de otras funciones que veremos en las siguientes secciones. Procedimientos más comunes En esta sección vamos a revisar las tareas más frecuentemente usadas al trabajar con bases de datos. Para hacerlo, pensemos que tenemos una base de datos llamada "principal" y una tabla en ella llamada "comentarios" que tiene la siguiente estructura: * id → almacena el identificador de cada registro, es un campo autoincrementable, esto quiere decir que para cada registro el valor de este campo se incrementa en 1. * nombre → el nombre de la persona que envía el comentario * email → la dirección de correo de la persona que envía el comentario * comentario → el comentario del usuario * estado → el estado actual del comentario (publicado, eliminado o spam) 

No profundizaremos en el código SQL usado para crear la bases de datos o esa tabla en ella, pues no es algo que vayamos a realizar rutinariamente en nuestros scripts. Además existen aplicaciones como PHPMyAdmin que van a facilitar estas tareas. Basta con indicar que las consultas SQL son estas: Crear la base de datos CREATE DATABASE 'principal'; Crear la tabla comentarios CREATE TABLE `comentarios` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `nombre` CHAR( 75 ) NOT NULL , 

Page 57: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

`email` CHAR( 75 ) NOT NULL , `comentario` LONGTEXT NOT NULL , `estado` CHAR( 20 ) NOT NULL ) Si realmente deseas profundizar en el tema del lenguaje SQL puedes leer el manual de SQL en Maestros del Web. Vamos a revisar los procedimientos más comunes al hablar de bases de datos, los cuáles son: • SELECT: Obtener los datos existentes • INSERT: Insertar nuevos datos • UPDATE: Actualizar los datos existentes • DELETE: Eliminar datos existentes SELECT: Obtener los datos La primera tarea que vamos a ver es la extracción de datos de una base de datos. La sentencia SQL que usaremos es SELECT. Nos permite seleccionar los datos de una tabla específica en nuestra base de datos. La sintaxis básica de una consulta tipo SELECT es: SELECT campo1, campo2, ... FROM tabla Veamos un ejemplo sencillo: // La consulta SQL $sql = "SELECT nombre, email FROM comentarios"; 

$query = mysql_query($sql); Con esta consulta le estamos pidiendo al servidor MySQL que nos envíe el nombre y email de todos los registros en la tabla comentarios. Si quisiéramos todos los datos, en vez de colocar uno a uno los nombres de los campos podemos usar un asterisco (*) para hacer referencia a todas las columnas de la tabla. Podemos hacer la consulta un poco más específica, para ello hacemos uso de las claúsulas disponibles para esta sentencia. Una claúsula actúa igual que un parámetro para los tags HTML. Veamos las más comunes: • WHERE: Actúa como un filtro en la consulta SQL, haciendo que ésta devuelva sólo los campos que cumplan con los criterios allí establecidos (WHERE campo1 = 'valor1' AND campo2 = 'valor2'). Lo más común es hacer comparaciones, donde comparamos el valor de un campo con un valor guía. • LIMIT: Define cuántos registros queremos que nos devuelva la consulta SQL y desde dónde debe empezar a extraer (LIMIT registro_inicial, número_de_registros). El primer registro en nuestro resultado va a ser el registro cero (0), por lo que si queremos extraer 3 registros a partir del segundo deberemos poner LIMIT 1, 3 • ORDER BY: Ordena los resultados en base a una columna (ORDER BY campo ASC/DESC). Por ejemplo, si queremos ordenar en orden alfabético (ascendente) en base al campo nombre, pondremos ORDER BY nombre ASC Veamos la nueva consulta, pero esta vez más específica: // La consulta SQL $sql = "SELECT * FROM comentarios WHERE estado = 'spam' ORDER BY id DESC LIMIT 0, 3"; 

$query = mysql_query($sql); Si despedazamos la consulta, veremos que le estamos pidiendo al servidor MySQL que nos devuelva todos los campos (SELECT *) de los registros de la tabla 'comentarios' (FROM comentarios) cuyo estado es 'spam' (WHERE estado = 'spam'), pero ordenándolos en orden descendente en base al valor del campo 'id' (ORDER BY id DESC) y que sólo nos dé 3 registros empezando por el primero (LIMIT 0, 3). 

Page 58: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

Hecha la consulta hemos obtenido un recurso, y lo hemos guardado en la variable $query. Ahora podemos trabajar sobre esa consulta haciendo referencia a esa variable. Leer los datos devueltos Como dijimos anteriormente, un recurso no puede ser usado directamente para imprimir los resultados, sino que debe asociarse a una función según lo que queremos realizar. Empezaremos explicando cómo leer los registros que coincidieron con nuestra consulta. Para hacer ello, PHP tiene la función mysql_fetch_assoc(), la cuál genera un arreglo que contiene como índices los nombres de los campos (array asociativo), cada uno con su valor correspondiente, para cada registro que devolvió nuestra consulta. En cada llamada a esta función se devuelve un fila o registro, por lo que, para leer todos los registros debemos llamar la función tantas veces como filas haya devuelto nuestra consulta. Es por ello que, para leer las filas de una consulta SQL, se usa generalmente un ciclo while, basándonos en el principio de que, al terminar de leer todas las filas y volver a llamar a la función mysql_fetch_assoc(), ésta devolverá false, lo cuál determiará el fin del ciclo. Existen otras funciones similares, como mysql_fetch_row(), que devuelve los datos con índices numéricos (array numérico); mysql_fetch_array(), que devuelve un array que es a la vez asociativo y numérico (array mixto); y mysql_fetch_object(), que devuelve un objeto en vez de un array. En el ejemplo anterior habíamos hecho la consulta SQL y ya teníamos el recurso $query para trabajar sobre esa consulta. Ahora veamos el código con el cuál recogemos las filas: while($fila = mysql_fetch_assoc($query)) { echo 'El comentario #' . $fila['id'] . ' escrito por ' . $fila['nombre'] . ' ( ' . $fila['email'] . ') es spam<br>'; } Si te fijas en el ejemplo, en cada ciclo creamos un array $fila que contiene los datos de la fila correspondiente a ese ciclo. Como estamos usando mysql_fetch_assoc(), obtenemos un array asociativo, esto quiere decir que los índices del array son los nombres de los campos de la tabla en la base de datos. Usando la tabla que especificamos al inicio, con esta consulta obtendremos lo siguiente: El comentario #9 escrito por Brenda ([email protected]) es spam El comentario #6 escrito por María ([email protected]) es spam El comentario #5 escrito por Miguel ([email protected]) es spam Es importante que notes que, en la condición del while no hacemos una comparación (== ó ===), sino una asignación (=). En la práctica, la asignación $variable = false devuelve en su conjunto false, y como ya mencionamos, al llegar al final de los resultados la función mysql_fetch_assoc() devuelve false. Por eso es que el ciclo funciona. Calcular el número de filas Muchas veces queremos saber cuántas filas ha devuelto nuestra consulta. Para hacerlo tenemos a nuestra disposición la función mysql_num_rows(), que nos dirá este valor: . $total = mysql_num_rows($query); 

if($total == 0) { echo 'La consulta no devolvió ningún resultado'; } else { echo 'La consulta devolvió ' . $total . '$filas'; // Podemos mostrar aqui los resultados (while...) } Obtener un dato específico Mencionemos también que podemos obtener el dato de un campo dentro de un registro o fila específico. Para eso usamos la función mysql_result(). La sintaxis básica es: 

Page 59: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

mysql_result(recurso, fila, campo); El recurso es el resultado devuelto por la llamada a mysql_query(), la fila es el número de fila que queremos extraer (Recordemos que la primera fila es cero!), y como parámetro opcional campo debemos indicar el nombre o número del campo deseado si en nuestra consulta solicitamos más de una columna. Veamos algunos ejemplos tomando como base el ejemplo anterior: echo mysql_result($query, 0, 'nombre'); // Imprime: Brenda echo mysql_result($query, 1, 'email'); // Imprime: [email protected] echo mysql_result($query, 2); // Imprime: 5 (No escribir el campo hace que se tome el valor del primer campo, en este caso id) echo mysql_result($query, 0, 2); // Imprime: [email protected] (El campo #2 es 'email' {tercer campo}) Liberando la memoria Podemos usar mysql_free_result() para liberar la memoria usada por la consulta SELECT actual. Sin embargo, no es necesario hacerlo a menos que estemos trabajando con un montón muy grande (demasiado grande) de datos. mysql_free_result($query) INSERT: Insertar datos Para insertar datos podemos usar la sentencia INSERT. Esta sentencia tiene dos sintaxis básicas, de las cuáles la primera es la más usada y conocida: INSERT INTO tabla (campo1, campo2, ...) VALUES ('valor1', 'valor2', ...) INSERT INTO tabla SET campo1 = 'valor1', campo2 = 'valor2', ... El siguiente ejemplo muestra cómo podríamos insertar nuevos datos a nuestra tabla de ejemplo: 

$sql = "INSERT INTO comentarios (nombre, email, comentario, estado) VALUES ('Álex', '[email protected]', 'Comentario de Álex', 'publicado')"; 

mysql_query($sql); A diferencia de la sentencia SELECT, mysql_query() no retornará un recurso cuando se ejecuta una sentencia INSERT. En su lugar retornará el valor booleano true si la consulta se ejecutó con éxito, y false en el caso contrario. Es posible agregar varias filas usando la misma consulta, sólo hay que separar los grupos VALUES con comas, de la siguiente forma: $sql = "INSERT INTO comentarios (nombre, email, comentario, estado) VALUES ('Johanny', '[email protected]', 'Comentario de Johanny', 'publicado'), ('Mayra', '[email protected]', 'Comentario de Mayra', 'publicado'), ('Xiomara', '[email protected]', 'Comentario de Xiomara', 'publicado') "; 

mysql_query($sql); Podemos usar, adicionalmente, la función mysql_affected_rows() para saber cuántas filas se insertaron tras la ejecución de la consulta: echo 'Se insertó ' . mysql_affected_rows() . ' nuevos registros'; Por último, podemos omitir el especificar los nombres de los campos de la tabla a la cuál queremos insertar los datos, pero en los grupos VALUES tendremos que implícitamente hacer referencia a ellos. Vale decir, el primer valor irá al primer campo, el segundo irá al segundo campo, y así sucesivamente: $sql = "INSERT INTO comentarios VALUES (NULL, 'Patty', '[email protected]', 'Comentario de Patty', 'publicado')"; 

Page 60: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

mysql_query($sql); Nota que el valor NULL corresponde al campo id, y le asignamos un valor nulo porque al ser un campo auto_increment su valor va aumentando automáticamente al crear nuevos registros. UPDATE: Modificar registros Para actualizar registros en la base de datos hacemos uso de la sentencia UPDATE. Su sintaxis básica es: UPDATE tabla SET campo1 = 'valor1', campo2 = 'valor2', ... WHERE campoA = 'valorA' AND campoB = 'valorB' AND ... En este caso definimos una claúsula WHERE para indicarle al servidor qué filas son las que deseamos modificar. Puede ser una única fila, o múltiples filas, siempre que cumplan con los criterios establecidos. $sql = "UPDATE comentarios SET comentario = 'Este comentario ha sido marcado como spam' WHERE estado = 'spam'"; mysql_query($sql); En este ejemplo vamos a modificar el valor del campo comentario de nuestra tabla para todos los registros cuyo campo estado tenga como valor spam, y les vamos a asignar el valor textual 'Este comentario ha sido marcado como spam'. Al iguul que en el caso de INSERT, la función mysql_query() no retorna un recurso, sino un valor booleano. Y también aquí podemos usar la función mysql_affected_rows() para obtener el número de filas modificadas por la consulta. En nuestro ejemplo: echo 'Se han modificado ' . mysql_affected_rows() . ' filas'; Y en este caso nos diría que se han modificado 3 (las 3 que tienen como estado spam). DELETE: Borrar registros Finalmente, la última sentencia que vamos a ver es la sentencia DELETE. Su sintaxis es: DELETE FROM tabla WHERE campo1 = 'valor1' AND campo2 = 'valor2' AND ... Y también aquí podemos usar la función mysql_affected_rows() para determinar el número de filas eliminadas de la tabla con la ejecución de la consulta. Ejemplo: $sql = "DELETE FROM comentarios WHERE estado = 'eliminado'"; mysql_query($sql); 

echo 'Se han eliminado ' . mysql_affected_rows() . ' registros'; Con este ejemplo, estamos eliminando de la tabla comentarios todas las filas cuyo campo estado tenga el valor de eliminado, que en total son 3 filas. 

Como has visto a lo largo de este manual, desde PHP podemos controlar todos los datos existentes en nuestra base de datos. Usando formularios y tomando los datos introducidos podemos crear muchas aplicaciones dinámicas, como blogs, sistemas de comentarios, o sistemas de noticias. Las 4 sentencias vistas son las sentencias básicas del lenguaje SQL, pero hay muchas más que hacen más sencillo todavía el trabajar con bases de datos. Te invito a que investigues y leas un poco sobre todas ellas. 

PHP: Instrucciones para agregar una pregunta al FAQ de PHP En este pequeño tutorial van los pasos para incluir registros de las FAQ's de forosdelweb.com en este WIKI. 1. Iniciar sesión en el wiki (Para editar en el wiki es necesario ingresar con nombre y usuario de forosdelweb.com) 2. Agregamos una nueva página al Wiki. Para ello, solo hace falta escribir la pregunta como parte del URL en nuestro navegador. Por ejemplo: 

Page 61: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

http://www.forosdelweb.com/wiki/PHP: Titulo de la nueva pregunta Esto nos llevará a la generación de un nuevo registro del Wiki. Nótese que hemos utilizado "PHP:" para organizar el conjunto de preguntas bajo el tema PHP. 3. Llegaremos a un registro no existente con la siguiente leyenda: En este momento no hay texto en esta página, puedes buscar por el título de esta página en otras páginas o editar esta página.. Allí debemos ir a la opción de editar en la parte superior. 4. El título ya quedará registrado y solo hace falta incluir la información de la pregunta y respuesta. En caso de que incluyamos código, favor de incluirlo con los tags de <php> < /php> lo que resaltará y coloreará el código. 5. Para incluir el crédito de forma vistosa, podemos firmar la entrada con nuestro nombre de usuario y la fecha: ---- -- [http://www.forosdelweb.com/miembros/usuario/ Usuario] 12 Feb 2009 6. También debemos asegurarnos de incluir las categorías de PHP, FAQs y la plantilla del pie de página: 

Page 63: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

[[Category HP]] 

Page 64: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

[[CategoryAQ]] 7. El último paso consiste en incluir la pregunta en el  índ ice del FAQ de PHP. Para ello podemos editar esta página e incluirla dentro de la categorí 

orrespond  ent e. Manu   de PHP: Cookies Las Cookies o Galletas son pequeños archivos que se guardan en la computadora del usuario o visitante de un sitio en donde se almacena o lee información del navegador para po r  den  ificarlo. En PHP se pueden crear cookies m  iante la fu  ión setcookie() Los valores almacenados en las cookies se convertirán automáticamente en variables que luego podremos leer y a las cuales podemos asignar distintos valores en  uestro programa. S taxis y Ejemplos • Para asignar un valor a una cookie utilizamos e  s uiente código . setcookie("nombre",  

or,expiración); Nota: Para asignar valores a una cookie, no se deben haber enviado ninguna cab era previamente. • Generando una Cookie que funcione en www.dominio.com / dominio.com   s ub.  minio.com <?php //observad la "/" que sirve para llamar directamente al  ombre de dominio //y no a una subcarpeta. Si no lo pusiéramos la c kie se llamaría: //midominio.  m.midominio.com. //el "0" sirve para indicar si es 1 solo se envia la cookie por HTTPS, si es  por HTTP y HTTPS setcookie("micookie", "valor", time()+10000, "/", ".m om 

o.com", 0); ?> Argume  os en una Cooki  • Name (Nombre • Value (Valor) • Expire (Tie  o de Expiraci ) • Path (Ruta)   Domain (Dominio) • Secure (https) Leyendo valores almacen  os en una cookie Para poder leer un valor que esté dentro de una cookie u  lizamos $_COOKIE $  OOKIE["no bre "]; Manua  de PHP: Sesiones Cuando un usuario visita una aplicación o sitio  Web programado en PHP regularmente navega en distintas partes y páginas del sitio las cuales pueden tener relación entre ellas, por ejemplo si tenemos una tienda en línea queremos saber cuando un usuario ingresa, naevga por los productos y al final se registra y agrega productos al c  rito de compras. El reto es identificar a ese usuario como único en toda la aplicación y verificar en cada página que visita qué privilegios tiene o qué configuraciones ha modificado para presentarle la información correcta, para esto utilizamos lo que se llaman Se  

nes (Sess ns). Co  enido 

Page 65: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

[ocultar] • 1 Cómo funcionan las sesiones • 2 Duración de las sesiones • 3 Funciones para el manejo de sesiones • 4 Ejemplos 

Cómo funcionan las sesiones Y sabemos que con PHP podemos enviar variables a través de las URLs tal como hemos visto en los formularios, pero tendríamos que estar enviando esta información constantemente a través de todas las URLs o páginas que visite el usuario, y por otro lado también podemos leer y almacenardatos en las cookies sin embargo el soporte de éstas no está activada en todos los navegadores o algunos usuarios las desactivan, por eso utilizamos las Sesiones. Lo que hacemos es asignar un identificador único a cada usuario que nos visita y guardar ciertos valores que vamos a utilizar durante toda su visita para acceder a ellos en cualquier momento que los necesitemos sin necesidad de estar declarándolos en cada página que ingrese. 

Duración de las sesiones Las sesiones se inician o abren cuando un usuario visita un sitio, permanece activa durante toda esa visita y se cierra al cerrar la ventana o pestaña del navegador con dicho sitio. 

Funciones para el manejo de sesiones • session_start — Inicializar los datos de una sesión • session_destroy — Destruye todos los datos guardados en una sesión • session_register(nombre) — Registrar una o más variables globales con la sesión actual • session_unregister(nombre) — Desregistrar una variable de la sesión actual • session_is_registered(nombre) — Comprueba si una variable está registrada en la sesión 

• session_cache_expire — Devuelve la caducidad actual del caché • session_cache_limiter — Lee y/o cambia el limitador del caché actual • session_commit — Alias of session_write_close • session_decode — Decodifica los datos de una sesión a partir de una cadena • session_encode — Codifica los datos de la sesión actual en una cadena • session_get_cookie_params — Obtiene los parámetros de la cookie de la sesión • session_id — Lee y/o cambia el session id actual • session_is_registered — Comprueba si una variable está registrada en la sesión • session_module_name — Lee y/o cambia el módulo de la sesión actual • session_name — Lee y/o cambia el nombre de la sesión actual • session_regenerate_id — Actualizar el id de sesión actual con una recién generada • session_save_path — Lee y/o cambia la ruta donde se guardan los datos de la sesión actual • session_set_cookie_params — Cambia los parámetros de la cookie de la sesión • session_set_save_handler — Establece unas funciones para el almacenamiento de los datos de la sesión a nivel de usuario • session_unset — Elimina todas las variables de la sesión • session_write_close — Escribe los datos de la sesión y la finaliza 

Ejemplos • Cómo Guardar y leer variables en una sesión • Código de ejemplo para autenticarse en un sitio utilizando Sesiones en PHP Manual de PHP: Subiendo archivos al servidor con PHP 

Page 66: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

PHP tiene un par de funciones muy simples para que un visitante, pueda mandarnos un archivo desde su computadora, y nosotros podamos guardarlo en el servidor, en el lugar y con el nombre que queramos. Para eso, crearemos 2 archivos, uno será un formulario HTML, donde el usuario tendrá el campo para poder subir el archivo, y otro archivo, PHP, que tomara ese archivo y lo colocara en nuestro servidor. Entonces, los archivos serán: Formulario_Subida.html <HTML> <HEAD> <TITLE> YO SUBO EL ARCHIVO </TITLE> </HEAD> <BODY> <FORM action="GuardarArchivo.php" method="POST" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="5120"> Subir este archivo: <br><br> <input name="userfile" type="file"><br><br><br> <input type="submit" value="Subir"> </FORM> </BODY> </HTML> En este archivo solo tenemos 3 cosas para destacar: La primera, es que si se va a utilizar un campo de subida de archivos, el Form debe tener el método enctype con el valor multipart/form-data. Esto es necesario par que funcione. La segunda es el <TAG> de tipo hidden con el nombre “MAX_FILE_SIZE” que le dice al navegador el tamaño máximo del archivo a subir. Este método de control no es muy seguro ya que se puede saltear, y además depende del navegador si es tomado en cuenta o no. La tercera es el <TAG> de tipo “file”, el cual me muestra el campo con el botón examinar, para poder seleccionar el archivo a subir. Este campo no tiene por defecto, una forma de mejorar su aspecto, o el nombre del botón. Pero se puede lograr usando CSS. Guardar_Archivo.php <? 

$nombre = $_FILES['userfile']['name']; //nombre con el que lo subió el usuario $tipo = $_FILES['userfile']['type']; //tipo de archivo (jpg,gif,rar,txt,etc) $tamano = $_FILES['userfile']['size']; //tamaño del archivo en Kb; 1024Kb = 1Mb $error = $_FILES['userfile']['error']; //si apareció algún error en la subida $nombre_temporal = $_FILES['userfile']['tmp_name']; //Nombre temporal que se le asigna al archivo cuando sube a tu servidor 

$nuevo_nombre = 'EL Archivo' 

Page 67: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

//Reviso que el archivo sea del tipo ZIP o RAR; y que pese menos de 5Mb 

Page 68: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

if (!((strpos($tipo, "rar"  || strpos($tipo, "zip" ) && ($tamano_archivo < 5120))) { 

Page 69: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

echo "  tipo de archivo o el tamaño no es correcto."; }else{ //Verifico que pueda mover el archivo y cambiarl  el nombre. El archivo se guardará donde esta la pagina if (move_uploa  d_file(FILES['userfile']['t  _name'  $nuevo_nombre)){ echo "El archivo subió!!."; }else{   h " ro  al subir el archiv  . I  téntelo nuevamente."; }    ?> Este es el archivo php que hace todo el trabajo. Aunque casi todo el có  go esta comentado, explica  mos cada línea del código. $_FIL S =  $HTTP_POST_FILES Es una var ble global, propia de PHP que obtiene todos los datos. Esta variable esta disponible desde la versión 4.1.   las versiones anteriores deben usar $HTTP_POST_FILES. Para obtener estos datos le pasamos el nom re del campo (en este caso, “userfile”), que es de tipo “  le”, que colocamos en el formul io de la pagina HTML. Datos que contiene la variable: $_FI  S ['userfile'][ 'name'] Devuelve el nombre del archivo  _FILES['userfile']['type'] Devuelve el tipo de archivo $_FILES[  serfile']['size'] Devuelve el tamaño del archivo en Kb $_FILES['userfile']['tmp_name   Devuelve el nombre con el que se guardo temporalmente $_FILES['userfile']['error'] Devuelve distinto de 0 si tuv o algún error (ver la lista de errores en h ttp : www.php.net/manual/en/features.file-upload.errors.php) $nuevo_nombre Es una variable a la c  l le asigno el valor que quiero como nombre de archivo strpos(EnCadena, BuscarPalabra) Podríamos decir que busca una cadena de string, en otra cadena de string. No es así como funciona exactamente pero p a este ejemplo no es necesario entrar en m   detalles. move_uploa  ed_  ile(NombreArchivo, Destino) Esta es una función de PHP que, pasándol el nomb  de un archivo, lo mueve al destino que se le indique. En nuestro caso, le pasamos el nombre temporal  l archivo que subimos, y le asignamos un nuevo nombre. Al no ponerle ningún destino mas que el nombre, el destino del  ism o erá en la misma carpeta donde esta puesto nuestro PHP. Verificar siempre, que la carpeta destino donde queremos mandar el archivo, tenga los permiso de escritura, de lo contrario,  os  evolverá un error. También puedes crear una pagina PHP con un poco mas de c troles, y por supuesto  siempre puedes ir me jor  dola. Aca tienes   e  mplo: Guardar_Archivo_Avz.php (chequear c igo…) <? //verifico que el archivo llego al servidor   

(is_uploaded_file($_FILES['userfile']['tmp_name'])) { $nombre = $_F  ES['userfile']['name']; con el que lo subió el usuario 

Page 70: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

$tipo = $_FILES['userfile']['type']; //tipo de archivo (jpg,g if,rar,txt ,etc) $tamanio = $_FILES['userfile']['size']; //tamaño del archivo en Kb; 1024Kb = 1Mb $error = $_FILES['userfile']['error']; //si aparecio algun error en la subida$nombre_temporal = $_FILES['userfile']['tmp_name']; //Nombre temporal que se le asigna al archivo cuando sube a tu servidor 

$carpeta = 'archivos/'; $nuevo_nombre = 'Archivo_Subido'.date('Y-m-d H:i:s'); //le concatene la fecha del momento para que no se repita el nombre 

//Verifico que el nombre no este vacio if(!empty($nombre)) { 

//Verifico que no tenga ningun error if($error==0){ 

Page 71: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

//Reviso que el achivo sea del tipo ZIP o RAR; 

Page 72: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

if (strpos($tipo, "rar"  || strpos($tipo, "zip" ) { 

Page 73: Hola Como Yo Me Dedico a La Creacion de Webs Hoy Les Vengo a Dejar

//Reviso que el archivo pese menos de 5 Mb  if ($tamanio_archivo < 5120)  

//Verifico que pueda mover el archivo y cambiarle el nombre  //El archivo se guradara donde esta esta pagin  if (move_uploaded_file(FILES['userfile']['tmp_name'], $nuevo_nombre))  

echo "El archivo subio."   

else  echo "Ocurrió algún error al subir el fichero. No pudo guardarse."    

else  echo "Error con el archivo. <br> El archivo pesa mas de 5Mb"    

else  echo "Error con el archivo. <br> El archivo no es ni del tipo zip ni rar"   

else  echo "Error con el archivo. <br> El archivotiene un error en la subida"    

else  echo "Error con el archivo. <br> El archivo no tiene nombre"    

else  echo "El archivo no subio correctamente"   

?  <php