Volver 3DG > Informática y Tecnología > Software > Programación
FAQ Listar Miembros

Programación >  

formulario de contacto (PHP5)

Participa en el tema formulario de contacto (PHP5) en el foro Programación




Discusión cerrada
 
LinkBack (3) Herramientas Modo de visualización
Viejo 11-09-08, 01:18 PM   #1
losin´ control
 
Avatar de Down in a Hole
 
Registración: Feb 2004
Ubicación: la soledad
Mensajes: 1,250
Question 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&ntilde;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!!!
Down in a Hole está desconectado  
Viejo 11-09-08, 04:07 PM   #2
True Believer
 
Avatar de El Hombre Gris
 
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.
El Hombre Gris está conectado  
Viejo 12-09-08, 11:38 AM   #3
losin´ control
 
Avatar de Down in a Hole
 
Registración: Feb 2004
Ubicación: la soledad
Mensajes: 1,250
Re: formulario de contacto (PHP5)

Citar:
Mensaje original enviado por El Hombre Gris Ver Mensaje
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>&nbsp;
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.
Down in a Hole está desconectado  
Viejo 12-09-08, 02:45 PM   #4
Totalmente fumado
 
Avatar de brott
 
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;
}
}
brott está desconectado  
Viejo 12-09-08, 05:52 PM   #5
True Believer
 
Avatar de El Hombre Gris
 
Registración: Oct 2004
Mensajes: 5,320
Re: formulario de contacto (PHP5)

Citar:
Mensaje original enviado por Down in a Hole Ver Mensaje
cual es el tag code?
[code]

tag de vbulletin para que el código se vea con formato adecuado
El Hombre Gris está conectado  
Viejo 15-09-08, 07:38 PM   #6
losin´ control
 
Avatar de Down in a Hole
 
Registración: Feb 2004
Ubicación: la soledad
Mensajes: 1,250
Re: formulario de contacto (PHP5)

Citar:
Mensaje original enviado por krugonN Ver Mensaje
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>&nbsp;nombresitioweb capacitaci&oacute;n en ingl&eacute;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"/>
&nbsp;
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
Down in a Hole está desconectado  
Viejo 15-09-08, 08:13 PM   #7
F = m * a
 
Avatar de Gazer
 
Registración: Mar 2007
Mensajes: 876
Re: formulario de contacto (PHP5)

Citar:
Mensaje original enviado por Down in a Hole Ver Mensaje
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 -

Gazer está desconectado  
Viejo 15-09-08, 10:03 PM   #8
Gracias IOmega666 :3
 
Avatar de LuiGGi
 
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
LuiGGi está desconectado  
Viejo 15-09-08, 10:53 PM   #9
Totalmente fumado
 
Avatar de brott
 
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&ntilde;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 */
brott está desconectado  
Viejo 15-09-08, 11:31 PM   #10
True Believer
 
Avatar de El Hombre Gris
 
Registración: Oct 2004
Mensajes: 5,320
Re: formulario de contacto (PHP5)

Citar:
Mensaje original enviado por Gazer Ver Mensaje
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']}>";
El Hombre Gris está conectado  

Discusión cerrada


Herramientas
Modo de visualización


LinkBacks (?)
LinkBack a este Tema: http://foros.3dgames.com.ar/programacion.97/481906.formulario-contacto-php5.html

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