Foros del Web » Programando para Internet » PHP »

Funcion mail desobediente.

Estas en el tema de Funcion mail desobediente. en el foro de PHP en Foros del Web. Hola a todos. Vereis, tengo un problema con un formulario de envio de datos por email. El usuario tiene que rellenar el formulario, y este ...
  #1 (permalink)  
Antiguo 03/12/2009, 09:42
c0c
 
Fecha de Ingreso: octubre-2004
Mensajes: 38
Antigüedad: 19 años, 6 meses
Puntos: 0
Funcion mail desobediente.

Hola a todos.

Vereis, tengo un problema con un formulario de envio de datos por email.
El usuario tiene que rellenar el formulario, y este debe ser enviado a una direccion de correo.

Hasta ahi todo normal, lo que sucede es que cuando relleno los datos y pulso enviar, en realidad, no hace nada de esto. Ni envia los datos, ni imprime un mensaje de agradecimiento, ni nada. Simplemente el formulario se resetea, y ya esta.

Pego el codigo para que podais echarle un ojo, no soy experto en php (estoy aprendiendo y no se ni lo basico!), pero me parece que el codigo esta bien.

¿Podria ser este problema, fruto de una mala configuracion del hosting (remoto, no tengo instalado un servidor local)

En fin, pego el codigo (he recortado parte del formulario porque es bastante largo)


Código PHP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<?php
if(isset($submit)):
    
$to "miemail";
    
$subject "Informacion para el sitio web";
    
$body "un usuario ha introducido daos en el sitio web\n";
    
    
$body .= "Nuevo lugar añadido\n\n";
    
$body .= $nombre;
    
$body .= $horario;
    
$body .= $diadescanso;
    
$body .= $direccion;
    
    
mail($to$subject$body);
    print(
"<h2>Gracias por enviar los datos</h2>");
else:
?>
<form action="index.php" method="post">

<table width="574" border="1">
  <tr>
    <td width="220">Nombre del local</td>
    <td width="338"><input type="text" name="nombre" /></td>
  </tr>
  <tr>
    <td>Horario comercial y dias de cierre</td>
    <td><input type="text" name="horario" />
      
      <select name="diadescanso" >
        <option disabled="true">Dia de descanso</option>
        <option value="ninguno">Ninguno</option>
        <option value="lunes">Lunes</option>
        <option value="martes">Martes</option>
        <option value="miercoles">Miercoles</option>
        <option value="jueves">Jueves</option>
        <option value="viernes">Viernes</option>
        <option value="sabado">Sabado</option>
        <option value="domingo">Domingo</option>
      </select>
      </td>
  </tr>
  <tr>
    <td>Direccion local</td>
    <td><input type="text" name="direccion" /></td>
  </tr> 
</table>

<input type="submit" value="Enviar" name="submit">
</form>

    <?
    
endif;
    
?>

</body>
</html>
Aqui esta. Espero que alguien pueda echarme una mano, porque me estoy volviendo loco a hacer modificaciones, subirlas, y ver que no funcionan.

Muchas gracias por vuestro tiempo.

Alberto.
  #2 (permalink)  
Antiguo 03/12/2009, 09:44
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Funcion mail desobediente.

$nombre; <-- donde obtienes el contenido de esa variable?
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 03/12/2009, 09:46
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: Funcion mail desobediente.

$submit no esta definida (a menos que tuvieras activado register_globlas, que de todos modos no se recomienda) debes asignarla con $_POST['submit'] (o usar esta ultima directo en el if)

Y lo mismo para los demas campos del formulario
  #4 (permalink)  
Antiguo 03/12/2009, 09:48
 
Fecha de Ingreso: octubre-2009
Mensajes: 125
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Funcion mail desobediente.

Si mal no recuerdo porque yo tambien soy aprendiz de php
en la funcion mail va
mail(para,asunto,mensaje,cabezeras)
yo lo hago asi
mail($para, $asunto, utf8_decode($mensaje), $header);
  #5 (permalink)  
Antiguo 03/12/2009, 09:55
c0c
 
Fecha de Ingreso: octubre-2004
Mensajes: 38
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Funcion mail desobediente.

Hidek1:
$nombre;
viene de
Código HTML:
<td width="220">Nombre del local</td>
    <td width="338"><input type="text" name="nombre" /></td> 
darkasecas:
He metido $_POST['submit'] despues del if, pero sigue sin funcionarme.

Significa eso que debo añadir $_POST['variable'] de todos los campos de formulario? De ser asi, me puedes poner un ejemplo de en que lugar deberia ir?
Muchas gracias
  #6 (permalink)  
Antiguo 03/12/2009, 09:57
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: Funcion mail desobediente.

$variable=$_POST['variable'];
_antes_ del if
  #7 (permalink)  
Antiguo 03/12/2009, 09:57
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Funcion mail desobediente.

ermm pero no deberias tomar la variable de post para que te tome eso?
$nombre = $_POST["nombre"];
__________________
More about me...
~ @rhyudek1
~ Github
  #8 (permalink)  
Antiguo 03/12/2009, 10:24
c0c
 
Fecha de Ingreso: octubre-2004
Mensajes: 38
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Funcion mail desobediente.

Creeis que deberia ser asi? Lo siento, me siento muy torpe y no logro hacerlo funcionar.
Código PHP:
<body>
<?php
$submit
=$_POST['submit'];
$subject=$_POST['subject'];
$body=$_POST['body'];
$to=$_POST['to'];

$nombre=$_POST['nombre'];
$horario=$_POST['horario'];
$diadescanso=$_POST['diadescanso'];


if(isset(
$submit)):
    
$to "[email protected]";
    
$subject "Informacion para el sitio web";
    
$body "un usuario ha introducido daos en el sitio web\n";
    
    
$body .= "Nuevo lugar añadido\n\n";
    
$body .= $nombre;
    
$body .= $horario;
    
$body .= $diadescanso;

    
    
mail($to$subject$body);
    print(
"<h2>Gracias por enviar los datos</h2>");
else:
?>
<form action="index.php" method="post">...</form>
 
<?
endif;
?>
Muchas gracias por vuestra ayuda
  #9 (permalink)  
Antiguo 03/12/2009, 10:42
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: Funcion mail desobediente.

Esta bien, menos las lineas
$subject=$_POST['subject'];
$body=$_POST['body'];
$to=$_POST['to'];
que no son campos del formulario.

Deberia funcionar, sigue sin entrar al if/imprimir el mensaje?

prueba imprimiendo el contenido de $_POST
print_r($_POST)
igual antes del if, para ver si estan llegando bien los datos
  #10 (permalink)  
Antiguo 03/12/2009, 18:30
c0c
 
Fecha de Ingreso: octubre-2004
Mensajes: 38
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Funcion mail desobediente.

Hola Darkasecas.

Acabo de llegar hace poco a casa, y he probado tal y como tu dices. He eliminado las variables que sobraban, y he vuelto a probar. No ha dado resultado. He añadido la función que tu has nombrado, para comprobar si llegan los datos, y el formulario sigue sin obedecer. Si no me equivoco, al poner la función print, debería haberme mostrado en esa misma pagina, los datos que contiene el formulario una vez rellenado, ¿no es así?.

Sigue sin hacer nada. Antes, un conocido me ha dicho que puede ser por el method="post" del formulario. ¿puede tener esto algo que ver?.

Muchas gracias.
  #11 (permalink)  
Antiguo 03/12/2009, 18:40
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 19 años
Puntos: 0
Respuesta: Funcion mail desobediente.

El action de tu form apunta a index.php, la pagina que estas usando se llama index.php?
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #12 (permalink)  
Antiguo 03/12/2009, 19:32
c0c
 
Fecha de Ingreso: octubre-2004
Mensajes: 38
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Funcion mail desobediente.

Si, por supuesto. Eso es lo primero que comprobé.

La verdad es que he probado otros scripts de envio de formulario, y ninguno me ha funcionado. Quizá sea problema del servidor, no se.

Hay alguna función que me remita la configuración del modulo php que tengo en el hosting? El espacio me lo ha cedido un amigo temporalmente.
  #13 (permalink)  
Antiguo 04/12/2009, 16:45
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: Funcion mail desobediente.

phpinfo .
  #14 (permalink)  
Antiguo 04/12/2009, 17:37
 
Fecha de Ingreso: julio-2009
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Funcion mail desobediente.

el archivo del que pones el codigo es el index.php ?
  #15 (permalink)  
Antiguo 07/12/2009, 08:43
c0c
 
Fecha de Ingreso: octubre-2004
Mensajes: 38
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Funcion mail desobediente.

Muchas gracias a todos, al final lo he podido solucionar poniendo esto justo antes del formulario:
Código PHP:
<?php
if (!$_POST){
?>
y metiendo las varibles encadenadas dentro del "else".
  #16 (permalink)  
Antiguo 01/04/2010, 11:00
Avatar de dario_sanz  
Fecha de Ingreso: marzo-2010
Mensajes: 94
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Funcion mail desobediente.

Hola, puedes poner el script completo por que yo tengo el mismo problema y no encuantro la solcucion, o por lo menos expliame un poco mas sobre lo que has hecho para que te funcione esa funcion mail()...pliss
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 22:51.