problema con mi formulario

Iniciado por estebanjd, 6 Noviembre 2011, 02:17 AM

0 Miembros y 1 Visitante están viendo este tema.

estebanjd

Buenas gente, soy novato en esto de php y queria saber porque no me funciona el formulario (segui el tutorial al pie de la letra de una pagina)

Mi html es asi:

Código (html) [Seleccionar]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css" >
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>Dreamon</title></head>
<body>
<body background=backgrund.png>
<center>
<br>

<form id="form1" name="form1" method="post" action="enviar.php">
<input type="text" name="name" value="Ingrese su nombre" id="nombre"/>
      <input type="email" name="email" value="Inserte su email" id="email" />
      <input type="text" name="contraseña" value="Código" id="codigo" />
<br>
<br>
      <input type="submit" name="boton" id="boton" class='boton' value="Enviar" />
    </form>


</center>
</body></html>





La accion se llama enviar.php, lo cual hice un archivo llamado "enviar.php" que contiene lo siguiente


Código (php) [Seleccionar]
<? php

$nombre = $_POST['nombre'];
$mail = $_POST['email'];

$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje = "Este mensaje fue enviado por " . $nombre . "\r\n";
$mensaje .= "Su e-mail es: " . $email . " \r\n";
$mensaje .= "Mensaje: " . $_POST['codigo'] . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());

$para = 'mimail@hotmail.com';
$asunto = 'Probando form php';

mail($para, $asunto, utf8_decode($mensaje), $header);

echo 'se envio...';

?>


Cuando hago click en el boton, me envia a la pagina/enviar.php, y me muestra el código, y no me llega el mail... cabe destacar que lo probe tambien utilizando el servidor local con xamp y tampoco anduvo :( alguien sabe que puede pasar ?

2Fac3R

Segun tengo entendido en local no funciona, entonces lo tendras que probar en algun hosting, aparte al principio tienes "<? php" eso es incorrecto, seria "<?php" o simplemente "<?".

Zalu2
Escuela de Hackers & Programación. http://ihackndev.blogspot.com/

s00rk

Cita de: 2Fac3R en  6 Noviembre 2011, 06:27 AM
Segun tengo entendido en local no funciona, entonces lo tendras que probar en algun hosting, aparte al principio tienes "<? php" eso es incorrecto, seria "<?php" o simplemente "<?".

Zalu2

Lo del <? php si lo tuviera mal le marcaria error en la web, asi que a como lo veo lo que sucede es que
1.- Lo guardo con otra extension
2.- No corre PHP

y mas probable la 2, porque en el html lo manda al php y lo lee, pero por alguna razon le muestra el contenido y no lo que deberia o si fuera la casualidad tambien que si lo codea con dreamweaver que lo haya colocado en la sección de diseño y pues lo puso como html accidentalmente, son las razones que pienso que podrian ser jejeje

Sobre lo de mail eso si solo en hosting funciona a menos que lo configures en tu servidor, o usar PHPMailer

Carluís

#3
Al parecer te estas complicando la vida con X-Mailer, prueba utilizar la función Mail en php, puedes utilizar un código como el siguiente:

<?php
if(isset($_POST['enviar'])) //Preguntamos si se presiono el boton de submit
{
     
//Recibimos las variables
     
$recipiente $_POST['recipiente']; 
     
$asunto $_POST['asunto'];
     
$mensaje $_POST['mensaje'];

     
$encabezado 'MIME-Version: 1.0' "\r\n";
     
$encabezado .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
     
$encabezado .= 'From: Carluís <Carluis@hotmail.com>' "\r\n";

     
// (substr_count) cuenta dentro de la frase o palabra almacenada en la variable si, existe '@' solo debe haber uno.
     // se le pone @ adelante del substr_count para ignorar los errores.

     
if(@substr_count($recipiente,'@') == 1){ // Validacion de correo escrito correctamente
          
if($asunto == '' or $mensaje == '' or  $recipiente == '' // Validacion de campos sin rellenar
          
{
               echo 
'<strong>Campos vacios, por favor llene los campos</strong>';
          }
          else
          {
               
mail($recipiente$asunto$mensaje$encabezado);
               echo 
"<strong>Se envio correctamente</strong>";
          }
     }
     else
     {
          echo 
"<strong>Email es incorrecto</strong>";
     }
}
?>


Reemplazando el código anterior del enviar.php, y cambiando los valores y variables en tu caso:

$nombre = $_POST['nombre'];
$mail = $_POST['email'];


Cambialos por

//Recibimos las variables
$recipiente = $_POST['recipiente'];
$asunto = $_POST['asunto'];
$mensaje = $_POST['mensaje'];


Adapta tu formulario al código que te deje, para más información puedes mirar una introducción a la función Mailer
Desarrollo Web, Blogging, Diseño: http://onsoni.blogspot.com

estebanjd

Gracias Carluis, lo voy a probar y te informo el resultado :)

estebanjd

Sigue pasando lo mismo, no se que puede pasar :S no podrias pasarme un programa que estes seguro que ande y lo pruebo de nuevo aqui ?, gracias

2Fac3R

Si estas en linux tendrias que activar el servicio (puede ser que lo tengas desactivado) por ejemplo con xampp:

Código (bash) [Seleccionar]
/opt/lampp/lampp start

Trata con algo simple como mostrar en pantalla para ver si esta correcto.

Código (html4strict) [Seleccionar]
<form action="process.php" method="POST">
<input type="text" name="prueba">
<input type="submit">
</form>


process.php

Código (php) [Seleccionar]
<?php
echo "Mensaje: ".$_POST[`prueba'];
?>


Si esto te funciona, entonces es problema del mailer, como se te ha dicho no funciona en local, prueba en hosting online.

Espero haberte ayudado.
Zalu2
Escuela de Hackers & Programación. http://ihackndev.blogspot.com/

estebanjd

Creeria que si, el problema que me tiro es este:



Notice: Undefined index: nombre in C:\xampp\htdocs\enviar.php on line 3

Notice: Undefined index: codigo in C:\xampp\htdocs\enviar.php on line 5

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\enviar.php on line 14
Se envio correctamente




2Fac3R

Puede ser problema que no tengas puerto, o simplemente no tengas servicio de SMTP (protocolo de correo) y es por eso que no lo envia, sigo diciendo, prueba en un hosting...
Escuela de Hackers & Programación. http://ihackndev.blogspot.com/

Carluís

Amigo el código o programa como le llamaste que te proporcione funciona perfectamente, el error que genera te lo dice todo "Fallo la conexión con mailserver verifica SMTP" no tienes el servicio, prueba en un diferente host o comunícate con tu proveedor de servicios.

Saludos.
Desarrollo Web, Blogging, Diseño: http://onsoni.blogspot.com