Foros del Web » Programando para Internet » PHP »

Problema con un formulario de correo

Estas en el tema de Problema con un formulario de correo en el foro de PHP en Foros del Web. Veréis, encargué hace un año a una empresa una web a medida para mi negocio y después de todo este tiempo me he dado cuenta ...
  #1 (permalink)  
Antiguo 05/02/2010, 04:36
 
Fecha de Ingreso: diciembre-2004
Mensajes: 79
Antigüedad: 19 años, 4 meses
Puntos: 0
Problema con un formulario de correo

Veréis, encargué hace un año a una empresa una web a medida para mi negocio y después de todo este tiempo me he dado cuenta de que el formulario de contacto que pusieron no funciona. Quitando temas legales y que la empresa dice que la "garantía" ya ha expirado quisiera poneros el código php del formulario para ver si detectáis algún error. Yo lo he mirado y la verdad es que no veo nada anormal, pero vamos, tampoco soy un experto.

Lo separo en dos trozos. Por un lado el código para determinar si los campos están rellenados correctamente y por otro lado el formulario propiamente dicho.

Código:
<script>
function elimina(obj){
	if(obj.value.indexOf('Escriba aq') == 0)
		obj.value="";
}

function borrar(){
	document.contacto.nombre.value="";
	document.contacto.email.value="";
	document.contacto.comentario.value="";
}
function validar(){
	var error = false;
	var error_msg = "Los siguientes campos fueron introducidos incorrectamente:\n";
	if (document.contacto.nombre.value.indexOf('Escriba aq') == 0 || document.contacto.nombre.value== ""){
		error = true;
		error_msg += "- Campo Nombre\n";
	}
	if (document.contacto.email.value.indexOf('Escriba aq') == 0 || document.contacto.email.value== ""){
		error = true;
		error_msg += "- Campo Email\n";
	}
	else if (document.contacto.email.value.indexOf('@') == -1 || document.contacto.email.value.indexOf('.') == -1 ){
		error = true;
		error_msg += "- Campo Email\n";
	}
	if (document.contacto.comentario.value.indexOf('Escriba aq') == 0 || document.contacto.comentario.value== ""){
		error = true;
		error_msg += "- Campo Comentario\n";
	}
	if (error)
		alert(error_msg);
	else
		document.contacto.submit();
}
</script>
Código:
<form name="contacto" id="contacto" method="post" action="?enviar=1">
      <table width="547" border="0" cellspacing="3" cellpadding="0">
        <tr>
          <td width="112" align="right" valign="top">Su nombre:</td>
          <td width="435"><input class="bordeado_azul" id="nombre" type="text" name="nombre" value="Escriba aquí su nombre" onClick="elimina(this)" size="33"/></td>
        </tr>
        <tr>
          <td align="right" valign="top">Su email:</td>
          <td><input class="bordeado_azul" name="email" id="email" type="text" value="Escriba aquí su email" onClick="elimina(this)" size="33" /></td>
        </tr>
        <tr>
          <td align="right" valign="top">Comentarios:</td>
          <td><textarea cols="88" rows="8" id="comentario" name="comentario" onClick="elimina(this)" class="bordeado_azul">Escriba aquí sus comentarios</textarea></td>
        </tr>
        <tr>
          <td colspan="2" align="right"><input class="sulete" name="borrar" type="button" value="Borrar"/>
            <input class="sulete" type="button" value="Enviar" onClick="validar()"/></td>
        </tr>
      </table>
    </form>
              <?
			if ($_GET['enviar'] == 1){
				$para = 'info@el**********i.com';
				$asunto = 'Formulario de contacto';
				$mensaje = '
				<table width="541" cellspacing="0" cellpadding="0" border="1">
					<tr>
             			<th width="114" valign="top" bgcolor="#E5EAF9" align="center" style="color:#FFF; text-align:center;" colspan="2">Contacto</td>
					</tr>
					<tr>
						<td>Nombre:</td><td>'.$_POST['nombre'].'</td>
					</tr>
					<tr>
						<td>Email:</td><td>'.$_POST['email'].'</td>
					</tr>
					<tr>
						<td style="text-align:center;" colspan="2">Comentario:</td>
					</tr>
					<tr>
						<td colspan="2">'.$_POST['comentario'].'</td>
					</tr>
				</table>
				';
				$cabeceras  = 'MIME-Version: 1.0' . "\r\n";
				$cabeceras .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
				$cabeceras .= 'From: Contacto <info@el*********i.com>' . "\r\n";
				//echo $mensaje;
				mail($para,$asunto,$mensaje,$cabeceras);
			}
      	?>
  </div>
Los asteriscos corresponden al correo electrónico donde debería recibir los comentarios.

Agradecido de antemano a quien pueda ayudarme.

Gracias.
  #2 (permalink)  
Antiguo 05/02/2010, 06:29
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Problema con un formulario de correo

tendrías que verificar la configuración del servidor, si es windows, debes de instalar y luego configurar un SMTP en el php.ini
  #3 (permalink)  
Antiguo 05/02/2010, 07:56
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: Problema con un formulario de correo

dunete:

Cita:
el formulario de contacto que pusieron no funciona
Lo que puedo observar es que el ->
action en tu formulario dice= ?enviar=1 y el ? no debe ir!!!!
Ya que cuando lo recibes esta como ->
$_GET['enviar'] == 1

Logicamente ?enviar No es Igual a enviar.

Saludos
Franco
  #4 (permalink)  
Antiguo 05/02/2010, 10:03
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Problema con un formulario de correo

Cita:
Iniciado por franco190453 Ver Mensaje
dunete:



Lo que puedo observar es que el ->
action en tu formulario dice= ?enviar=1 y el ? no debe ir!!!!
Ya que cuando lo recibes esta como ->
$_GET['enviar'] == 1

Logicamente ?enviar No es Igual a enviar.

Saludos
Franco
Esto es incorrecto.

El ? esta bien, ya que de esta manera esta enviando el formulario a la misma pagina, y enviandole como parametro enviar=1
Pones eso es lo mismo que action="scriptdelformulario.php?enviar=1" :teach:

Y pues eso, revisa la configuracion del servidor de correo.

Tambien puedes probar verificando el valor que devuelve mail(), que es false si falla al enviar el mail al servidor de correo
  #5 (permalink)  
Antiguo 05/02/2010, 10:48
 
Fecha de Ingreso: diciembre-2004
Mensajes: 79
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: Problema con un formulario de correo

el problema es que el servidor funciona correctamente. Si mando correos sin usar el formulario, llegan bien.
  #6 (permalink)  
Antiguo 05/02/2010, 11:15
 
Fecha de Ingreso: mayo-2009
Ubicación: Fuerteventura
Mensajes: 324
Antigüedad: 15 años
Puntos: 19
Respuesta: Problema con un formulario de correo

Hola! soy novato con esto pero el formulario envía los datos con post y abajo en el concional lo comprueba con GET.

Cambía esta linea:

Código PHP:
Ver original
  1. if ($_GET['enviar'] == 1){

Por esta:

Código PHP:
Ver original
  1. if ($_POST['enviar'] == 1){

Salud!
  #7 (permalink)  
Antiguo 05/02/2010, 11:17
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Problema con un formulario de correo

Cita:
Iniciado por AlbertoGarcia Ver Mensaje
Hola! soy novato con esto pero el formulario envía los datos con post y abajo en el concional lo comprueba con GET.

Cambía esta linea:

Código PHP:
Ver original
  1. if ($_GET['enviar'] == 1){

Por esta:

Código PHP:
Ver original
  1. if ($_POST['enviar'] == 1){

Salud!
No, la condicaion esta bien, en el action del formulario le envia el parametro enviar por la url.
  #8 (permalink)  
Antiguo 06/02/2010, 04:30
 
Fecha de Ingreso: diciembre-2004
Mensajes: 79
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: Problema con un formulario de correo

bueno, gracias a todos. De momento no soluciono nada de nada :D

quizás coja un script ya montado y sustituya el formulario que me hicieron por uno que realmente funcione
  #9 (permalink)  
Antiguo 06/02/2010, 04:48
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Respuesta: Problema con un formulario de correo

loading............


como saber si el formulario llega al proceso de envió?

fácil

Código PHP:
if ($_GET['enviar'] == 1){
   
print_r("blaBLa");
   
print_r($_POST);
   
$para 'info@el**********i.com'
si obtienes resultados ahí y el mail no envía, entonces pasas a verificar el código del mail. Puedes probar usando mail() con valores puestos manualmente.

Todo está en saber buscar un posible error.


connection closed.
__________________

Maborak Technologies

Etiquetas: correo, formulario
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:40.