[SOLUCIONADO] Problema con html (Formulario de contacto)

Iniciado por 808mafia, Octubre 07, 2015, 03:49:29 PM

Tema anterior - Siguiente tema

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

Octubre 07, 2015, 03:49:29 PM Ultima modificación: Noviembre 01, 2015, 02:56:39 PM por Expermicid
Hola tengo este codigo:
Código: html
<section id="footer">
<div class="container">
<header class="major">
<h2>Contact US</h2>
</header>
<form method="post" action="#">
<div class="row uniform">
<div class="6u 12u$(xsmall)"><input type="text" name="name" id="name" placeholder="Name" /></div>
<div class="6u$ 12u$(xsmall)"><input type="email" name="email" id="email" placeholder="Email" /></div>
<div class="12u$"><textarea name="message" id="message" placeholder="Message" rows="4"></textarea></div>
<div class="12u$">
<ul class="actions">
<li><input type="submit" value="Send Message" class="special" /></li>
</ul>
</div>
</div>
</form>
</div>


Que se supone que es un formulario de contacto:



Pero cuando intento enviar un mensaje me da error (405 Not Allowed) porque no se específica el correo receptor. ¿Pueden ayudarme? Estoy intentando aprender html pero voy muy lento  :-\

Saludos!


En el action debes especificar una hoja ( en la mayoría de los casos PHP) en tu caso hay un "#" lo que el formulario no tendrá ningún efecto.
Por otro lado la hoja a la que llames con el Action debe poder recibir los parámetros por el método POST ( como está definido en tu form) y posteriormente procesarlos.

Espero que te sirva :)!

Saludos!
Nivel 77 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
En el action debes especificar una hoja ( en la mayoría de los casos PHP) en tu caso hay un "#" lo que el formulario no tendrá ningún efecto.
Por otro lado la hoja a la que llames con el Action debe poder recibir los parámetros por el método POST ( como está definido en tu form) y posteriormente procesarlos.

Espero que te sirva :)!

Saludos!

Igualmente aunque pongas # no debería de hacer nada y no sacar el error 405

Saludos.



No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
En el action debes especificar una hoja ( en la mayoría de los casos PHP) en tu caso hay un "#" lo que el formulario no tendrá ningún efecto.
Por otro lado la hoja a la que llames con el Action debe poder recibir los parámetros por el método POST ( como está definido en tu form) y posteriormente procesarlos.

Espero que te sirva :)!

Saludos!

Hola. ¿Puedes ayudarme un poco más? Logro entender lo que dices pero que debo escribir en la otra hoja php para poder enviar el mensaje del formulario? Puedes pasarme un código? Y otra pregunta, no hay ninguna función como mailto para enviar mensajes?

Gracias.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
En el action debes especificar una hoja ( en la mayoría de los casos PHP) en tu caso hay un "#" lo que el formulario no tendrá ningún efecto.
Por otro lado la hoja a la que llames con el Action debe poder recibir los parámetros por el método POST ( como está definido en tu form) y posteriormente procesarlos.

Espero que te sirva :)!

Saludos!

Hola. ¿Puedes ayudarme un poco más? Logro entender lo que dices pero que debo escribir en la otra hoja php para poder enviar el mensaje del formulario? Puedes pasarme un código? Y otra pregunta, no hay ninguna función como mailto para enviar mensajes?

Gracias.

Ejemplo de código, contacto.php

Código: php

$nombre = $_POST['nombre'];
$email = $_POST['email'];
$mensaje = $_POST['mensaje'];
$para = '[email protected]';
$titulo = 'ASUNTO DEL MENSAJE';
$header = 'From:' . $email;
$msjCorreo = "Nombre: $nombre\n E-Mail: $email\n Mensaje:\n $mensaje";

if ($_POST['submit']) {
if (mail($para, $titulo, $msjCorreo, $header)) {
echo "Enviado";
} else {
echo "Falló el envio";
}
}
?>



Octubre 13, 2015, 10:30:30 PM #6 Ultima modificación: Octubre 14, 2015, 05:19:10 AM por blackdrake
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
En el action debes especificar una hoja ( en la mayoría de los casos PHP) en tu caso hay un "#" lo que el formulario no tendrá ningún efecto.
Por otro lado la hoja a la que llames con el Action debe poder recibir los parámetros por el método POST ( como está definido en tu form) y posteriormente procesarlos.

Espero que te sirva :)!

Saludos!

Hola. ¿Puedes ayudarme un poco más? Logro entender lo que dices pero que debo escribir en la otra hoja php para poder enviar el mensaje del formulario? Puedes pasarme un código? Y otra pregunta, no hay ninguna función como mailto para enviar mensajes?

Gracias.

Ejemplo de código, contacto.php

Código: php

<?php
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$mensaje = $_POST['mensaje'];
$para = '[email protected]';
$titulo = 'ASUNTO DEL MENSAJE';
$header = 'From:' . $email;
$msjCorreo = "Nombre: $nombre\n E-Mail: $email\n Mensaje:\n $mensaje";

if ($_POST['submit']) {
if (mail($para, $titulo, $msjCorreo, $header)) {
echo "Enviado";
} else {
echo "Falló el envio";
}
}
?>


Hola he copiado el codigo y he creado un archivo llamado contact.php después he modificado action vació "#" para llamar al php así "contact.php" pero cuando intento enviar un mensaje me lleva a la pagina php en formato de texto. Qué he hecho mal?

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

El código php va entre los siguientes "tags" <?php       ?>

Ej:

<?php echo "hola"; ?>

Si pones echo "hola"; te saldría en texto plano.

Mira a ver si lo tienes.

Saludos.



Tenés php instalado? Me suena que viene por ese lado.

Saludos!
WhiZ


@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta no me funciona, cuando hago click en "Enviar" me redirige a contact.php pero se queda todo en blanco.

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ¿Tengo que instalar php en el cPanel?

Hola,

Te dejo el código que suelo usar yo que siempre funciona...

Formulario HTML:

Código: html5
<form id="form1" name="form1" method="post" action="enviar.php">
<div class="col-sm-6 col-md-6 wow fadeInLeft" data-wow-delay="0.2s">
<div class="controls">
<input class="contact_input" type="text" name="Nombre" placeholder="Nombre">
<i class="fa fa-user"></i>
</div>
<div class="controls">
<input class="contact_input" type="text" name="Correo" placeholder="Email">
<i class="fa fa-envelope-o"></i>
</div>
<div class="controls">
<input class="contact_input" type="text" name="Telefono" placeholder="Teléfono">
<i class="fa fa-phone"></i>
</div>
</div>
<div class="col-sm-6 col-md-6 wow fadeInRight" data-wow-delay="0.2s">
<textarea name="Mensaje" rows="7" class="form-control" placeholder="Mensaje"></textarea>
</div>
<div class="col-sm-6 col-md-12 wow fadeInUp" data-wow-delay="0.5s">
<button type="submit" id="submit" class="btn btn-common">Enviar <i class="fa fa-rocket"></i></button>
</div>
</form>





enviar.php
Código: php
<?php
error_reporting(0);

$Nombre = $_POST['Nombre'];
$Correo = $_POST['Correo'];
$Mensaje = $_POST['Mensaje'];

if ($Nombre=='' || $Correo=='' || $Mensaje==''){

echo "<script>alert('Los campos marcados con * son obligatorios');location.href ='javascript:history.back()';</script>";

}else{

    date_default_timezone_set('America/Argentina/Buenos_Aires');
    require("includes/class.phpmailer.php");
    include("includes/class.smtp.php");
   
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch

$mail->IsSMTP(); // telling the class to use SMTP
$cuerpo="Nombre: ".$Nombre."<br />Email: ".$Correo."<br />Mensaje: ".$Mensaje."<br />";
try {
$mail->Host       = "mail.zerpens.com"; // SMTP server
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Port       = 25;                    // set the SMTP port for the GMAIL server
$mail->Username   = "[email protected]"; // SMTP account username
$mail->Password   = "PASSWORD";        // SMTP account password
$mail->AddReplyTo($Correo, $Nombre);
$mail->AddAddress('[email protected]', 'NOMBRE');
$mail->SetFrom("[email protected]", $Nombre);
$mail->IsHTML(true);
$mail->Subject = 'ASUNTO DEL MAIL';

$mail->MsgHTML($cuerpo);
$mail->AltBody = 'Nombre: '.$Nombre.' \n<br />'.
'Email: '.$Correo.' \n<br />'.
'Mensaje: '.$Mensaje.' \n<br />';
$mail->Send();
echo "<script>alert('Muchas gracias por contactarnos! Pronto recibirás una respuesta');location.href ='javascript:history.back()';</script>";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
}

?>


Recuerda poner las librerías que aparecen en los includes!

Saludos!
ANTRAX


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Hola,

Te dejo el código que suelo usar yo que siempre funciona...

Formulario HTML:

Código: html5
<form id="form1" name="form1" method="post" action="enviar.php">
<div class="col-sm-6 col-md-6 wow fadeInLeft" data-wow-delay="0.2s">
<div class="controls">
<input class="contact_input" type="text" name="Nombre" placeholder="Nombre">
<i class="fa fa-user"></i>
</div>
<div class="controls">
<input class="contact_input" type="text" name="Correo" placeholder="Email">
<i class="fa fa-envelope-o"></i>
</div>
<div class="controls">
<input class="contact_input" type="text" name="Telefono" placeholder="Teléfono">
<i class="fa fa-phone"></i>
</div>
</div>
<div class="col-sm-6 col-md-6 wow fadeInRight" data-wow-delay="0.2s">
<textarea name="Mensaje" rows="7" class="form-control" placeholder="Mensaje"></textarea>
</div>
<div class="col-sm-6 col-md-12 wow fadeInUp" data-wow-delay="0.5s">
<button type="submit" id="submit" class="btn btn-common">Enviar <i class="fa fa-rocket"></i></button>
</div>
</form>





enviar.php
Código: php
<?php
error_reporting(0);

$Nombre = $_POST['Nombre'];
$Correo = $_POST['Correo'];
$Mensaje = $_POST['Mensaje'];

if ($Nombre=='' || $Correo=='' || $Mensaje==''){

echo "<script>alert('Los campos marcados con * son obligatorios');location.href ='javascript:history.back()';</script>";

}else{

    date_default_timezone_set('America/Argentina/Buenos_Aires');
    require("includes/class.phpmailer.php");
    include("includes/class.smtp.php");
   
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch

$mail->IsSMTP(); // telling the class to use SMTP
$cuerpo="Nombre: ".$Nombre."<br />Email: ".$Correo."<br />Mensaje: ".$Mensaje."<br />";
try {
$mail->Host       = "mail.zerpens.com"; // SMTP server
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Port       = 25;                    // set the SMTP port for the GMAIL server
$mail->Username   = "[email protected]"; // SMTP account username
$mail->Password   = "PASSWORD";        // SMTP account password
$mail->AddReplyTo($Correo, $Nombre);
$mail->AddAddress('[email protected]', 'NOMBRE');
$mail->SetFrom("[email protected]", $Nombre);
$mail->IsHTML(true);
$mail->Subject = 'ASUNTO DEL MAIL';

$mail->MsgHTML($cuerpo);
$mail->AltBody = 'Nombre: '.$Nombre.' \n<br />'.
'Email: '.$Correo.' \n<br />'.
'Mensaje: '.$Mensaje.' \n<br />';
$mail->Send();
echo "<script>alert('Muchas gracias por contactarnos! Pronto recibirás una respuesta');location.href ='javascript:history.back()';</script>";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
}

?>


Recuerda poner las librerías que aparecen en los includes!

Saludos!
ANTRAX

Necesito una cuenta SMTP me podes recomendar algun sitio?

Gracias a todos.

Si tenes la de GMAIL, podes usarla sin problemas...

Server: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Puerto: 465
User: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Pass: tu_contraseña

Saludos!
ANTRAX


Octubre 15, 2015, 08:38:26 AM #13 Ultima modificación: Octubre 15, 2015, 08:41:00 AM por 808mafia
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Si tenes la de GMAIL, podes usarla sin problemas...

Server: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Puerto: 465
User: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Pass: tu_contraseña

Saludos!
ANTRAX

Hola ANTRAX! Te cuento: He compulado los archivos php class.phpmailer y class.smtp y los he metido en una carpeta llamada includes. Después yo quería mantener el código original:
Código: php
<h2>Contact</h2>
</header>
<form method="post" action="#">
<div class="row uniform">
<div class="6u 12u$(xsmall)"><input type="text" name="name" id="name" placeholder="Name" /></div>
<div class="6u$ 12u$(xsmall)"><input type="email" name="email" id="email" placeholder="Email" /></div>
<div class="12u$"><textarea name="message" id="message" placeholder="Message" rows="4"></textarea></div>
<div class="12u$">
<ul class="actions">
<li><input type="submit" value="Send Message" class="special" /></li>
</ul>
</div>
</div>
</form>
</div>
<footer>


Supongo que simplemente quitando ese # para llamar al archivo enviar.php puedo hacerlo pero para no hacerme más líos he decidido usar el código que me proporcionaste (Formulario HTML). Así que lo que hize fué remplazar el código original de contacto (expuesto arriba) por el tuyo. Después configuré la cuenta smtp con un correo de gmail pero cuando intento probar el formulario de contacto me sale esto y no se envía el mensaje:

Encima cualquiera que use el formulario de contacto puede ver la contraseña de la cuenta gmail usada como smtp xD!

En el archivo .zip tengo un archivo principal llamado index.html, el archivo enviar.php, una carpeta llamada includes que contiene los archivos  class.phpmailer y class.smtp, mis images y assets nada más. Joder, nunca pensé que habría tanto rollo para enviar un mensaje...  :-X

Emm... @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

PHP es un lenguaje de servidor, por tanto, no puedes ejecutarlo como lo estás ejecutando (de forma local)...

Si te fijas, en tu navegador dice No tienes permitido ver los links. Registrarse o Entrar a mi cuenta etc... debería ser algo como: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta o bien, localhost/send.php

Por tanto, necesitas subirlo a un servidor o bien, instalarte uno en tu equipo mediante wampp por ejemplo...

Saludos.



No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
PHP es un lenguaje de servidor, por tanto, no puedes ejecutarlo como lo estás ejecutando (de forma local)...

Exactamente. A eso me refería. Dije que no lo tenía instalado pero, en realidad, quise decir que no se estaba ejecutando como archivo php.

Seguro que eso resuelve todo.

Saludos!
WhiZ


Octubre 15, 2015, 12:39:29 PM #16 Ultima modificación: Octubre 15, 2015, 12:53:02 PM por 808mafia
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
PHP es un lenguaje de servidor, por tanto, no puedes ejecutarlo como lo estás ejecutando (de forma local)...

Exactamente. A eso me refería. Dije que no lo tenía instalado pero, en realidad, quise decir que no se estaba ejecutando como archivo php.

Seguro que eso resuelve todo.

Saludos!
WhiZ

Menudo fallo jeje. Os cuento: He subido los archivos en el cpanel, los he extraido y cuando me intento enviar un mensaje la pagina se queda conectando infinitamente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

He dejado de mi codigo tal como esta en el primer post y he remplazado # para llamar al archivo enviar.php. Después he modificado el archivo enviar.php remplazando $Nombre $Email y $Mensaje por $name $email y $message (que son las id del index original) pero cuando hago click en enviar la página se queda cargando infinitamente.

NOTA: Ahora voy a probar con el form de ANTRAX y comento.

EDITO: Ocurre lo mismo con el formulario de ANTRAX. Primero dice "Los campos marcados con * son obligatorios" a pesar de que relleno todos los campos, después si elimino la opción del teléfono cuando pulso enviar ya no salta el error * pero se queda cargando infinitamente y no se envía el mensaje.


Básicamente lo estás haciendo mal, el código es funcional, por tanto los subes mal.

Te recomiendo que leas o veas algún video sobre cosas básicas en php y de como subirlas a un servidor.

Saludos.



No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Básicamente lo estás haciendo mal, el código es funcional, por tanto los subes mal.

Te recomiendo que leas o veas algún video sobre cosas básicas en php y de como subirlas a un servidor.

Saludos.

Joder, tan tonto no soy hasta ahí llego. Sé subir los archivos a un servidor y lo hago bien, después extraigo los archivos y me funciona la web pero cuando intento enviar el mensaje la pagina se queda cargando y no hace nada!! No se cual sera el fallo? La plantilla html que me he descargado es esta: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Gracias por responder.