Programación > formulario de contacto (PHP5)Participa en el tema formulario de contacto (PHP5) en el foro Programación |  | | | losin´ control
Registración: Feb 2004 Ubicación: la soledad
Mensajes: 1,250
| formulario de contacto (PHP5) Buenas a todos, necesito hacer un formulario de contacto que sea simple,
que la persona que entra a la pagina deje su: nombre, mail y comentario,
(y un boton enviar). todo esto ya lo tengo hecho (form1) y despues hice
un enviar.php en post. (el año pasado en el curso que hice cuando lo subi
al server de mi profe funcionaba pero ahora en uno que contraté no me
funciona. este nuevo server que contraté es PHP5, alguien se puede fijar
si la funsion mail o algo del cogigo que estoy poniendo esta mal),
espero que me puedan ayudar, desde ya muchisimas gracias, les dejo
el codigo de mi enviar.php a continuacion. Código: <?php
//------------------------------------------------------------------------------
// el codigo que aparece a continuacion se envia al dueño del sitio web.
//------------------------------------------------------------------------------
$destino = "niconicita@yahoo.com.ar"; //e-mail del dueño del sitio web al que le llegara el correo.
$asunto = "Lorena y Carina: les llegó un mail de su sitio web"; //este asunto/titulo del mail le llega al dueño del sitio web con los siguientes datos que aparecen abajo.
$mensaje = "Nombre: ".($nombre). "\n". "Mail: ".($mail). "\n". "hizo el siguiente comentario: ".($comentario);
$remite = "From: $nombre <$mail>";// aca en nombre aparecera el nombre ingresado por el que visito la pagina y envia el mensaje al dueño del sitio web.
mail ($destino, $asunto, $mensaje, $remite); // esto se ejecuta,manda mail al dueño de la pagina ("destino"), con el titulo "asunto",con el "mensaje" escrito por el que visita el sitio web y con el nombre del mismo (nombre del que "remite"=nombre del que manda el mensaje).
//---------------------------------------------------------------------------------
// el codigo que aparece a continuacion:
// se envia a la persona que visito el sitio web y envio un mensaje desde el mismo.
//---------------------------------------------------------------------------------
//todo este codigo se envia a la persona que visito el sitio web y envio un mensaje desde el mismo.
$destino2 = $mail; // este es el mail que ingreso el que visito el sitio web a donde llegara un mensaje automatico desde el sitio web.
$asunto2 = "www.xxxxxx.com.ar tiene un mensaje para ud"; //este asunto/titulo del mail le llega al que visito la pagina y envio un mensaje desde la misma.
$mensaje2 = "Gracias por visitar nuestro sitio web"; //este mensaje le llega al que visito el sitio web y invio un comentario desde el mismo.
$remite2 = "From: Nico <niconicita@yahoo.com.ar>"; // aca se pone despues de la palabra "From: el nombre de la institucion o persona a la que pertenece el sitio web, como que esa persona o institucion es la que envia el mensaje a la persona que mando un comentario desde el sitio web.
mail ($destino2, $asunto2, $mensaje2, $remite2); //se envia un mail al "destino2"=persona que hizo un comentario en el sitio//
//--------------------------------------------------------------------------------
// el codigo que aparece a continuacion:
// aparece en la pantalla del sitio web. >>>>>>>>>>
//--------------------------------------------------------------------------------
//<br />
print ("Gracias por visitar nuestro sitio web");
?>
__________________ pm
Última edición por El Hombre Gris : 11-09-08 el 04:03 PM.
Motivo: usa el tag code!!!
|
| | | True Believer
Registración: Oct 2004
Mensajes: 5,320
| Re: formulario de contacto (PHP5) Usa el tag code!!! ( Si no lees esto, hay tabla)
¿Y el formulario? ¿Lo recibis por GET o por POST?
Me imagino que el problema es porque estas usando autoglobals (MAL!) y en PHP5 esto viene desactivado por default, aunque algunos hostings lo reactivan para evitar las quejas del seudoprogramadores. Lo correcto es usar $_GET, $_POST o $_COOKIE. |
| | | losin´ control
Registración: Feb 2004 Ubicación: la soledad
Mensajes: 1,250
| Re: formulario de contacto (PHP5) Citar:
Mensaje original enviado por El Hombre Gris Usa el tag code!!! ( Si no lees esto, hay tabla)
¿Y el formulario? ¿Lo recibis por GET o por POST?
Me imagino que el problema es porque estas usando autoglobals (MAL!) y en PHP5 esto viene desactivado por default, aunque algunos hostings lo reactivan para evitar las quejas del seudoprogramadores. Lo correcto es usar $_GET, $_POST o $_COOKIE. | cual es el tag code?
lo que le puse al formulario es POST y lo aclare arriba.
aca te paso el codigo de la pagina donde tengo el formulario.
como es lo de autoglobals? no se que es eso. por favor necesito que
este formulario me funciones, es muy simple el form, es solo nombre,
mail y comentario, y en la pagina aparece un gracias,
lo que me esta pasando es que el mail se me manda a mi casilla pero
me llega sin la info del que entró en la pagina a dejarme el mensaje,
me llega todo vacio...ej: nombre: .......(vacio), mail: ....(vacio) comentario:....(vacio).
y el mensaje que aparece en la pagina cuando completan el formulario y lo
envian es: No recipient addresses found in header Gracias por visitar nuestro sitio web
por favor, espero que me puedan ayudar, desde ya muchisimas gracias,
saludos,
Nicolás
pd: aca les dejo el codigo de mi fomulario: Código: <form action="enviar.php" method="post" enctype="multipart/form-data" name="form1" class="botoneslinksizqsintocar" id="form1">
<label>nombre
<input name="nombre" type="text" class="botoneslinksizqsintocar" id="nombre" onBlur="MM_validateForm('nombre','','R','mail','','NisEmail','comentario','','R');return document.MM_returnValue" size="16" />
</label>
<label>e-mail
<input name="mail" type="text" class="botoneslinksizqsintocar" id="mail" value="@" onblur="MM_validateForm('nombre','','R','mail','','RisEmail');return document.MM_returnValue" size="20" />
</label>
<p><label>comentario
<textarea name="comentario" cols="42" rows="2" class="botoneslinksizqsintocar" id="comentario"></textarea>
</label></p><br />
<p>
<label>
<input name="Submit" type="submit" class="nombreprofesoras" value="enviar" title="enviar"/>
</label>
e-mail: <span class="micorreo"><a href="mailto:info@globalelc.com.ar" class="micorreo" title="info@globalelc.com.ar">info@xxxx.com.ar</a></span>
</p>
</form>
__________________ pm
Última edición por Down in a Hole : 12-09-08 el 01:48 PM.
|
| | | Totalmente fumado
Registración: Mar 2003 Ubicación: Rosario
Mensajes: 4,669
| Re: formulario de contacto (PHP5) No pongas el tag label alrededor del input/textarea/etc al que pertenece, ponele un for="nombredelinput" al label. Por ejemplo: Código: <label for="mail">e-mail</label>
<input name="mail" type="text" class="botoneslinksizqsintocar" id="mail" value="@" onblur="MM_validateForm('nombre','','R','mail','','RisEmail');return document.MM_returnValue" size="20" /> Respecto a por qué no te anda, es porque estás usando autoglobals (que como dijo Gris está mal) y el hosting no lo debe tener habilitado. Para que te ande tenés que usar $_POST, por ejemplo: Código: $email = @$_POST['email'];
$comentario = @$_POST['comentario']; También te convendría validar los campos para que no sea vulnerable a email header injection (con lo que podrían mandar emails a cualquier lado desde tu formulario): http://www.jellyandcustard.com/2006/...ection-in-php/
Las funciones son: Código: /**
* Check single-line inputs:
* Returns false if text contains newline character
*/
function has_no_newlines($text)
{
return preg_match("/(%0A|%0D|\n+|\r+)/i", $text);
}
/**
* Check multi-line inputs:
* Returns false if text contains newline followed by
* email-header specific string
*/
function has_no_emailheaders($text)
{
return preg_match("/(%0A|%0D|\n+|\r+)(content-type:|to:|cc:|bcc:)/i", $text);
}
function validmail($mail)
{
if(preg_match("/^[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z]{2,4}$/i", $mail)) {
return true;
}
} |
| | | True Believer
Registración: Oct 2004
Mensajes: 5,320
| Re: formulario de contacto (PHP5) Citar:
Mensaje original enviado por Down in a Hole cual es el tag code? | [code]
tag de vbulletin para que el código se vea con formato adecuado |
| | | losin´ control
Registración: Feb 2004 Ubicación: la soledad
Mensajes: 1,250
| Re: formulario de contacto (PHP5) Citar:
Mensaje original enviado por krugonN No pongas el tag label alrededor del input/textarea/etc al que pertenece, ponele un for="nombredelinput" al label. Por ejemplo: Código: <label for="mail">e-mail</label>
<input name="mail" type="text" class="botoneslinksizqsintocar" id="mail" value="@" onblur="MM_validateForm('nombre','','R','mail','','RisEmail');return document.MM_returnValue" size="20" /> Respecto a por qué no te anda, es porque estás usando autoglobals (que como dijo Gris está mal) y el hosting no lo debe tener habilitado. Para que te ande tenés que usar $_POST, por ejemplo: Código: $email = @$_POST['email'];
$comentario = @$_POST['comentario']; También te convendría validar los campos para que no sea vulnerable a email header injection (con lo que podrían mandar emails a cualquier lado desde tu formulario): http://www.jellyandcustard.com/2006/...ection-in-php/
Las funciones son: Código: /**
* Check single-line inputs:
* Returns false if text contains newline character
*/
function has_no_newlines($text)
{
return preg_match("/(%0A|%0D|\n+|\r+)/i", $text);
}
/**
* Check multi-line inputs:
* Returns false if text contains newline followed by
* email-header specific string
*/
function has_no_emailheaders($text)
{
return preg_match("/(%0A|%0D|\n+|\r+)(content-type:|to:|cc:|bcc:)/i", $text);
}
function validmail($mail)
{
if(preg_match("/^[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z]{2,4}$/i", $mail)) {
return true;
}
} |
mil gracias por la ayuda!
a todos los espacios de texto...
mail, comentario, nombre y al boton de submit le
puse lo que me decis
<label for="mail">e-mail</label>
<label for="comentariol">comentariol</label>
<label for="nombre">nombre</label>
etc.
pero lo otro que me decis de globals no entiendo bien como hacerlo.
no se como aplicar lo que me decis al codigo que tengo, es mas creo
que va en el html, y no en el php, no?
disculpas por mi ignorancia, sencillamente necesito poder tener
este formulario simple funcionando, espero que me puedan ayudar,
muchisimas gracias nuevamente,
saludos,
Nicolás
pd: ahora el codigo de mi pagina html, quedó asi con las modificaciones
que me difiste del label, el dreamweaver me esta tirando unos errores
de javascript, no se porque, Código: <!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title> nombresitioweb capacitación en inglés para empresas</title>
<link href="estilos/tipografia.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div style="width:380px; height:180px;">
<form action="enviar.php" method="post" enctype="multipart/form-data" name="form1" class="botoneslinksizqsintocar" id="form1">
<label for="nombre">nombre</label>
<input name="nombre" type="text" class="botoneslinksizqsintocar" id="nombre" onBlur="MM_validateForm('nombre','','R','mail','','NisEmail','comentario','','R');return document.MM_returnValue" size="16" />
<label for="mail">e-mail</label>
<input name="mail" type="text" class="botoneslinksizqsintocar" id="mail" value="@" onblur="MM_validateForm('nombre','','R','mail','','RisEmail');return document.MM_returnValue" size="20" />
<p><label for="comentario">comentario</label>
<textarea name="comentario" cols="42" rows="2" class="botoneslinksizqsintocar" id="comentario"></textarea>
</p><br />
<p>
<label for="submit"></label>
<input name="Submit" type="submit" class="nombreprofesoras" value="enviar" title="enviar"/>
e-mail: <span class="micorreo"><a href="mailto:info@nombresitioweb.com.ar" class="micorreo" title="info@nombresitioweb.com.ar">info@nombresitioweb.com.ar</a></span>
</p>
</form>
</div>
</body>
</html>
__________________ pm |
| | | F = m * a
Registración: Mar 2007
Mensajes: 876
| Re: formulario de contacto (PHP5) Citar:
Mensaje original enviado por Down in a Hole pero lo otro que me decis de globals no entiendo bien como hacerlo.
no se como aplicar lo que me decis al codigo que tengo, es mas creo
que va en el html, y no en el php, no?
disculpas por mi ignorancia, sencillamente necesito poder tener
este formulario simple funcionando, espero que me puedan ayudar,
muchisimas gracias nuevamente, | Manual : http://ar.php.net/register_globals
Quick guide. En lugar de Código: $remite = "From: $nombre <$mail>"; va Código: $remite = "From: $_POST[nombre] <$_POST[mail]>";
__________________ Lo mejor es salir de la vida como de una fiesta, ni sediento ni bebido.
- Aristóteles - |
| | | Gracias IOmega666 :3
Registración: Apr 2003 Ubicación: Rosario
Mensajes: 4,864
| Re: formulario de contacto (PHP5) usá '' entre los corchetes por la remota posibilidad de que tengás una constante definida con el mismo nombre
$_POST['conchalora'] en vez de $_POST[conchalalora], porque si en algún lugar definiste una constante llamada conchalalora = cristina kirchner, PHP lo reemplazaría y buscaría $_POST[cristinakirchner], que por másque se vaya a la concha de la lora pero el php no te va a funcionar (pero el país capaz que sí quién sabe XD)
__________________ nosotros somos inmortales, somos gamers, tenemos muchas vidas, un gamer no muere, respawnea
Comunidad Gamer Argentina: facebook.com/group.php?gid=38506797092 |
| | | Totalmente fumado
Registración: Mar 2003 Ubicación: Rosario
Mensajes: 4,669
| Re: formulario de contacto (PHP5) Una cosita que me olvidé aclararte, los labels en submits generalmente no se ponen, ya que causan que al clickear el label se envíe el form automáticamente (sin apretar el botón se manda, con sólo clickear el texto del label).
Respecto a lo de PHP, podés hacer como te dijeron, sino arriba de todo, antes de empezar a usar las variables $nombre, etc., declaralas como te pusimos arriba (acordate de validar lo que ingresen): Código: <?php
//------------------------------------------------------------------------------
// el codigo que aparece a continuacion se envia al dueño del sitio web.
//------------------------------------------------------------------------------
$nombre = @$_POST['nombre'];
$comentario = @$_POST['comentario'];
$mail = @$_POST['mail'];
$destino = "niconicita@yahoo.com.ar"; //e-mail del dueño del sitio web al que le llegara el correo.
$asunto = "Lorena y Carina: les llegó un mail de su sitio web"; //este asunto/titulo del mail le llega al dueño del sitio web con los siguientes datos que aparecen abajo.
$mensaje = "Nombre: ".($nombre). "\n". "Mail: ".($mail). "\n". "hizo el siguiente comentario: ".($comentario);
$remite = "From: $nombre <$mail>";// aca en nombre aparecera el nombre ingresado por el que visito la pagina y envia el mensaje al dueño del sitio web.
mail ($destino, $asunto, $mensaje, $remite); // esto se ejecuta,manda mail al dueño de la pagina ("destino"), con el titulo "asunto",con el "mensaje" escrito por el que visita el sitio web y con el nombre del mismo (nombre del que "remite"=nombre del que manda el mensaje).
//---------------------------------------------------------------------------------
/* RESTO DEL PHP */ |
| | | True Believer
Registración: Oct 2004
Mensajes: 5,320
| Re: formulario de contacto (PHP5) Citar:
Mensaje original enviado por Gazer Manual : http://ar.php.net/register_globals
Quick guide. En lugar de Código: $remite = "From: $nombre <$mail>"; va Código: $remite = "From: $_POST[nombre] <$_POST[mail]>"; | Pequeña corrección Código: $remite = "From: {$_POST['nombre']} <{$_POST['mail']}>"; |
| | | Herramientas | | | | Modo de visualización | Modo Lineal |
Powered by vBulletin® Version 3.6.8 Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
Copyright 1999-2010 3DG - Desarollado por 3DGLabs |