Si no me entienden, lo que quiero es hacer un solo archivo php que pueda enviarme al mail cualquier formulario con el valor de cada variable.
Actualmente yo hago un procesador para cada pagina, pero quiero cambiar eso..
alguien sabe como?? jiji

| |||
![]() Hola, quiero hacer una pagina en PHP que sea un procesador de formularios, es decir, que si por ejemplo tengo: pagina1.php con una variable $prueba1 y le pongo el "action=form.php" me llegue al mail "$prueba1=valor" pero si por ejemplo TAMBIEN tengo pagina2.php con la variable $prueba2 y con el "action=form.php" me llegue al mail "$prueba2=valor2" no se si me entiendan.. Si no me entienden, lo que quiero es hacer un solo archivo php que pueda enviarme al mail cualquier formulario con el valor de cada variable. Actualmente yo hago un procesador para cada pagina, pero quiero cambiar eso.. alguien sabe como?? jiji ![]() |
| |||
Eso me suena a los viejos formail de Perl xDD ... Bueno en PHP es sencillo: Usando un bucle foreach para recorrer el array que te entrega el array superglobal asociado al method q uses en tu formulario. Esto es la base .. si usas campos tipo "checkbox" recibiras un array en $valor cosa que puedes solventar con un simple is_array($valor) -> hacer otro foreach() ... Código PHP: Estas variabels como el "FROM .. o el asusnto del mail e incluso la pagina de error o gracias las puedes definir en tu formulario como campos hidden .. y pasarselas a este script con lo cual haces si cabe mas versatil el form-mailer este .. Solo te faltaría un detallito de seguridad y quedaría listo .. Un saludo, |
| |||
Hola, Recorriendo el array $_POST si los formularios son POST o $_GET si son GET. Los puedes recorrer con un foreach, algo asi como: Código PHP: Espero haber sido de ayuda.
__________________ Josemi Aprendiz de mucho, maestro de poco. |
| |||
jejej josemi .. casi posteamos lo mismo al mismo time() .. ![]() Cuidado josemi con el . (punto de cocatenación) ya se q es por escribir el código "al vuelo" ![]() Código PHP: Y ... lo de nl2br() .. si va enviar el mail() .. pues si lo envia en formato HTML le hará falta convertir los \n a <br> . sino, no hace falta (es mas .. recibirá el mail en texto plano con los <br> visibles) .. Lo de los arrays multidimensionales .. como los q tira un chekbox o un select multiple de HTML yo lo solvento así: Código PHP: |
| |||
Gracias a otdos de verdad jejeje, pero no se si estoy haciendo algo mal pero la verdad el mail me llega pero vacio, sin ninguna variable, que estoy haciendo mal?? no se mucho de php, ni siquiera se usar el foreach jejee cuidense... |
| ||||
La verdad que este POST me ha gustado muchisimo y les propongo algo.. Que tal si hacemos, en unas minimas pero bien pensadas líneas, un Form2Mail con PHP, para que el resto de los usuarios pueda utilizar? Comienzo yo, ya luego me recomiendan algunas modificaciones: Código PHP: ![]() Última edición por Webstudio; 13/02/2003 a las 09:44 |
| ||||
Bueno, cabe aclarar que no he probado el código, es todo "made in responder este tema"... asi que si alguien quiere comprobar primero de que este script funciona, me haría un enorme favor. Este es un ejemplo de como utilizar el siguiente script :
Código:
Espero que realmente les sirva.<!-- El metodo tambien puede ser GET y el script anterior deberian grabarlo en un archivo llamado "form2mail.php" --> <form method="POST" action="form2mail.php"> <!-- Indicamos a que email se debe enviar el formulario --> <input type="hidden" name="email" value="[email protected]"> <!-- Ahora le decimos que topico debe llevar el email --> <input type="hidden" name="topico" value="Formulario de contacto"> <!-- URL a redirigir si salio todo bien --> <input type="hidden" name="redirigir" value="/gracias.html"> <!-- URL a redirigir si hubo un error --> <input type="hidden" name="error" value="/todo_mal.html"> <!-- Aqui ponemos todos los campos de formulario que queremos --> ..... ..... ..... <input type="submit" value="Enviar ahora !"> </form> Saludos. |
| |||
No he tendio tiempo de probarlo .. pero para la primera versión "Beta" .. podriamos añadir: Al principio del script: Código PHP: Código PHP: 200.234.112.22 (20-23-34-dialnosedonde.tal) Un saludo, |
| |||
Campos requeridos Cluester, tienes razón, mis disculpas, me confundí de foro, porque tenia varios habiertos. Lo que quices y quiero saber es como le agregas a este codigo que si los campos requeridos que vienen del hidden no estan completos que le tire erro o los direcciones a una pagina de error, aqui pongo el codigo como quedaría completo, es el que viene desde el principio. <? if (!@eregi($_SERVER['HTTP_HOST'],$_SERVER['HTTP_REFERER'])){ exit; } // Recomiendo que trabajemos pensando en las register_globals = Off // Primero definamos con qué método se llamó al Form2Mail $variables = $_SERVER["REQUEST_METHOD"]=="GET"?$_GET:$_POST; // Separamos ciertas "variables" que pueden ser definidas como // escondidas y que pueden controlar la ejecución del Form2Mail // email - Dirección a la que se enviará el email $email = !empty($variables["email"])?$variables["email"]:"[email protected]"; // topico - Título que llevará el Email $topico = !empty($variables["topico"])?$variables["topico"]:"Titulo de Email por defecto"; // redirigir - URL a la que se envia al usuario después de enviado el email $redirigir = !empty($variables["redirigir"])?$variables["redirigir"]:"http://www.URLxdefecto.com/gracias.html"; // error - URL a la que se envia al usuario si hubo un error al enviar el email $error = !empty($variables["error"])?$variables["error"]:"http://www.URLxdefecto.com/error.html"; $dato .= "Enviado desde : ".$_SERVER["REMOTE_ADDR"]." (".gethostbyaddr($_SERVER["REMOTE_ADDR"]).")"; // Formamos el cuerpo del email. // Code stolen from Cluster(tm) foreach($variables as $clave => $valor) { if (is_array($valor)) { $dato = "$clave :\n"; foreach($valor as $key => $valor_multiple) $dato .= "[$key] = $valor_multiple\n"; } else $dato .= "$clave : $valor\n"; } // agregamos la Ip del visitante $dato .= "Enviado desde : ".$_SERVER["REMOTE_ADDR"]; // y enviamos el email if (@mail($email, $topico, $dato, "From: quiensea")) header ("Location: $redirigir"); else header ("Location: $error"); // Y fin - Chan chan ! exit(); ?> Gracias. ![]() ![]() |
| |||
Pues se validan aquí: Código PHP: Son "condicionales "IF" (con sintax abreviada eso sí ..) .. así que si quieres puedes usar algo típo: Código PHP: Lo ideal es "pesonalizar" tu script de envio de e-mail y validar las variables que correspondan una por una y por el valor que se espere de ellas .. Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
mamagallo Pues .. yo te recomendaría antes que leyeses sobre PHP en sí .. que es y que hace .. Ahí resolveras un monton de dudas de "novato" como todos lo hemos sido .. www.php.net/manual/es Y en las FAQ's de este foro tienes más tutoriales e información . .leelas. PHP se ejecuta en cualquier carpeta de tu servidor HTTP bajo tu "document_root" .. Osease .. donde pongas tus páginas HTML comunes .. El script que puedes usar .. es ni mas ni menos el que aquí en este mensaje se ha puesto .. Es un "form mail" Genérico .. usalo mientras apredes lo básico de PHP y ahí empezaras a personalizar tus formularios y validación de datos .. Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| ||||
por ejemplo guardo el script en la carpeta de php como mail.php y luego hago la referencia en el form de la pagina de htm? veamos,......yo tengo este formulario:
Código:
y consegui este sencillo script, pero solo logro que me envie la dirección ip, no envia el contenido del formulario<form ACTION="mail.php" METHOD="POST" ENCTYPE="multipart/form-data" name="pedido de aceites" target="_blank"> <div align="center"> <center> <table width="335" cellspacing="0" border="2" height="427" style="border-collapse: collapse" cellpadding="0"> <tr> <td colspan="3" height="19" width="327"> <div align="center"> <strong>Ordene aqui su pedido</strong></div> </td> </tr> <tr> <td height="21" width="94"> <div align="right"> Aceite de Alméndras:</div> </td> <td height="21" width="105"><b><input type="checkbox" name="almendras_checkbox4" value="almendra"> <font size="2">Bs.<span lang="es"> 20</span>.000,00</font></b></td> <td height="21" width="127" align="right"><span lang="es"><b><font size="2"> </font>+Costo de envio</b></span></td> </tr> <tr> <td height="21" width="94"> <div align="right"> Aceite de Menta:</div> </td> <td height="21" width="105"><b><input type="checkbox" name="checkbox3" value="menta"> <font size="2">Bs. <span lang="es">20</span>.000,00</font></b></td> <td height="21" width="127" align="right"><span lang="es"><b>+Costo de envio</b></span></td> </tr> <tr> <td height="21" width="94"> <div align="right"> Aceite de Canela:</div> </td> <td height="21" width="105"><b><input type="checkbox" name="checkbox2" value="canela"> <font size="2">Bs. <span lang="es">20.</span>000,00</font></b></td> <td height="21" width="127" align="right"><span lang="es"><b>+Costo de envio</b></span></td> </tr> <tr> <td height="21" width="94"> <div align="right"> Aceite de Mandarina:</div> </td> <td height="21" width="105"><b><input type="checkbox" name="checkbox" value="mandarina"> <font size="2">Bs. <span lang="es">20</span>.000,00</font></b></td> <td height="21" width="127" align="right"><span lang="es"><b>+Costo de envio</b></span></td> </tr> <tr> <td width="94" height="22"> <div align="right"> <font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><input type="hidden" name="email" value="[email protected]"><input type="hidden" name="asunto" value="PedidoAceite"><input type="hidden" name="redireccion" value="http://www.sexydirectorio.com/sexyacompes/tiendas/aceites/respuesta.htm">Nombre:</font></div> </td> <td width="236" height="22" colspan="2"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><input type="text" name="nombre" size="32"> </font></td> </tr> <tr> <td height="22" width="94"> <div align="right"> <font face="Arial, Helvetica, sans-serif" color="#FFFFFF">Teléfono:</font></div> </td> <td height="22" width="236" colspan="2"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><input type="text" name="telefono" size="32"> </font></td> </tr> <tr> <td height="22" width="94"> <div align="right"> <font color="#FFFFFF" face="Arial, Helvetica, sans-serif">E-mail:</font></div> </td> <td height="22" width="236" colspan="2"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><input type="text" name="correo" size="32"> </font></td> </tr> <tr> <td valign="top" height="36" width="94"> <div align="right"> Dirección:</div> </td> <td height="36" width="236" colspan="2"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><textarea name="dirección" rows="2" size="30" cols="27"></textarea> </font></td> </tr> <tr> <td valign="top" height="19" width="94"> <div align="right"> </div> </td> <td height="19" width="236" colspan="2"> </td> </tr> <tr> <td height="38" width="94"> <div align="right"> <font color="#FFFFFF">Número de planilla bancaria:</font></div> </td> <td height="38" width="236" colspan="2"> <div align="left"> <font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><input type="text" name="planilla_numero" size="32"> <input name="archivo" type="hidden"></font> </div> </td> </tr> <tr> <td valign="top" height="36" width="94"> <div align="right"> <font face="Arial, Helvetica, sans-serif" color="#FFFFFF">Comentarios:</font></div> </td> <td height="36" width="236" colspan="2"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><textarea name="comentarios" rows="2" size="32" cols="30"></textarea> </font></td> </tr> <tr> <td height="40" width="94"> </td> <td height="40" width="236" colspan="2"> <p align="center"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><input name="submit" type="submit" value="Enviar"> </font></td> </tr> </table> </center> </div> </form>
Código:
ademas solo me abre una ventana donde dice que el email ha sido enviado, porsupuesto puedo eliminar que muestre el mensaje lo que no entiendo es por que no me redirecciona a la pagina de respuesta y por que no envia los resultados del formulario.<?php $title="PhpMail"; $to = "[email protected]"; $extra = "From: $email\r\nReply-To: $email\r\n"; $mess = "This is from: ".$name."(".$REMOTE_ADDR.")\n\n".$message; mail ($to, $subject, $mess, $extra); echo("Your mail has been sent.<br><br><a href=\"www.miweb.com/acompes/tiendas/aceites/respuesta.htm".$HTTP_REFERER."\">go back.</a>\n"); ?> ![]()
__________________ Un hombre es tan grande, como el compromiso que se le presenta y jamás vive de rodillas. Última edición por mamagallo; 09/06/2003 a las 20:58 |
| |||
![]() Pero hombre .. como va a enviar tus variables la función mail() por arte de mágia? Acaso las recoges en tu script PHP .. y las concatenas para formar el body del mensaje? ... ... Sé que dices no tener idea de PHP .. pero para eso ya te he recomendado que leas algún manual antes de ponerte hacer nada con PHP .. Lo primero que tienes que hacer cuando te toques con un script es LEER en php.net las funciones que se usan y ver que y como se usan .. Y si desconoces el lenguaje .. pues antes de eso leer un tutorial .. hacer tus prácticas sencias: un formulario y una variable y la recoges en un script.php que apuntes en tu action del formulario .. así, poco a poco se aprende . cuando tengas eso cláro si quieres te pasas al tema de "condicionales o estructuras de control" por si quieres validar los datos de tu formulario (altamente recomendable) y cuando lo tengas claro . .ahí puedes mirar como se usa mail() de PHP para hacer un envio de un e-mail con las variables que ya tendras en tu script.php ... Te recomiendo URGENTEMENTE que leas algún tutorial sobre PHP .. Olvidate de ese formulario y mail por el momento .. Seguro que tardas menos tiempo en comprender el tema "formularios" y como PHP espera y recoge las variables que estar dando vuelta por buscadores a ver si te sale algo que te resulte .. Tutoriales en castellano: http://www.zonaphp.com/index.php http://www.rinconastur.com/php http://otri.us.es/recursosPHP/manual/index.htm http://www.webestilo.com/php http://www.desarrolloweb.com/php http://www.tejedoresdelweb.com/php/ Y por favor .. No mezcles temas .. Aquí se está tratando sobre el código que se puso .. Si tu tienes otro código OK, pero inicia un nuevo tema .. Un saludo, |
| |||
mamagallo No es ningua molestia .. Pero si se te aconseja ciertas cosas como leer algún manual de PHP como los que te he recomendado para que luego preguntes cosas más concretas .. sería lo ideal .. Y si un tema trata de algo en concreto (sí .. formularios y e-mail pero con un código determinado ..) si tienes otra pregunta (en tu caso que usas otro código) .. Inicia un nuevo tema y se podrán tratar mejor tus própios problemas y particularidades de tu código o problemas. Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Hola. Soy nuevo en el foro y también aprendiz de PHP. Yo quisiera enviar un formulario por mail, pero que además mande archivos adjuntos en el. Es decir, un formulario en que pongas ciertos datos y algunas fotos y que se pueda mandar por mail. Se puede? Como se haría? Gracias |