Formulario con PHP
Hola, es mi primer mensaje en el foro de domestika. soy Alex un estudiante de diseño gráfico que está montándose su web como buenamente puede.
Tengo una gran duda. mis conocimientos sobre HTML/CSS/PHP son nulos/escasos. He hecho esta web: www.alexbailon.com , como buenamente he podido, pero he llegado a tal punto de desesperación que recurro a vosotros a ver si me podéis echar un cable.
La web está hecha sobre la estructura de una plantilla. En la misma plantilla venía un formulario ya creado en html y .js. Lo único que en la parte donde llamas al Value="send.php" éste archivo viene vacío. Supongo/deduzco que hay que escribir en php la formula para que coja información introducida en el formulario de la html y en el .js, y me la envíe al mail.
Pues después de estar semanas leyendo por internet tutoriales soy INCAPAZ de hacer que me funcione. He llegado a lograr que me envíe el mensaje, pero me lo envía vacío, sin la información que yo he escrito como prueba.
¿Alguien entendido en php, me puede echar una mano? estoy desesperado, ya que recurrí ha todo tipo de ayuda y nadie es capaz de decirme como se hace.
Supongo que será laborioso, así que me comprometo a ayudar (en lo que mis conocimientos me lo permitan) a todo aquel que me pueda ayudar, ya que se lo que cuesta ayudar desinteresadamente a la gente.
PD: En la web, no he incluido el formulario, ya que como he dicho no me funciona. Pero os enviaría al mail o donde queráis la parte html y el .js correspondiente al formulario para que le echéis una ojeada.
Un saludo y muchas gracias.
cloudstudio
Hola Alex, Bienvenido.
Te voy a pasar una clase que uso yo , y te explico como implementarla.
Veo que usas un landing page, asi que esto lo metes en el index.
Lo primero, cambiale el nombre al index.html por index.php.
en la primera linea del archivo copias esto
<?php
class correo{
var $destinatario;
var $remitente;
var $asunto;
var $mensaje;
function enviar() {
$headers = "From: ".$this->remitente."\r\nReply-To: ". $this->remitente;
ob_start();
$message = ob_get_clean();
$mail_sent = @mail( $this->destinatario, $this->asunto, $this->mensaje, $headers );
}
}
if(isset($_POST['submit'])){
$email = $_POST['email'];
$asunto = $_POST['asunto'];
$contenido = $_POST['contenido'];
$g = new correo();
$g->destinatario = 'tucorreo@loquesea.com';
$g->remitente = $email;
$g->asunto = $asunto;
$g->mensaje = $contenido;
$g->enviar();
}
?>
Y esto es el formulario en si
<form action="" method="post" enctype="multipart/form-data" >
<input id="email" name="email" type="text" placeholder="email" class="" />
<input id="asunto" name="asunto" type="text" placeholder="asunto" class="" />
<input id="contenido" name="contenido" type="text" placeholder="contenido" class="" />
<input type="submit" class="" value="Enviar" name="submit" />
</form>
Lo e escrito directamente aquí, pero vamos creo que en un principio debe funcionar perfectamente.
Ahora ya con eso funcionando, dale los estilos, mira si quieres hacer una validacion etc, ahora te puedes complicar todo lo que quieras, un saludo.
alex_bailon
Muchas gracias por la pronta respuesta Cuviline.
Por lo que comentas que meta primero en el index.html podría meterlo en el archivo send.php que ya tengo creado verdad? dándole el valor "action="/send.php". no?
cloudstudio
Si, sin problemas pero el send.php sin el /
alex_bailon
Cuviline
Ok, Voy a probar a ver,muchas gracias!!!
alex_bailon
He probado lo que me has dicho y nada. No me sale, soy un negado.
Verás yo ahora mismo tengo esto en el html:
<form method="post" action="./contact.php.html" name="contactform" id="contactform" />
<div class="left">
<label for="name" accesskey="U"><span class="required">*</span> Nombre</label>
<input name="name" type="text" id="name" size="30" value="Escriba aquí su nombre" />
<label for="email" accesskey="E"><span class="required">*</span> Email</label>
<input name="email" type="text" id="email" size="30" value="No se olvide del Correo" />
<label for="email" accesskey="S"><span class="required">*</span> Asunto</label>
<input name="subject" type="text" id="subject" size="30" value="¿Que es lo que desea?" />
</div>
<div class="right">
<label for="comments" accesskey="C"><span class="required">*</span> Mensaje</label>
<textarea name="comments" cols="40" rows="3" id="comments" >Pregunte sin compromiso</textarea>
<label for="verify" accesskey="V">3 + 1 =</label>
<input name="verify" type="text" id="verify" size="3" value="" />
<input type="submit" class="submit" id="submit" value="Submit" />
</div>
</form>
y esto en el .js:
jQuery(document).ready(function(){
$('#contactform').submit(function(){
var action = $(this).attr('action');
$("#message").slideUp(750,function() {
$('#message').hide();
$('#submit')
.after('<img src="images/ajax-loader.gif" class="loader" />')
.attr('disabled','disabled');
$.post(action, {
name: $('#name').val(),
email: $('#email').val(),
subject: $('#subject').val(),
comments: $('#comments').val(),
verify: $('#verify').val()
},
function(data){
document.getElementById('message').innerHTML = data;
$('#message').slideDown('slow');
$('#contactform img.loader').fadeOut('slow',function(){$(this).remove()});
$('#contactform #submit').attr('disabled','');
if(data.match('success') != null) $('#contactform').slideUp('slow');
}
);
});
return false;
});
});
Y aparte tengo el contact.php vacío.
cloudstudio
Vale, mete esto dentro de contact.php
Literal :
<?php
class correo{
var $destinatario;
var $remitente;
var $asunto;
var $mensaje;
function enviar() {
$headers = "From: ".$this->remitente."\r\nReply-To: ". $this->remitente;
ob_start();
$message = ob_get_clean();
$mail_sent = @mail( $this->destinatario, $this->asunto, $this->mensaje, $headers );
}
}
if(isset($_POST['submit'])){
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$comments = $_POST['comments'];
$g = new correo();
$g->destinatario = 'tucorreo@loquesea.com';
$g->remitente = $email;
$g->asunto = $subject;
$g->mensaje = $comments;
$g->enviar();
}
?>
El html que tienes esta bien, solo cambia la primera linea por esto :
<form method="post" action="contact.php" name="contactform" id="contactform" />
mete el archivo contact.php en la misma carpeta que tienes el index.html.
Deberia funcionar perfectamente, prueba y me cuentas, un saludo.
alex_bailon
Cuviline
No funciona. Antes salía una barra como de progreso cuando le daba a enviar. ahora no sale eso y no se envía nada. he cambiado el mail en donde me ponías "tucorreo@loquesea.com" y nada, no funciona.
:(
cloudstudio
enviame un correo con el ftp y te lo miro
cloudstudio
Pues estaba todo correcto, lo que pasa que al copiar el codigo lo copiaste con codigos html <p> <br /> etc, no se que editor.
El unico problema que he visto es que para que funcione , tienes que elimiar el javascript del formulario, porque es incompatible con el codigo que te he pasado, lo que hay ahi escrito funcionaba para el contact.php que hubiera antes.
Si eliminas el archivo js y haces una prueba veras como funciona, un saludo.
alex_bailon
Efectivamente, hice lo que me dijiste y funciona perfectamente!!! por fin me llegan los correos :D
Muchas gracias, de veras!!!! llevaba mucho tiempo queriendo tener un formulario y por fin está operativo! Gracias de veras!!!
cloudstudio
De nada, ahora ya te digo, puedes complicarlo un poco mas mirando por internet, para ponerle efectos, validación y demás. un saludo.
alex_bailon
Cuviline