Foros del Web » Programando para Internet » PHP »

Validar formulario del lado del servidor

Estas en el tema de Validar formulario del lado del servidor en el foro de PHP en Foros del Web. Hola amigos, como estan? La verdad soy de madera en esto del PHP, pero antes de preguntar investigué mucho pero de nada sirve ya que ...
  #1 (permalink)  
Antiguo 25/05/2009, 09:10
Avatar de DragonX
Colaborador
 
Fecha de Ingreso: mayo-2002
Ubicación: Funkyland
Mensajes: 8.433
Antigüedad: 22 años
Puntos: 177
Validar formulario del lado del servidor

Hola amigos, como estan?

La verdad soy de madera en esto del PHP, pero antes de preguntar investigué mucho pero de nada sirve ya que realmente no entiendo mucho este gran lenguaje...

Les cuento un poco cuál es la consulta, actualmente en mi sitio urbanchip en la sección de contacto tengo un formulario con una validación en JS y se que no es lo mejor, por eso quiero hacer la validación de forma correcta, del lado del servidor.....pero sinceramente se me hace imposible porque no lo entiendo......

A ver si me pueden dar una manito con esto ya que estoy medio complicado, desde ya mil gracias!!!!!!!

Les dejo el contacto.php y el mail.php a ver si me pueden ayudar...

contacto.php

Código php:
Ver original
  1. <form action="mail.php" method="post" id="f1" name="f1">
  2.             <fieldset>
  3.               <h3>Datos personales</h3>
  4.               <input type="hidden" name="url" value="urbanchip.com/" />
  5.               <p><label for="nombre">Nombre</label><input name="nombre" id="nombre" value="Nombre (obligatorio)" size="22" tabindex="1" type="text" onblur="if(this.value == '') { this.value='Nombre (obligatorio)'}" onfocus="if (this.value == 'Nombre (obligatorio)') {this.value=''}" /></p>
  6.               <p><label for="mail">Mail</label><input name="mail" id="mail" value="Mail (obligatorio)" size="22" tabindex="2" type="text" onblur="if(this.value == '') { this.value='Mail (obligatorio)'}" onfocus="if (this.value == 'Mail (obligatorio)') {this.value=''}" /></p>
  7.               <p><label for="pais">Pa&iacute;s</label><input name="pais" id="pais" value="Pais" size="22" tabindex="2" type="text" onblur="if(this.value == '') { this.value='Pais'}" onfocus="if (this.value == 'Pais') {this.value=''}" /></p>
  8.               <h3>¿Qu&eacute; servicio desea contratar?</h3>
  9.               <div id="servicioscontrata">
  10.               <p class="colform">
  11.                 <input type="checkbox" name="desarrollo_web" id="desarrollo_web" />Desarrollo Web<br />
  12.                 <input type="checkbox" name="seo" id="seo" />Posicionamiento SEO<br />
  13.                 <input type="checkbox" name="redaccion" id="redaccion" />Redacci&oacute;n de contenidos<br />
  14.               </p>
  15.               <p class="colform">
  16.                 <input type="checkbox" name="psd_html" id="psd_html" />de PSD a HTML<br />
  17.                 <input type="checkbox" name="consultoria_web" id="consultoria_web" />Consultor&iacute;a Web<br />
  18.                 <input type="checkbox" name="consultoria" id="consultoria" />Consultor&iacute;a Accesibilidad<br />
  19.               </p>
  20.               </div>
  21.               <h3>Consulta</h3>
  22.               <p><label for="asunto">Subject</label><input name="asunto" id="asunto" value="Asunto (obligatorio)" size="22" tabindex="3" type="text" onblur="if(this.value == '') { this.value='Asunto (obligatorio)'}" onfocus="if (this.value == 'Asunto (obligatorio)') {this.value=''}" /></p>
  23.               <p><label for="mensaje">Message</label><textarea name="mensaje" id="mensaje" cols="61" rows="10" tabindex="3"></textarea></p>
  24.               <h3>Unos datos extras</h3>
  25.               <p>Cuentenos, sin obligaciones, como nos conoci&oacute;</p>
  26.                       <select name="nosconocio" id="nosconocio">
  27.                 <option selected="selected">¿C&oacute;mo nos conoci&oacute;?</option>
  28.                 <option>Recomendaci&oacute;n</option>
  29.                 <option>Google/Yahoo/MSN</option>
  30.                 <option>Aviso publicitario</option>
  31.                 <option>Por un amigo</option>
  32.                       </select>
  33.               <p><input value="Enviar consulta" id="sender" type="submit" /></p>
  34.             </fieldset>
  35.           </form>

y por otro lado les dejo la función mail php que utilizo:

Código php:
Ver original
  1. <?php
  2.  
  3. $host     = "localhost";
  4. $user     = "[email protected]";
  5. $pass     = "xxxx";
  6. $from     = "[email protected]";
  7. $fromName = "Urbanchip";
  8. $to       = "[email protected]";
  9. $toName   = "Urbanchip";
  10.  
  11. $asunto   = "Contacto WEB";
  12. $date     = date ("j/m/y");
  13. $time     = date ("G a");
  14. $URLError = "error.html";
  15. $URLOk    = "ok.html";
  16.  
  17. require("class.phpmailer.php");
  18.  
  19. $phpmailer = new PHPMailer();
  20.  
  21. $phpmailer->IsSMTP();                                   // send via SMTP
  22. $phpmailer->Host     = $host; // SMTP servers
  23. $phpmailer->SMTPAuth = true;     // turn on SMTP authentication
  24. $phpmailer->Username = $user;  // SMTP username
  25. $phpmailer->Password = $pass; // SMTP password
  26.  
  27. $phpmailer->From     = $from;
  28. $phpmailer->FromName = $fromName;
  29.  
  30. //Direccion del reseptor
  31. $phpmailer->AddAddress($to, $toName);    // optional name
  32.  
  33.  
  34. $phpmailer->WordWrap = 50;                              // set word wrap
  35.  
  36. $phpmailer->IsHTML(true);                               // send as HTML
  37.  
  38. //INI - Preparo el body
  39. $msg = "Correo enviado desde Web Site el día $date a las $time.<br><br>";
  40.  
  41. if ($_SERVER['REQUEST_METHOD'] == "POST") {
  42.   foreach ($_POST as $key => $value) {
  43.     $msg .= ucfirst ($key) ." : ". $value . "<br>";
  44.   }
  45.  
  46. }else {
  47.   foreach ($_GET as $key => $value) {
  48.     $msg .= ucfirst ($key) ." : ". $value . "<br>";
  49.   }
  50. }
  51. //END - Preparo el body
  52.  
  53. $phpmailer->Subject  =  $asunto;
  54. $phpmailer->Body     =  $msg;
  55.  
  56. if(!$phpmailer->Send()){
  57.    header ("Location:$URLError");
  58. }
  59.  
  60. header ("Location:$URLOk");
  61.  
  62.  
  63. ?>

por favor cualquiera que me pueda ayudar y necesite ver algo mas haganmelo saber estoy medio loco con el tema....

un abrazo y gracias!!!!
__________________
Desarrollos dosLotos
Calendario Maya, Meditación, Osho
  #2 (permalink)  
Antiguo 25/05/2009, 09:57
Avatar de temaqueja  
Fecha de Ingreso: agosto-2002
Ubicación: /dev/null/
Mensajes: 399
Antigüedad: 21 años, 8 meses
Puntos: 4
Respuesta: Validar formulario del lado del servidor

Podrias comenzar cambiando:

<form action="mail.php" method="post" id="f1" name="f1">
...
<input value="Enviar consulta" id="sender" type="submit" />

por:
<form action="<?=$_SERVER['PHP_SELF'];?>" method="post" id="f1" name="f1">
...
<input value="Enviar consulta" name="sender" id="sender" type="submit" />

para que el script se envíe el formulario a si mismo y en caso e problemas puedas regresarle al usuario lo que escribió en el formulario.

En la parte superior fila 1 de contacto.php le agregarias algo asi:
<?php
if(isset($_POST['sender'])) {
$msg_error = '';
// validaciones
// habitualmente muchos if(esto no esta bien) {$msg_error.='<br/>mensaje de error';}
...
if($msg_error=='') {
// continuar con el script del email
include("mail.php");
}
}
?>


y a tus inputs agregarles el valor...
<input name="nombre" id="nombre" value="Nombre (obligatorio)" size="22" tabindex="1" type="text" onblur="if(this.value == '') { this.value='Nombre (obligatorio)'}" onfocus="if (this.value == 'Nombre (obligatorio)') {this.value=''}" />

debe ser
<input name="nombre" id="nombre" value="<? if(isset($_POST['nombre'])) echo $_POST['nombre']; } else { echo 'Nombre (obligatorio)';} ?>" size="22" tabindex="1" type="text" onblur="if(this.value == '') { this.value='Nombre (obligatorio)'}" onfocus="if (this.value == 'Nombre (obligatorio)') {this.value=''}" />

Eso te da la base para hacer el resto.
__________________
_________________________
La computadora nació para resolver problemas que antes no existían
  #3 (permalink)  
Antiguo 25/05/2009, 09:58
Avatar de temaqueja  
Fecha de Ingreso: agosto-2002
Ubicación: /dev/null/
Mensajes: 399
Antigüedad: 21 años, 8 meses
Puntos: 4
Respuesta: Validar formulario del lado del servidor

O si me olvidaba, como queda un mensaje de error en $msg_error te queda colocar en algun lugar visible el mensaje para que usuario vea lo que esta mal.
__________________
_________________________
La computadora nació para resolver problemas que antes no existían
  #4 (permalink)  
Antiguo 25/05/2009, 11:21
Avatar de DragonX
Colaborador
 
Fecha de Ingreso: mayo-2002
Ubicación: Funkyland
Mensajes: 8.433
Antigüedad: 22 años
Puntos: 177
Respuesta: Validar formulario del lado del servidor

temaqueja mil gracias por la onda!

he probado lo que me dijiste y quedó así:

Código php:
Ver original
  1. <?php
  2. if(isset($_POST['sender'])) {
  3. $msg_error = '';
  4. // validaciones
  5. // habitualmente muchos if(esto no esta bien) {$msg_error.='<br/>mensaje de error';}
  6. if($msg_error=='') {
  7. // continuar con el script del email
  8. include("mail.php");
  9. }
  10. }
  11. ?>
  12. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  13. <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
  14.   <head>
  15.     <title>Urbanchip contacto</title>
  16.     <meta name="Description" content="Somos una empresa dedicada al diseño web desde el año 2000, creciendo día a día con las nuevas tecnologias." />
  17.     <meta name="Keywords" content="maquetación css, posicionamiento, redacción, diseño web" />
  18.     <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  19.     <!--Favicon-->
  20.     <link rel="shortcut icon" href="favicon.ico" />
  21.     <!--Estilos-->
  22.     <link href="css/estilosurb.css" rel="stylesheet" type="text/css" title="Estilos Urbanchip" />
  23.     <!--Scripts-->
  24.     <script type="text/javascript" src="js/moo.js"></script>
  25.     <script type="text/javascript" src="js/scripts.js"></script>
  26.     <script type="text/javascript" src="js/slider.js"></script>
  27.     <script type="text/javascript" src="js/menu.js"></script>
  28.     <!--[if IE]>
  29.     <link href="css/ie.css" rel="stylesheet" type="text/css" />
  30.     <![endif]-->
  31.   </head>
  32.   <body class="interior">
  33.     <div id="imgtopinterna">&nbsp;</div>
  34.     <?php include('header.php'); ?>
  35.     <div id="contenedor">
  36.       <div id="imgcabezal" class="contacto">&nbsp;</div>
  37.       <div id="global_nav">
  38.               <ul>
  39.             <li><a href="diseno-maquetacion.php" title="Dise&ntilde;o Web y Maquetaci&oacute;n CSS">Dise&ntilde;o y maquetacion</a></li>
  40.             <li><a href="posicionamiento-seo.php" title="SEO y Posicionamiento en Buscadores">Posicionamiento SEO</a></li>            
  41.             <li><a href="redaccion-de-contenidos.php" title="Redacci&oacute;n de Contenidos">Redaccion de contenidos</a></li>
  42.             <li><a href="urbanchip.php" title="Acerca de Urbanchip">Urbanchip</a></li>
  43.             <li class="current"><a href="contactenos.php" title="Contactenos">contacto</a></li>          
  44.               </ul>
  45.             </div>
  46.       <h2 class="seccion">Pongase en contacto con nosotros</h2>
  47.       <div id="txtcont">
  48.       <p>Por favor complete el formulario o bien puede hacerlo por telefono, skype, msn o mail</p>
  49.         <div id="txtcolizqcontacto">
  50.         <!--Form-->
  51.           <form action="<?=$_SERVER['PHP_SELF'];?>" method="post" id="f1" name="f1">
  52.             <fieldset>
  53.               <h3>Datos personales</h3>
  54.               <input type="hidden" name="url" value="urbanchip.com/" />
  55.               <p><input name="nombre" id="nombre" value="<? if(isset($_POST['nombre'])) echo $_POST['nombre']; } else { echo 'Nombre (obligatorio)';} ?>" size="22" tabindex="1" type="text" onblur="if(this.value == '') { this.value='Nombre (obligatorio)'}" onfocus="if (this.value == 'Nombre (obligatorio)') {this.value=''}" /></p>
  56.               <p><label for="mail">Mail</label><input name="mail" id="mail" value="Mail (obligatorio)" size="22" tabindex="2" type="text" onblur="if(this.value == '') { this.value='Mail (obligatorio)'}" onfocus="if (this.value == 'Mail (obligatorio)') {this.value=''}" /></p>
  57.               <p><label for="pais">Pa&iacute;s</label><input name="pais" id="pais" value="Pais" size="22" tabindex="2" type="text" onblur="if(this.value == '') { this.value='Pais'}" onfocus="if (this.value == 'Pais') {this.value=''}" /></p>
  58.               <h3>¿Qu&eacute; servicio desea contratar?</h3>
  59.               <div id="servicioscontrata">
  60.               <p class="colform">
  61.                 <input type="checkbox" name="desarrollo_web" id="desarrollo_web" />Desarrollo Web<br />
  62.                 <input type="checkbox" name="seo" id="seo" />Posicionamiento SEO<br />
  63.                 <input type="checkbox" name="redaccion" id="redaccion" />Redacci&oacute;n de contenidos<br />
  64.               </p>
  65.               <p class="colform">
  66.                 <input type="checkbox" name="psd_html" id="psd_html" />de PSD a HTML<br />
  67.                 <input type="checkbox" name="consultoria_web" id="consultoria_web" />Consultor&iacute;a Web<br />
  68.                 <input type="checkbox" name="consultoria" id="consultoria" />Consultor&iacute;a Accesibilidad<br />
  69.               </p>
  70.               </div>
  71.               <h3>Consulta</h3>
  72.               <p><label for="asunto">Subject</label><input name="asunto" id="asunto" value="Asunto (obligatorio)" size="22" tabindex="3" type="text" onblur="if(this.value == '') { this.value='Asunto (obligatorio)'}" onfocus="if (this.value == 'Asunto (obligatorio)') {this.value=''}" /></p>
  73.               <p><label for="mensaje">Message</label><textarea name="mensaje" id="mensaje" cols="61" rows="10" tabindex="3"></textarea></p>
  74.               <h3>Unos datos extras</h3>
  75.               <p>Cuentenos, sin obligaciones, como nos conoci&oacute;</p>
  76.                       <select name="nosconocio" id="nosconocio">
  77.                 <option selected="selected">¿C&oacute;mo nos conoci&oacute;?</option>
  78.                 <option>Recomendaci&oacute;n</option>
  79.                 <option>Google/Yahoo/MSN</option>
  80.                 <option>Aviso publicitario</option>
  81.                 <option>Por un amigo</option>
  82.                       </select>
  83.               <p><input value="Enviar consulta" name="sender" id="sender" type="submit" /></p>
  84.             </fieldset>
  85.           </form>
  86.         <!--End Form-->
  87.         </div>
  88.         <div id="txtcoldercontacto">
  89.           <h3 class="tituizq">Otros medios de contacto</h3>
  90.           <p>Puede contactarnos vía mail escribiendo a <span>info[arroba]urbanchip.com</span></p>
  91.           <p>O bien podés llamarnos por teléfono</p>
  92.           <p>Cord&oacute;ba Capital<span>(0351)-488.5937 | (0351)-15.609.7408</span></p>
  93.           <p>Buenos Aires, Rep. <strong>Dora Tisera</strong> <span>(011)-15.5958.9997</span></p>
  94.           <p><strong><u>Otros medios</u></strong></p>
  95.           <p>MSN <span>urbanchip[arroba]hotmail.com</span></p>
  96.           <p>Skype <span>urbanchip</span></p>
  97.         </div>      
  98.       </div>
  99.     </div>
  100.     <?php include('footer.php'); ?>
  101.   </body>
  102. </html>

cuando lo prueba me responde esto:

Cita:
Parse error: syntax error, unexpected '}' in I:\xampp\htdocs\urbanchip\contactenos.php on line 55


como verás, no doy pie con bola!
mil gracias de nuevo
__________________
Desarrollos dosLotos
Calendario Maya, Meditación, Osho
  #5 (permalink)  
Antiguo 25/05/2009, 11:26
Avatar de DragonX
Colaborador
 
Fecha de Ingreso: mayo-2002
Ubicación: Funkyland
Mensajes: 8.433
Antigüedad: 22 años
Puntos: 177
Respuesta: Validar formulario del lado del servidor

Ahora funcionó, por lo menos me cargó la página, estaba mal esto:

Código php:
Ver original
  1. <p><input name="nombre" id="nombre" value="<? if(isset($_POST['nombre'])) echo $_POST['nombre']; } else { echo 'Nombre (obligatorio)';} ?>" size="22" tabindex="1" type="text" onblur="if(this.value == '') { this.value='Nombre (obligatorio)'}" onfocus="if (this.value == 'Nombre (obligatorio)') {this.value=''}" /></p>

los cuál lo modifique por esto y anduvo:

Código php:
Ver original
  1. <p><input name="nombre" id="nombre" value="<? if(isset($_POST['nombre'])) {echo $_POST['nombre']; } else { echo 'Nombre (obligatorio)';} ?>" size="22" tabindex="1" type="text" onblur="if(this.value == '') { this.value='Nombre (obligatorio)'}" onfocus="if (this.value == 'Nombre (obligatorio)') {this.value=''}" /></p>

Faltaba abrir la llave antes del echo voy a probar si valida, te mantengo al tanto!
Gracias de nuevo!
__________________
Desarrollos dosLotos
Calendario Maya, Meditación, Osho
  #6 (permalink)  
Antiguo 25/05/2009, 11:36
Avatar de DragonX
Colaborador
 
Fecha de Ingreso: mayo-2002
Ubicación: Funkyland
Mensajes: 8.433
Antigüedad: 22 años
Puntos: 177
Respuesta: Validar formulario del lado del servidor

otra cosa que no entiendo muy bien, y te pido disculpas es esta parte del script:

Código PHP:
Ver original
  1. <?php
  2. if(isset($_POST['sender'])) {
  3. $msg_error = '';
  4. // validaciones
  5. // habitualmente muchos if(esto no esta bien) {$msg_error.='<br/>mensaje de error';}
  6. if($msg_error=='') {
  7. // continuar con el script del email
  8. include("mail.php");
  9. }
  10. }
  11. ?>
__________________
Desarrollos dosLotos
Calendario Maya, Meditación, Osho
  #7 (permalink)  
Antiguo 25/05/2009, 11:42
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Validar formulario del lado del servidor

Lo que quiere decir ese codigo es que si esta set $_POST['sender'] vas a hacer esto la variable $msg_error = ''; vas a modificarla a que salga vacia (parece que anteriormente esta variable había sido declarada en otro lado). Pero en realidad no necesitas hacer esto porque es suficiente con el primer if. Este cosido esta de más mi sugerencia que lo hagas asi

Código PHP:
<?php
if(isset($_POST['sender'])) {
// continuar con el script del email
include("mail.php");
}
?>
  #8 (permalink)  
Antiguo 25/05/2009, 11:48
Avatar de DragonX
Colaborador
 
Fecha de Ingreso: mayo-2002
Ubicación: Funkyland
Mensajes: 8.433
Antigüedad: 22 años
Puntos: 177
Respuesta: Validar formulario del lado del servidor

lo hice como me recomendas y me tira este error al darle send manda el form vacio igualmente, no sale el error.....la verdad, se que es dificil porque no entiendo nada de php......
__________________
Desarrollos dosLotos
Calendario Maya, Meditación, Osho
  #9 (permalink)  
Antiguo 25/05/2009, 11:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Validar formulario del lado del servidor

Que error sale y lanza las lineas donde dice que esta el error por lo menos varias lineas antes de donde dice el error y varias lineas despues
  #10 (permalink)  
Antiguo 25/05/2009, 11:55
Avatar de DragonX
Colaborador
 
Fecha de Ingreso: mayo-2002
Ubicación: Funkyland
Mensajes: 8.433
Antigüedad: 22 años
Puntos: 177
Respuesta: Validar formulario del lado del servidor

abimaelrc me exprese mal, te pido disculpas.
Al darle SEND envia correctamente el mail y carga la pagina ok.html, pero no me valida los campos, lo envia con los campos vacios. ¿me explico?

Desde ya mil gracias!
__________________
Desarrollos dosLotos
Calendario Maya, Meditación, Osho
  #11 (permalink)  
Antiguo 25/05/2009, 12:04
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Validar formulario del lado del servidor

Ok, entendi, podrias enviar los dos codigos de nuevo completos para poder leerlos bien, ya que hiciste cambios a los que estaban escritos por primera vez
  #12 (permalink)  
Antiguo 25/05/2009, 12:10
Avatar de DragonX
Colaborador
 
Fecha de Ingreso: mayo-2002
Ubicación: Funkyland
Mensajes: 8.433
Antigüedad: 22 años
Puntos: 177
Respuesta: Validar formulario del lado del servidor

ok, aca te dejo:

Pagina de contacto.php
Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
  3.   <head>
  4.     <title>Urbanchip contacto</title>
  5.     <meta name="Description" content="Somos una empresa dedicada al diseño web desde el año 2000, creciendo día a día con las nuevas tecnologias." />
  6.     <meta name="Keywords" content="maquetación css, posicionamiento, redacción, diseño web" />
  7.     <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  8.     <!--Favicon-->
  9.     <link rel="shortcut icon" href="favicon.ico" />
  10.     <!--Estilos-->
  11.     <link href="css/estilosurb.css" rel="stylesheet" type="text/css" title="Estilos Urbanchip" />
  12.     <!--Scripts-->
  13.     <script type="text/javascript" src="js/moo.js"></script>
  14.     <script type="text/javascript" src="js/scripts.js"></script>
  15.     <script type="text/javascript" src="js/slider.js"></script>
  16.     <script type="text/javascript" src="js/menu.js"></script>
  17.     <!--[if IE]>
  18.     <link href="css/ie.css" rel="stylesheet" type="text/css" />
  19.     <![endif]-->
  20.   </head>
  21.   <body class="interior">
  22.     <div id="imgtopinterna">&nbsp;</div>
  23.     <?php include('header.php'); ?>
  24.     <div id="contenedor">
  25.       <div id="imgcabezal" class="contacto">&nbsp;</div>
  26.       <div id="global_nav">
  27.               <ul>
  28.             <li><a href="diseno-maquetacion.php" title="Dise&ntilde;o Web y Maquetaci&oacute;n CSS">Dise&ntilde;o y maquetacion</a></li>
  29.             <li><a href="posicionamiento-seo.php" title="SEO y Posicionamiento en Buscadores">Posicionamiento SEO</a></li>            
  30.             <li><a href="redaccion-de-contenidos.php" title="Redacci&oacute;n de Contenidos">Redaccion de contenidos</a></li>
  31.             <li><a href="urbanchip.php" title="Acerca de Urbanchip">Urbanchip</a></li>
  32.             <li class="current"><a href="contactenos.php" title="Contactenos">contacto</a></li>          
  33.               </ul>
  34.             </div>
  35.       <h2 class="seccion">Pongase en contacto con nosotros</h2>
  36.       <div id="txtcont">
  37.       <p>Por favor complete el formulario o bien puede hacerlo por telefono, skype, msn o mail</p>
  38.         <div id="txtcolizqcontacto">
  39.         <!--Form-->
  40.           <form action="<?=$_SERVER['PHP_SELF'];?>" method="post" id="f1" name="f1">
  41.             <fieldset>
  42.               <h3>Datos personales</h3>
  43.               <input type="hidden" name="url" value="urbanchip.com/" />
  44.               <p><input name="nombre" id="nombre" value="<? if(isset($_POST['nombre'])) {echo $_POST['nombre']; } else { echo 'Nombre (obligatorio)';} ?>" size="22" tabindex="1" type="text" onblur="if(this.value == '') { this.value='Nombre (obligatorio)'}" onfocus="if (this.value == 'Nombre (obligatorio)') {this.value=''}" /></p>
  45.               <p><label for="mail">Mail</label><input name="mail" id="mail" value="Mail (obligatorio)" size="22" tabindex="2" type="text" onblur="if(this.value == '') { this.value='Mail (obligatorio)'}" onfocus="if (this.value == 'Mail (obligatorio)') {this.value=''}" /></p>
  46.               <p><label for="pais">Pa&iacute;s</label><input name="pais" id="pais" value="Pais" size="22" tabindex="2" type="text" onblur="if(this.value == '') { this.value='Pais'}" onfocus="if (this.value == 'Pais') {this.value=''}" /></p>
  47.               <h3>¿Qu&eacute; servicio desea contratar?</h3>
  48.               <div id="servicioscontrata">
  49.               <p class="colform">
  50.                 <input type="checkbox" name="desarrollo_web" id="desarrollo_web" />Desarrollo Web<br />
  51.                 <input type="checkbox" name="seo" id="seo" />Posicionamiento SEO<br />
  52.                 <input type="checkbox" name="redaccion" id="redaccion" />Redacci&oacute;n de contenidos<br />
  53.               </p>
  54.               <p class="colform">
  55.                 <input type="checkbox" name="psd_html" id="psd_html" />de PSD a HTML<br />
  56.                 <input type="checkbox" name="consultoria_web" id="consultoria_web" />Consultor&iacute;a Web<br />
  57.                 <input type="checkbox" name="consultoria" id="consultoria" />Consultor&iacute;a Accesibilidad<br />
  58.               </p>
  59.               </div>
  60.               <h3>Consulta</h3>
  61.               <p><label for="asunto">Subject</label><input name="asunto" id="asunto" value="Asunto (obligatorio)" size="22" tabindex="3" type="text" onblur="if(this.value == '') { this.value='Asunto (obligatorio)'}" onfocus="if (this.value == 'Asunto (obligatorio)') {this.value=''}" /></p>
  62.               <p><label for="mensaje">Message</label><textarea name="mensaje" id="mensaje" cols="61" rows="10" tabindex="3"></textarea></p>
  63.               <h3>Unos datos extras</h3>
  64.               <p>Cuentenos, sin obligaciones, como nos conoci&oacute;</p>
  65.                       <select name="nosconocio" id="nosconocio">
  66.                 <option selected="selected">¿C&oacute;mo nos conoci&oacute;?</option>
  67.                 <option>Recomendaci&oacute;n</option>
  68.                 <option>Google/Yahoo/MSN</option>
  69.                 <option>Aviso publicitario</option>
  70.                 <option>Por un amigo</option>
  71.                       </select>
  72.               <p><input value="Enviar consulta" name="sender" id="sender" type="submit" /></p>
  73.             </fieldset>
  74.           </form>
  75.         <!--End Form-->
  76.         </div>
  77.         <div id="txtcoldercontacto">
  78.           <h3 class="tituizq">Otros medios de contacto</h3>
  79.           <p>Puede contactarnos vía mail escribiendo a <span>info[arroba]urbanchip.com</span></p>
  80.           <p>O bien podés llamarnos por teléfono</p>
  81.           <p>Cord&oacute;ba Capital<span>(0351)-488.5937 | (0351)-15.609.7408</span></p>
  82.           <p>Buenos Aires, Rep. <strong>Dora Tisera</strong> <span>(011)-15.5958.9997</span></p>
  83.           <p><strong><u>Otros medios</u></strong></p>
  84.           <p>MSN <span>urbanchip[arroba]hotmail.com</span></p>
  85.           <p>Skype <span>urbanchip</span></p>
  86.         </div>      
  87.       </div>
  88.     </div>
  89.     <?php include('footer.php'); ?>
  90.   </body>
  91. </html>

Codigo php de mail.php
Código PHP:
Ver original
  1. <?php
  2. &#160;
  3. $host &#160;   = "localhost";
  4. $user &#160;   = "[email protected]";
  5. $pass &#160;   = "xxxx";
  6. $from &#160;   = "[email protected]";
  7. $fromName = "Urbanchip";
  8. $to &#160;     = "[email protected]";
  9. $toName &#160; = "Urbanchip";
  10. &#160;
  11. $asunto &#160; = "Contacto WEB";
  12. $date &#160;   = date ("j/m/y");
  13. $time &#160;   = date ("G a");
  14. $URLError = "error.html";
  15. $URLOk &#160;  = "ok.html";
  16. &#160;
  17. require("class.phpmailer.php");
  18. &#160;
  19. $phpmailer = new PHPMailer();
  20. &#160;
  21. $phpmailer->IsSMTP(); &#160;                                 // send via SMTP
  22. $phpmailer->Host &#160;   = $host; // SMTP servers
  23. $phpmailer->SMTPAuth = true; &#160;   // turn on SMTP authentication
  24. $phpmailer->Username = $user; &#160;// SMTP username
  25. $phpmailer->Password = $pass; // SMTP password
  26. &#160;
  27. $phpmailer->From &#160;   = $from;
  28. $phpmailer->FromName = $fromName;
  29. &#160;
  30. //Direccion del reseptor
  31. $phpmailer->AddAddress($to, $toName); &#160;  // optional name
  32. &#160;
  33. &#160;
  34. $phpmailer->WordWrap = 50; &#160;                            // set word wrap
  35. &#160;
  36. $phpmailer->IsHTML(true); &#160;                             // send as HTML
  37. &#160;
  38. //INI - Preparo el body
  39. $msg = "Correo enviado desde Web Site el día $date a las $time.<br><br>";
  40. &#160;
  41. if ($_SERVER['REQUEST_METHOD'] == "POST") {
  42. &#160; foreach ($_POST as $key => $value) {
  43. &#160;   $msg .= ucfirst ($key) ." : ". $value . "<br>";
  44. &#160; }
  45. &#160;
  46. }else {
  47. &#160; foreach ($_GET as $key => $value) {
  48. &#160;   $msg .= ucfirst ($key) ." : ". $value . "<br>";
  49. &#160; }
  50. }
  51. //END - Preparo el body
  52. &#160;
  53. $phpmailer->Subject &#160;=  $asunto;
  54. $phpmailer->Body &#160;   =  $msg;
  55. &#160;
  56. if(!$phpmailer->Send()){
  57. &#160;  header ("Location:$URLError");
  58. }
  59. &#160;
  60. header ("Location:$URLOk");
  61. &#160;
  62. &#160;
  63. ?>

nuevamente un millón de gracias!!!!!!
__________________
Desarrollos dosLotos
Calendario Maya, Meditación, Osho
  #13 (permalink)  
Antiguo 25/05/2009, 16:03
Avatar de temaqueja  
Fecha de Ingreso: agosto-2002
Ubicación: /dev/null/
Mensajes: 399
Antigüedad: 21 años, 8 meses
Puntos: 4
Respuesta: Validar formulario del lado del servidor

Cita:
Iniciado por DragonX Ver Mensaje
otra cosa que no entiendo muy bien, y te pido disculpas es esta parte del script:

Código PHP:
Ver original
  1. <?php
  2. if(isset($_POST['sender'])) {
  3. $msg_error = '';
  4. // validaciones
  5. // habitualmente muchos if(esto no esta bien) {$msg_error.='<br/>mensaje de error';}
  6. if($msg_error=='') {
  7. // continuar con el script del email
  8. include("mail.php");
  9. }
  10. }
  11. ?>
Hola de nuevo, disculpa pero pense que entendias un poco mas de php jejeje ... al que escribio que lo que te posteé es un "COSIDO" solo decirle que no está demás, es bueno inicializar las variables, aparte deja entender que entiende menos de php que tú.

te lo indico por partes, ya que no has entendido que no estoy haciendo el trabajo por tí sino que te estoy mostrando como hacerlo.-

Código PHP:
<?php
if(isset($_POST['sender'])) {
  
$error_msg =''
  
// es porque se inicializa la variable VACIA ya q despues si hay algun
  // error en las validaciones vamosa ir "rellenandola" de mensajes de error.


  // validaciones
  // habitualmente muchos if(esto no esta bien) {$msg_error.='<br/>mensaje de error';}

  // aqui TU tienes que poner de tu parte escribiendo tus validaciones
  // no esperaras q nade x todo tu script viendo cuales son y repitiendolas
  // para ti; la parte que dice:   if(esto no esta bien) {$msg_error.='<br/>mensaje de error';}
  // es como una especie de plantilla para que te guies, aqui un ejemplo:
  
if($_POST['nombre']=='') {$msg_error.='<br/>Nombre es obligatorio, por favor escr&iacute;balo'; }
  
// entiendase que debes hacer mas "if" para armar las validaciones.


  
if($msg_error=='') {
    
// continuar con el script del email
    
include("mail.php");
  }
  
// en esa ultima parte, si no se activó ningun if() anterior
  // singifica que todas las validaciones estan OK
  // y continua en tu script de mail.php para que haga el resto.
}
?>
Si tienes alguna duda, lee nuevamente lo que escribí.

Un saludo y espero te sirva.
__________________
_________________________
La computadora nació para resolver problemas que antes no existían
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:13.