Foros del Web » Programando para Internet » PHP »

Formulario Completo

Estas en el tema de Formulario Completo en el foro de PHP en Foros del Web. Hola, para algunos será obvio, pero no encuentro un codigo de un formulario, por mucho que he buscado, que contenga estas carasteristicas: - Que tenga ...

  #1 (permalink)  
Antiguo 03/10/2009, 10:51
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Formulario Completo

Hola, para algunos será obvio, pero no encuentro un codigo de un formulario, por mucho que he buscado, que contenga estas carasteristicas:

- Que tenga Captcha
- Que se envie a mi email y al usuario
- Que se valide sólo en php (No Javascript)
- Que tenga checkbox, radio select, y text, que sean obligatorios
- Que cuando se valide salga otra pagina que diga CORRECTO, y en caso de que no este bien, un mensaje "faltan datos" y el botón VOLVER, y que al pulsar el botón volver no se pierdan los datos.

Es completo ¿verdad?, seguro que no soy el único que le viene muy bien.

Dejo un código de ejemplo para empezar. Muchas gracias.

Código PHP:
<form name="ejemplo">
    <
p>Nombre: <input type="text" name="Nombre">(obligatorio)</p>
    <
p>Email: <input type="text" name="email">(obligatorio)</p>
    <
p><input type="radio" name="karate">Baloncesto <input type="radio" name="karate">Karate <input type="radio" name="karate">Futbol &nbsp;(obligatorio)</p>
    <
p>Aceptas las condiciones: <input type="checkbox" name="A">Si&nbsp;&nbsp;&nbsp;(obligatorio)</p>
    <
p>Ciudad: <select name="ciudad" size="1">
        <
option>Barcelona</option>
        <
option>Madrid</option>
        <
option>Sevilla</option>
</
select>(obligatorio)</p>
    <
p>Comentarios: <textarea name="comentarios" rows="2"></textarea>(obligatorio)</p>
    <
p><input type="Enviar" name="Enviar"></p>
</
form
Se agradece si poneis codigos completos :)
  #2 (permalink)  
Antiguo 03/10/2009, 11:01
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Sonrisa Respuesta: Formulario Completo

hola ... dime, tu lo que "preguntas" es cómo hacer ? o lo que "quieres" es que se te pase el código completo ??? pues si es una "pregunta" lo que te recomiendo es que hagas una página en PHP la cual será llamada por tu FORM, ahí haces TODOS los chequeos de todos los campos, si todos resultan bien haces un envío de email y una redirección, si alguno falló, regresa a la página del FORM con el mensaje determinado de error .. ahora bien, si lo que "quieres" es que te lo hagan completo, pues ....
__________________
-----------------------------------
Éxitos !!! .. joao
  #3 (permalink)  
Antiguo 03/10/2009, 11:11
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Formulario Completo

Hola,
si busco el codigo completo, tengo un monton de ejemplos, pero a todos les falta algo, y no se como se hace.

Gracias de todas formas
  #4 (permalink)  
Antiguo 03/10/2009, 11:19
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Sonrisa Respuesta: Formulario Completo

hola .. bueno ...acá te dejo un LINK que pasaron, tiene todo, excepto CAPTCHA, ya ese deberías incorporárselo ... está el código pa descargarlo ....

http://www.php-development.ru/php-sc...ntact-form.php

salu2 !!!
__________________
-----------------------------------
Éxitos !!! .. joao
  #5 (permalink)  
Antiguo 03/10/2009, 11:35
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Formulario Completo

Hola, ya conozco este formulario, me he peleado con el codigo y no hay manera, tiene arrays que impiden ponerle los estilos de:

http://www.emblematiq.com/lab/nicefo...niceforms.html

por eso queria algo más típico como lo que he puesto al principio.
Además no tiene radiobutton, tambien le falta que envie una copia al usuario.

gracias de nuevo, no pido el codigo por echarle cara, sino por que de verdad que no lo he encontrado y he probado un montón. (y por que estoy aprendiendo php)

gracias de todas formas
  #6 (permalink)  
Antiguo 03/10/2009, 12:16
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Sonrisa Respuesta: Formulario Completo

bueno ... pues vamos a darte una mano, acá te presento las dos páginas en cuestión:

formulario.php
************************************************** ******
<?php session_start();//en la primera línea esto
$_SESSION['tmptxt'] = captcha(8);//agarro un captcha para mostrar el el form
$captcha = imagecreatefromgif("fondocaptcha.gif");//este es el fondo del captcha, una imagen que por supuesto debes tener
$colText = imagecolorallocate($captcha, 0, 0, 0);
imagestring($captcha, 5, 16, 7, $_SESSION['tmptxt'], $colText);
header("Content-type: image/gif");
imagegif($captcha);
//acá lo que hago es obtener un captcha para ponerlo en el form
?>

<?php
//función que crea el capctha
function captcha($length) {
$pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
for($i=0;$i<$length;$i++) {
$key .= $pattern{rand(0,50)};
}
return $key;
}
?>
ahora pinto el FORM:

<form name="ejemplo" action="procesa.php">
<p>Nombre: <input type="text" name="Nombre">(obligatorio)</p>
<p>Email: <input type="text" name="email">(obligatorio)</p>
<p><input type="radio" name="karate">Baloncesto <input type="radio" name="karate">Karate <input type="radio" name="karate">Futbol &nbsp;(obligatorio)</p>
<p>Aceptas las condiciones: <input type="checkbox" name="A">Si&nbsp;&nbsp;&nbsp;(obligatorio)</p>
<p>Ciudad: <select name="ciudad" size="1">
<option>Barcelona</option>
<option>Madrid</option>
<option>Sevilla</option>
</select>(obligatorio)</p>
<p>Comentarios: <textarea name="comentarios" rows="2"></textarea>(obligatorio)</p>
<p><img src="captcha.php" width="100" height="30"></p>
<p><input name="tmptxt" type="text">
(obligatorio)</p>
<p><input name="btget" type="submit" value="Verificar Codigo"></p>

<p>
<label>
<input type="submit" name="button" id="button" value="Enviar">
</label>
</p>
</form>

nota que se agregó acá el campo de capctha

ahora viene la página procesa.php
************************************************** ******
<?php session_start();//verifico captcha
if ($_SESSION['tmptxt'] != $_POST['tmptxt']) {
echo "<script>alert(Codigo CAPTCHA INVALIDO)</script>";//mensaje de error correspondiente
echo "<script>location.href=javascript:history.back ()</script>";//con esto no se pierden los datos del FORM
}
exit;
//**************** COMPRUEBO NOMBRE VACIO **********************
if (!($_POST['nombre'])){
echo "<script>alert(No deje nombre vacio)</script>";
echo "<script>location.href=javascript:history.back ()</script>";
exit;
}

//**************** COMPRUEBO EMAIL VACIO Y VALIDO **********************
if (!($_POST['email'])){
echo "<script>alert(No deje email vacio)</script>";
echo "<script>location.href=javascript:history.back ()</script>";
exit;
}elseif(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$_POST['email'])){
echo "<script>alert(El email ingresado es inválido)</script>";
echo "<script>location.href=javascript:history.back ()</script>";
exit;//acá verifico que el email sea VALIDO, que tenga la forma [email protected]
}

//**************** COMPRUEBO RADIO BOTON MARCADO **********************
if (!($_POST['karate'])){
echo "<script>alert(No deje email vacio)</script>";
echo "<script>location.href=javascript:history.back ()</script>";
exit;
}

//**************** COMPRUEBO ciudad **********************
if (!($_POST['ciudad'])){
echo "<script>alert(No deje ciudad vacio)</script>";
echo "<script>location.href=javascript:history.back ()</script>";
exit;
}

//**************** COMPRUEBO comentarios MARCADO **********************
if (!($_POST['comentarios'])){
echo "<script>alert(No deje email vacio)</script>";
echo "<script>location.href=javascript:history.back ()</script>";
exit;
}

//**************** COMPRUEBO si aceptó las condiciones **********************
if (!($_POST['A'])){
echo "<script>alert(Debe aceptar las condiciones)</script>";
echo "<script>location.href=javascript:history.back ()</script>";
exit;
}

//una vez que verifique todo, pues envío el email.
//Declaras hacia donde se envía el correo, el Destinatario
$recipiente = "[email protected]";

//defines el Asunto del correo
$asunto = "Contacto desde la Pagina WEB ";

//defines el cuerpo del mensaje
$message ="nombre: ".$_POST['nombre']."<br>";
$message .="email: ".$_POST['email']."<br>";
$message .="preferencias: ".$_POST['karate']."<br>";
$message .="ciudad: ".$_POST['ciudad']."<br>";
$message .="comentarios: ".$_POST['comentarios']."<br>";

$message = stripslashes($message);

//haces los encabezados
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type:text/html; charset=iso-8859-1\r\n";
$headers .= "From: $email\r\n";
$headers .= "Repaly-to: $email\r\n";
$headers .= "Cc: ".$_POST['email']."\r\n";//le envías una copia al remitente

//chao email!!
mail($recipiente,$asunto,$message,$headers);

echo "El mensaje se envió correctamente";
?>
__________________
-----------------------------------
Éxitos !!! .. joao
  #7 (permalink)  
Antiguo 03/10/2009, 13:06
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Problemas Captcha

uuuau! muchas gracias,

ya he estado probando, al principio no he puesto el captcha y me daba estos errores:

Código errores:
Ver original
  1. Warning: imagecreatefromgif(fondocaptcha.gif) [function.imagecreatefromgif]: failed to open stream: No such file or directory in  /home/formulario.php on line 3
  2.  
  3. Warning: imagecolorallocate(): supplied argument is not a valid Image resource in /home/formulario.php on line 4
  4.  
  5. Warning: imagestring(): supplied argument is not a valid Image resource in  /home/formulario.php on line 5
  6.  
  7. Warning: Cannot modify header information - headers already sent by (output started at  /home/formulario.php:3) in  /home/formulario.php on line 6
  8.  
  9. Warning: imagegif(): supplied argument is not a valid Image resource in /home/formulario.php on line 7

Asi que después he puesto una imagen llamada fondocaptcha.gif
pero ahora resulta que solo me sale la imagen.
¿es porque necesito bajarme un programa captcha de internet ¿? o ...

gracias por tu paciencia :)
  #8 (permalink)  
Antiguo 03/10/2009, 13:15
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Sonrisa Respuesta: Formulario Completo

no no, no necesitas bajarte nada de internet ... dime, le pusiste la ruta relativa de tu archivo de fondo del captcha ..??? ... ah, cuando pongas los errores, especifíca las líneas donde marca el error, sino es un poco mas dificil ayudarte .... si te pone la imagen de fondo y no te pinta el captcha ... qué imagen pone.... ?? solamente el fondo que pusiste sin nada por delante ????
__________________
-----------------------------------
Éxitos !!! .. joao
  #9 (permalink)  
Antiguo 03/10/2009, 13:22
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Sonrisa Respuesta: Formulario Completo

ah otra cosa, ¿Tienes instalada la librería GD en tu servidor? esto puedes verificar haciendo un phpinfo() .. sino no podrás usar imagecreatefromgif() .... salu2 !!
__________________
-----------------------------------
Éxitos !!! .. joao
  #10 (permalink)  
Antiguo 03/10/2009, 13:24
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Formulario Completo

la ruta que le puse fue relativa si, y la imagen esta dentro del mismo directorio que el formulario.php

Las lineas donde marca el error, estan puestas, las estoy viendo, hay que darle al scroll, son:

son las lineas 3, 4, 5, 6, 7 (el "Codigo de errores arriba marca otras, pues le puse las etiquetas de html por ese era el error")
O sea aqui da el error

Código error:
Ver original
  1. <?php session_start();//en la primera línea esto
  2. $_SESSION['tmptxt'] = captcha(8);//agarro un captcha para mostrar el el form
  3. $captcha = imagecreatefromgif("fondocaptcha.gif");//este es el fondo del captcha, una imagen que por supuesto debes tener
  4. $colText = imagecolorallocate($captcha, 0, 0, 0);
  5. imagestring($captcha, 5, 16, 7, $_SESSION['tmptxt'], $colText);
  6. header("Content-type: image/gif");
  7. imagegif($captcha);
  8. //acá lo que hago es obtener un captcha para ponerlo en el form
  9. ?>
  10.  
  11. Respecto a la imagen aparece ella sola y todo en blanco, sin nada mas, es una imagen pequeña de 30x30 pixeles normal
  #11 (permalink)  
Antiguo 03/10/2009, 13:28
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Sonrisa Respuesta: Formulario Completo

si, al parecer no Tienes instalada la librería GD en tu servidor, esto puedes verificar haciendo un phpinfo() ... todos los errores son a la hora de crear tu gif, de esto se ocupa esa DLL, php_gd2.dll ...
__________________
-----------------------------------
Éxitos !!! .. joao
  #12 (permalink)  
Antiguo 03/10/2009, 13:37
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Formulario Completo

He echo un phpinfo y luego he buscado algo que se llamara GD y me ha salido esto:

gd
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.2.1
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XPM Support enabled
XBM Support enabled
  #13 (permalink)  
Antiguo 03/10/2009, 13:54
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Sonrisa Respuesta: Formulario Completo

buscate en tu php.ini la línea del tipo:

;extension=php_gd2.dll y sacale el ; que tiene delante como comentario ... es decir, revisa esto
__________________
-----------------------------------
Éxitos !!! .. joao
  #14 (permalink)  
Antiguo 03/10/2009, 13:57
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Formulario Completo

perdona, no tengo ningun php.ini,

¿que es eso? ¿donde esta?
  #15 (permalink)  
Antiguo 03/10/2009, 14:00
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Sonrisa Respuesta: Formulario Completo

dime, las pruebas las estás haciendo local o en un server remoto ??? si es local, estás usando windows como SO o LINUX ?
__________________
-----------------------------------
Éxitos !!! .. joao
  #16 (permalink)  
Antiguo 03/10/2009, 14:09
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Formulario Completo

Es un servidor remoto, y usa linux, abajo te doy las carasteristica. Aunque sinceramente creo que no se trata de eso el problema, debe ser otro, pues cuando he estado probando el formulario que antes me has recomendado, tienen captcha y me funcionaba perfectamente, además ya te dije que estube buscando mucho, y otros formulario que tenian captcha tambien me funcionaba el captcha.
Si quieres me conformo si le quitas el captcha y ya le intentaré yo poner algun captcha más despacio, o si tiene un codigo de esos que pone una suma como 2+2 ...

Código carasteristicas hosting:
Ver original
  1. Versión de cPanel  11.24.5-STABLE
  2. cPanel Build    38506
  3. Pantilla    x3
  4. Version de Apache   2.2.10 (Unix)
  5. Version de PHP  5.2.6
  6. Version de MySQL    4.1.22-standard
  7. Arquitectura    i686
  8. Sistema Operativo   Linux
  9. Direccion de Ip Compartida xx xx xx xx
  10. Path a sendmail /usr/sbin/sendmail
  11. Path a PERL /usr/bin/perl
  12. Version de Kernel   2.6.24.5-grsec-xx
  13. xx-grs-ipv4-32
  #17 (permalink)  
Antiguo 03/10/2009, 14:14
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Respuesta: Formulario Completo

bueno, entonces es evidente que lo que no está es funcionando la función CAPTCHA, has lo siguiente en tu página del form, o sino en otra página que uses como ejemplo no mas:

<?php session_start();
function captcha($length) {
$pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
for($i=0;$i<$length;$i++) {
$key .= $pattern{rand(0,50)};
}
return $key;
}


$_SESSION['tmptxt'] = captcha(8);//acá agarro un captcha para mostrar el el form


echo $_SESSION['tmptxt'];

acá veremos si está funcionando la función, si te imprime un codigo en pantalla maximo de 8 lugares, repito, has esto en una página de prueba .. este código no mas
?>

y dime que te sale ...
__________________
-----------------------------------
Éxitos !!! .. joao
  #18 (permalink)  
Antiguo 03/10/2009, 14:21
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Formulario Completo

Si que me furru,
me sale esto y cambia cada vez que le doy al enter:

uwut
...
...
  #19 (permalink)  
Antiguo 03/10/2009, 14:31
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Sonrisa Respuesta: Formulario Completo

..entonces lo que no funca es imagecreatefromgif(), esto de de la librería GD, es raro si me dices que has probado otros captcha que usen imagecreatefromgif y te ha funcionado bien, si has probado otros que trabajen con imagecreatefromgif pues este lógico debe funcionarte también, la imagen que pones de fondo debe ser de 100 x 30 px, intenta ahora poner solo en la página el siguiente código:

captcha.php
***********************************************
<?php session_start();
function captcha($length) {
$pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
for($i=0;$i<$length;$i++) {
$key .= $pattern{rand(0,50)};
}
return $key;
}


$_SESSION['tmptxt'] = captcha(8);
$captcha = imagecreatefromgif("fondocaptcha.gif");
$colText = imagecolorallocate($captcha, 0, 0, 0);
imagestring($captcha, 5, 16, 7, $_SESSION['tmptxt'], $colText);
header("Content-type: image/gif");
imagegif($captcha);
?>

página test.php
**************************************
echo "<img src=captcha.php width=100 height=30>";

una cosa que NOTE ahora en el código que te pasé al comienzo, en el form llamamos a la imagen así:
<p><img src="captcha.php" width="100" height="30"></p>

y esto está MAL, pues habíamos puesto en el mismo FORM la creación del CAPTCHA, es decir, el captcha se crea en una página aparte que lo que hace es crear la imágen ... bueno, como sea, has la prueba esta con la página captcha.php y test.php, si te funca, pues en tu FORM saca todo lo que tiene que ver con el captcha y ponlo solo en una p´gina que se llama captcha.php ... cualquier cosa tira pa´ca .. salu2 !!
__________________
-----------------------------------
Éxitos !!! .. joao
  #20 (permalink)  
Antiguo 03/10/2009, 14:33
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Formulario Completo

Espera...

si esto funciona es que alomejor he dividido mal los archivos que me has dado, son dos o tres archivos?
ahora tengo formulario.php y procesa.php
lo digo por que veo que que el archivo formulario.php esta llamando a uno que se llama captcha.php

¿?
  #21 (permalink)  
Antiguo 03/10/2009, 14:35
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Sonrisa Respuesta: Formulario Completo

Cita:
Iniciado por manupalaya Ver Mensaje
Espera...

si esto funciona es que alomejor he dividido mal los archivos que me has dado, son dos o tres archivos?
ahora tengo formulario.php y procesa.php
lo digo por que veo que que el archivo formulario.php esta llamando a uno que se llama captcha.php

¿?
si, mira el post que te puse antes .. me di cuenta ahora pues me dispuse a probar tu código en mi PC, cosa que no había hecho, jeje, y me di cuenta que esa pagina captcha no existía .. SORRY !!!
__________________
-----------------------------------
Éxitos !!! .. joao
  #22 (permalink)  
Antiguo 03/10/2009, 14:54
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Formulario Completo

Ahora si!

bueno al menos ya veo el formulario con su Captcha y todo.

Lo unico que no fuciona son:
- La validacion
- Tampoco me envial el email al usuario, ni a mi
- una pregunta, no se para que es lo de "Vericar codigo"?

Ya queda menos, muchas gracias

Por cierto como ha habido confusiones, escribo el codigo de todos los archivos a continuacion, tal y como me funciona de momento:

Código formulario.php:
Ver original
  1. <form name="ejemplo" action="procesa.php">
  2. <p>Nombre: <input type="text" name="Nombre">(obligatorio)</p>
  3. <p>Email: <input type="text" name="email">(obligatorio)</p>
  4. <p><input type="radio" name="karate">Baloncesto <input type="radio" name="karate">Karate <input type="radio" name="karate">Futbol &nbsp;(obligatorio)</p>
  5. <p>Aceptas las condiciones: <input type="checkbox" name="A">Si&nbsp;&nbsp;&nbsp;(obligatorio)</p>
  6. <p>Ciudad: <select name="ciudad" size="1">
  7. <option>Barcelona</option>
  8. <option>Madrid</option>
  9. <option>Sevilla</option>
  10. </select>(obligatorio)</p>
  11. <p>Comentarios: <textarea name="comentarios" rows="2"></textarea>(obligatorio)</p>
  12. <p><img src="captcha.php" width="100" height="30"></p>
  13. <p><input name="tmptxt" type="text">
  14. (obligatorio)</p>
  15. <p><input name="btget" type="submit" value="Verificar Codigo"></p>
  16.  
  17. <p>
  18. <label>
  19. <input type="submit" name="button" id="button" value="Enviar">
  20. </label>
  21. </p>
  22. </form>

Código captcha.php:
Ver original
  1. <?php session_start();
  2. function captcha($length) {
  3. $pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
  4. for($i=0;$i<$length;$i++) {
  5. $key .= $pattern{rand(0,50)};
  6. }
  7. return $key;
  8. }
  9.  
  10.  
  11. $_SESSION['tmptxt'] = captcha(8);
  12. $captcha = imagecreatefromgif("fondocaptcha.gif");
  13. $colText = imagecolorallocate($captcha, 0, 0, 0);
  14. imagestring($captcha, 5, 16, 7, $_SESSION['tmptxt'], $colText);
  15. header("Content-type: image/gif");
  16. imagegif($captcha);
  17. ?>

Código procesa.php:
Ver original
  1. <?php session_start();//verifico captcha
  2. if ($_SESSION['tmptxt'] != $_POST['tmptxt']) {
  3. echo "<script>alert(Codigo CAPTCHA INVALIDO)</script>";//mensaje de error correspondiente
  4. echo "<script>location.href=javascript:history.back ()</script>";//con esto no se pierden los datos del FORM
  5. }
  6. exit;
  7. //**************** COMPRUEBO NOMBRE VACIO **********************
  8. if (!($_POST['nombre'])){
  9. echo "<script>alert(No deje nombre vacio)</script>";
  10. echo "<script>location.href=javascript:history.back ()</script>";
  11. exit;
  12. }
  13.  
  14. //**************** COMPRUEBO EMAIL VACIO Y VALIDO **********************
  15. if (!($_POST['email'])){
  16. echo "<script>alert(No deje email vacio)</script>";
  17. echo "<script>location.href=javascript:history.back ()</script>";
  18. exit;
  19. }elseif(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$_POST['email'])){
  20. echo "<script>alert(El email ingresado es inválido)</script>";
  21. echo "<script>location.href=javascript:history.back ()</script>";
  22. exit;//acá verifico que el email sea VALIDO, que tenga la forma [email protected]
  23. }
  24.  
  25. //**************** COMPRUEBO RADIO BOTON MARCADO **********************
  26. if (!($_POST['karate'])){
  27. echo "<script>alert(No deje email vacio)</script>";
  28. echo "<script>location.href=javascript:history.back ()</script>";
  29. exit;
  30. }
  31.  
  32. //**************** COMPRUEBO ciudad **********************
  33. if (!($_POST['ciudad'])){
  34. echo "<script>alert(No deje ciudad vacio)</script>";
  35. echo "<script>location.href=javascript:history.back ()</script>";
  36. exit;
  37. }
  38.  
  39. //**************** COMPRUEBO comentarios MARCADO **********************
  40. if (!($_POST['comentarios'])){
  41. echo "<script>alert(No deje email vacio)</script>";
  42. echo "<script>location.href=javascript:history.back ()</script>";
  43. exit;
  44. }
  45.  
  46. //**************** COMPRUEBO si aceptó las condiciones **********************
  47. if (!($_POST['A'])){
  48. echo "<script>alert(Debe aceptar las condiciones)</script>";
  49. echo "<script>location.href=javascript:history.back ()</script>";
  50. exit;
  51. }
  52.  
  53. //una vez que verifique todo, pues envÃ*o el email.
  54. //Declaras hacia donde se envÃ*a el correo, el Destinatario
  55. $recipiente = "[email protected]";
  56.  
  57. //defines el Asunto del correo
  58. $asunto = "Contacto desde la Pagina WEB ";
  59.  
  60. //defines el cuerpo del mensaje
  61. $message ="nombre: ".$_POST['nombre']."<br>";
  62. $message .="email: ".$_POST['email']."<br>";
  63. $message .="preferencias: ".$_POST['karate']."<br>";
  64. $message .="ciudad: ".$_POST['ciudad']."<br>";
  65. $message .="comentarios: ".$_POST['comentarios']."<br>";
  66.  
  67. $message = stripslashes($message);
  68.  
  69. //haces los encabezados
  70. $headers = "MIME-Version: 1.0\r\n";
  71. $headers .= "Content-type:text/html; charset=iso-8859-1\r\n";
  72. $headers .= "From: $email\r\n";
  73. $headers .= "Repaly-to: $email\r\n";
  74. $headers .= "Cc: ".$_POST['email']."\r\n";//le envÃ*as una copia al remitente
  75.  
  76. //chao email!!
  77. mail($recipiente,$asunto,$message,$headers);
  78.  
  79. echo "El mensaje se envió correctamente";
  80. ?>

Última edición por manupalaya; 03/10/2009 a las 15:24
  #23 (permalink)  
Antiguo 03/10/2009, 15:13
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Sonrisa Respuesta: Formulario Completo

:) .. bueno, respondiendo a lo que te falta ...

1. la validación, que es lo que no te funciona de la validación ?? ... a qué te refieres ..
2. revisaste si quizá el mail te llega a los mensajes no deseados ?? este código de envío de email lo uso siempre y me funciona super bien
3. na pregunta, no se para que es lo de "Vericar codigo"? .. esto era para si se quería verificar el código del captcha extra.. eso puedes eliminar ....
__________________
-----------------------------------
Éxitos !!! .. joao
  #24 (permalink)  
Antiguo 03/10/2009, 15:29
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Formulario Completo

Pues:

1. la validacion, supuestamente evita que envies el formulario vacio o si te falta algún campo, bien pues yo lo puedo enviar vacion completamente y no me dice ningun mensaje de error

2. el email no me llega, tampoco en spam

En el anterior post te puse los archivos que tengo, si quieres echarle un vistazo, seguro que ves rapido error.

Muchas gracias!
  #25 (permalink)  
Antiguo 03/10/2009, 15:45
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Sonrisa Respuesta: Formulario Completo

ah .. el tema es que al parecer no te está procesando el formulario, dime, sacaste la línea del SUBMIT
<input name="btget" type="submit" value="Verificar Codigo"> ...

POR OTRA PARTE, te imprime en pantalla:
"El mensaje se envió correctamente" ..????

si no te imprime esto es que estás mandando a otra página ese form, pues con estas cosas que tienes en tu página de procesa.php estás verificando TODO:

<?php session_start();//verifico captcha
if ($_SESSION['tmptxt'] != $_POST['tmptxt']) {
echo "<script>alert(Codigo CAPTCHA INVALIDO)</script>";//mensaje de error correspondiente
echo "<script>location.href=javascript:history.back ()</script>";//con esto no se pierden los datos del FORM
}
exit;
//**************** COMPRUEBO NOMBRE VACIO **********************
if (!($_POST['nombre'])){
echo "<script>alert(No deje nombre vacio)</script>";
echo "<script>location.href=javascript:history.back ()</script>";
exit;
}

AHORA BIEN .. agrega en tu FORM lo siguiente:
<form name="form" action="procesa.php" method="post">, el método POST, el lo agarra por defecto, pero bueno, no se me ocurre nada mas, tu código está perfecto ... si tu furmulario va vacío o CUALQUIER campo va vacío tu página procesa.php va a direccionarte al formulario y te dará el mensaje correspondiente al campo que está vacío, en este caso, si los dejas todos vacíos te dará el 1er mensaje de alerta que es el del captcha ...esto explicaría demás de que no está enviando el email ...
__________________
-----------------------------------
Éxitos !!! .. joao
  #26 (permalink)  
Antiguo 03/10/2009, 16:07
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Formulario Completo

Hola de nuevo, he hecho todo lo que me has dicho y me sale el formulario como antes, pero cuando le doy a enviar me sale siempre la pagina en blanco y si no he rellenado los campos me salen no me dice nada, ni recibo email, ni yo ni el usuario.

Si quieres te doy los archivos literalmente como los tengo y si puedes por favor pruebalos y seguro encuentras rapido el error.
Yo los he probado el mi hosting y en mi servidor local por si acaso, y nada.

Código formulario.php:
Ver original
  1. <html><head><title>formulario</title></head>
  2.  
  3. <body>
  4. <form name="ejemplo" action="procesa.php">
  5. <p>Nombre: <input type="text" name="Nombre">(obligatorio)</p>
  6. <p>Email: <input type="text" name="email">(obligatorio)</p>
  7. <p><input type="radio" name="karate">Baloncesto <input type="radio" name="karate">Karate <input type="radio" name="karate">Futbol &nbsp;(obligatorio)</p>
  8. <p>Aceptas las condiciones: <input type="checkbox" name="A">Si&nbsp;&nbsp;&nbsp;(obligatorio)</p>
  9. <p>Ciudad: <select name="ciudad" size="1">
  10. <option>Barcelona</option>
  11. <option>Madrid</option>
  12. <option>Sevilla</option>
  13. </select>(obligatorio)</p>
  14. <p>Comentarios: <textarea name="comentarios" rows="2"></textarea>(obligatorio)</p>
  15. <p><img src="captcha.php" width="100" height="30"></p>
  16. <p><input name="tmptxt" type="text">
  17. (obligatorio)</p>
  18. <p>
  19. <label>
  20. <input type="submit" name="button" id="button" value="Enviar">
  21. </label>
  22. </p>
  23. </form>
  24. </body>


Código procesa.php:
Ver original
  1. <?php session_start();//verifico captcha
  2. if ($_SESSION['tmptxt'] != $_POST['tmptxt']) {
  3. echo "<script>alert(Codigo CAPTCHA INVALIDO)</script>";//mensaje de error correspondiente
  4. echo "<script>location.href=javascript:history.back ()</script>";//con esto no se pierden los datos del FORM
  5. }
  6. exit;
  7. //**************** COMPRUEBO NOMBRE VACIO **********************
  8. if (!($_POST['nombre'])){
  9. echo "<script>alert(No deje nombre vacio)</script>";
  10. echo "<script>location.href=javascript:history.back ()</script>";
  11. exit;
  12. }
  13.  
  14. //**************** COMPRUEBO EMAIL VACIO Y VALIDO **********************
  15. if (!($_POST['email'])){
  16. echo "<script>alert(No deje email vacio)</script>";
  17. echo "<script>location.href=javascript:history.back ()</script>";
  18. exit;
  19. }elseif(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$_POST['email'])){
  20. echo "<script>alert(El email ingresado es inválido)</script>";
  21. echo "<script>location.href=javascript:history.back ()</script>";
  22. exit;//acá verifico que el email sea VALIDO, que tenga la forma [email protected]
  23. }
  24.  
  25. //**************** COMPRUEBO RADIO BOTON MARCADO **********************
  26. if (!($_POST['karate'])){
  27. echo "<script>alert(No deje email vacio)</script>";
  28. echo "<script>location.href=javascript:history.back ()</script>";
  29. exit;
  30. }
  31.  
  32. //**************** COMPRUEBO ciudad **********************
  33. if (!($_POST['ciudad'])){
  34. echo "<script>alert(No deje ciudad vacio)</script>";
  35. echo "<script>location.href=javascript:history.back ()</script>";
  36. exit;
  37. }
  38.  
  39. //**************** COMPRUEBO comentarios MARCADO **********************
  40. if (!($_POST['comentarios'])){
  41. echo "<script>alert(No deje email vacio)</script>";
  42. echo "<script>location.href=javascript:history.back ()</script>";
  43. exit;
  44. }
  45.  
  46. //**************** COMPRUEBO si aceptó las condiciones **********************
  47. if (!($_POST['A'])){
  48. echo "<script>alert(Debe aceptar las condiciones)</script>";
  49. echo "<script>location.href=javascript:history.back ()</script>";
  50. exit;
  51. }
  52.  
  53. //una vez que verifique todo, pues envÃ*o el email.
  54. //Declaras hacia donde se envÃ*a el correo, el Destinatario
  55. $recipiente = "[email protected]";
  56.  
  57. //defines el Asunto del correo
  58. $asunto = "Contacto desde la Pagina WEB ";
  59.  
  60. //defines el cuerpo del mensaje
  61. $message ="nombre: ".$_POST['nombre']."<br>";
  62. $message .="email: ".$_POST['email']."<br>";
  63. $message .="preferencias: ".$_POST['karate']."<br>";
  64. $message .="ciudad: ".$_POST['ciudad']."<br>";
  65. $message .="comentarios: ".$_POST['comentarios']."<br>";
  66.  
  67. $message = stripslashes($message);
  68.  
  69. //haces los encabezados
  70. $headers = "MIME-Version: 1.0\r\n";
  71. $headers .= "Content-type:text/html; charset=iso-8859-1\r\n";
  72. $headers .= "From: $email\r\n";
  73. $headers .= "Repaly-to: $email\r\n";
  74. $headers .= "Cc: ".$_POST['email']."\r\n";//le envÃ*as una copia al remitente
  75.  
  76. //chao email!!
  77. mail($recipiente,$asunto,$message,$headers);
  78.  
  79. echo "El mensaje se envió correctamente";
  80. ?>

Código captcha.php:
Ver original
  1. <?php session_start();
  2. function captcha($length) {
  3. $pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
  4. for($i=0;$i<$length;$i++) {
  5. $key .= $pattern{rand(0,50)};
  6. }
  7. return $key;
  8. }
  9.  
  10.  
  11. $_SESSION['tmptxt'] = captcha(8);
  12. $captcha = imagecreatefromgif("fondocaptcha.gif");
  13. $colText = imagecolorallocate($captcha, 0, 0, 0);
  14. imagestring($captcha, 5, 16, 7, $_SESSION['tmptxt'], $colText);
  15. header("Content-type: image/gif");
  16. imagegif($captcha);
  17. ?>
  #27 (permalink)  
Antiguo 03/10/2009, 16:20
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Sonrisa Respuesta: Formulario Completo

ponle el metodo de envío POST a tu form ...

<form name="ejemplo" action="procesa.php" method="post">
__________________
-----------------------------------
Éxitos !!! .. joao
  #28 (permalink)  
Antiguo 03/10/2009, 16:28
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Formulario Completo

Ya lo he hecho pero pasa lo mismo
¿a ti te funciona?

...mm.. ¿que puede estar mal?
  #29 (permalink)  
Antiguo 03/10/2009, 16:40
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Respuesta: Formulario Completo

Cita:
Iniciado por manupalaya Ver Mensaje
Ya lo he hecho pero pasa lo mismo
¿a ti te funciona?

...mm.. ¿que puede estar mal?
en tu página procesa borra TODO y pon un simple "HOLA MUNDO" ... a ver si está yendo a esa página ... tu código no tiene error ... aúnque no envíe correo, ni haga nada, esa página debe imprimirte "El mensaje se envió correctamente" ...
woow ... creo que viendo los códigos ahora me acabo de dar cuenta que pasa jejeje, los exit () deben estar dentro de los IF, pues esa instruccion es para que si existe un error, tire el mensaje de error y SALGA sin hacer nada mas, al estar fuera del IF sale automaticamente cuando pasa por el primer IF y por eso no te hace nada jejeje ...
__________________
-----------------------------------
Éxitos !!! .. joao
  #30 (permalink)  
Antiguo 03/10/2009, 16:57
 
Fecha de Ingreso: enero-2007
Mensajes: 156
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Formulario Completo

uff!!

bueno al menos sabemos cual es el error, a ti no importaria ponerme el archivo, yo es que los he empezado a sacar como dices, y me da error con el editor "Netbeans" por todos lados.

:)

Última edición por manupalaya; 03/10/2009 a las 17:05
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 23:24.