Autor Tema: Formulario  (Leído 206 veces)

venecox

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Formulario
« : 25 de Mayo 2019, 15:37 »
Hola a tod@s, soy novato y estoy intentando hacer funcionar un formulario del cual no consigo recibir la informacion por email, el html seria el siguiente...

<form id="form">
<div class="success_wrapper">
<div class="success">Su consulta ha sido enviada!<br>
<strong>Entraremos en contacto a la mayor brevedad posible.</strong> </div></div>
<fieldset>
<label class="name">
<input type="text" value="Nombre:" name="name">
<br class="clear">
<span class="error error-empty">*Nombre inválido.</span><span class="empty error-empty">*Campo necesario.</span> </label>
<label class="email">
<input type="text" value="email:" name="email">
<br class="clear">
<span class="error error-empty">*email inválido.</span>
<span class="empty error-empty">*Campo necesario.</span> </label>
<label class="message">
<textarea name="message">Mensaje:</textarea>
<br class="clear">
<span class="error">*El mensaje es muy corto.</span> <span class="empty">*Campo necesario.</span> </label>
<div class="clear"></div>
<div class="btns"><a data-type="submit" class="link1">Enviar.</a>
<div class="clear"></div>
</div></fieldset>
</form>

Podeis decirme si esta bien, si le falta algo o hay algun error?

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2488
    • Ver Perfil
Re:Formulario
« Respuesta #1 : 27 de Mayo 2019, 20:50 »
Buenas venecox, para poner título a los temas mírate el hilo https://aprenderaprogramar.com/foros/index.php?topic=1460.0 e intenta poner los títulos como se indica ahí (evitar por ejemplo un título de una sola palabra porque no ayuda en nada a localizar o resolver el tema). Mira también cómo pegar código en los foros para que quede con formato de código.

El código que has pegado supongo que está dentro de un código más amplio y habría que ver otras cuestiones (como el JavaScript que pueda tener asociado) para valorarlo. A simple vista se ven cosas un tanto extrañas como que el form no tenga un action definido y la mezcla de mensajes de validación con campos de petición de datos. Tampoco parece código HTML bien construido, por ejemplo los label englobando otras varias etiquetas y otras cuestiones como el uso de br.

Si lo que pretendes es el envío de un correo electrónico cuando se pulse en un botón enviar necesitas un lenguaje del lado del servidor como php.

Puedes ver cursos de programación web (HTML, CSS, JavaScript, PHP) en https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=57&Itemid=86

Salu2

venecox

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Re:Formulario
« Respuesta #2 : 28 de Mayo 2019, 13:41 »
Hola Ogramar, gracias por responder y por la aclaración, siento lo del titulo y el codigo, la verdad es mi primera vez en un foro.

Efectivamente hay dos archivos aparte del codigo html del formulario, son los siguientes...

FORMULARIO

Código: [Seleccionar]
<form id="form">
<div class="success_wrapper">
<div class="success">Su consulta ha sido enviada!<br>
<strong>Entraremos en contacto a la mayor brevedad posible.</strong> </div></div>
<fieldset>
<label class="name">

<input type="text" value="Nombre:" name="name">
<br class="clear">
<span class="error error-empty">*Nombre inválido.</span><span class="empty error-empty">*Campo necesario.</span> </label>
<label class="email">
<input type="text" value="email:" name="email">
<br class="clear">
<span class="error error-empty">*email inválido.</span><span class="empty error-empty">*Campo necesario.</span> </label>
<label class="message">
<textarea name="message">Mensaje:</textarea>
<br class="clear">
<span class="error">*El mensaje es muy corto.</span> <span class="empty">*Campo necesario.</span> </label>
<div class="clear"></div>
<div class="btns"><a data-type="submit" class="link1">Enviar.</a>
<div class="clear"></div>
</div></fieldset></form> 



SCRIPT JS

Código: [Seleccionar]
//forms
;(function($){
$.fn.forms=function(o){
return this.each(function(){
var th=$(this)
,_=th.data('forms')||{
errorCl:'error',
emptyCl:'empty',
invalidCl:'invalid',
notRequiredCl:'notRequired',
successCl:'success',
successShow:'4000',
mailHandlerURL:'bat/MailHandler.php',
ownerEmail:'midominio@dominio.x',
stripHTML:true,
smtpMailServer:'xxxx.xxxx.xxxx',
targets:'input,textarea',
controls:'a[data-type=reset],a[data-type=submit]',
validate:true,
rx:{
".name":{rx:/^[a-zA-Z'][a-zA-Z-' ]+[a-zA-Z']?$/,target:'input'},

".email":{rx:/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i,target:'input'},

".message":{rx:/.{20}/,target:'textarea'}
},
preFu:function(){
_.labels.each(function(){
var label=$(this),
inp=$(_.targets,this),
defVal=inp.val(),
trueVal=(function(){
var tmp=inp.is('input')?(tmp=label.html().match(/value=['"](.+?)['"].+/),!!tmp&&!!tmp[1]&&tmp[1]):inp.html()
return defVal==''?defVal:tmp
})()
trueVal!=defVal
&&inp.val(defVal=trueVal||defVal)
label.data({defVal:defVal})
inp
.bind('focus',function(){
inp.val()==defVal
&&(inp.val(''),_.hideEmptyFu(label),label.removeClass(_.invalidCl))
})
.bind('blur',function(){
_.validateFu(label)
if(_.isEmpty(label))
inp.val(defVal)
,_.hideErrorFu(label.removeClass(_.invalidCl))
})
.bind('keyup',function(){
label.hasClass(_.invalidCl)
&&_.validateFu(label)
})
label.find('.'+_.errorCl+',.'+_.emptyCl).css({display:'block'}).hide()
})
_.success=$('.'+_.successCl,_.form).hide()
},
isRequired:function(el){
return !el.hasClass(_.notRequiredCl)
},
isValid:function(el){
var ret=true
$.each(_.rx,function(k,d){
if(el.is(k))
ret=d.rx.test(el.find(d.target).val())
})
return ret
},
isEmpty:function(el){
var tmp
return (tmp=el.find(_.targets).val())==''||tmp==el.data('defVal')
},
validateFu:function(el){
el.each(function(){
var th=$(this)
,req=_.isRequired(th)
,empty=_.isEmpty(th)
,valid=_.isValid(th)

if(empty&&req)
_.showEmptyFu(th.addClass(_.invalidCl))
else
_.hideEmptyFu(th.removeClass(_.invalidCl))

if(!empty)
if(valid)
_.hideErrorFu(th.removeClass(_.invalidCl))
else
_.showErrorFu(th.addClass(_.invalidCl))
})
},
getValFromLabel:function(label){
var val=$('input,textarea',label).val()
,defVal=label.data('defVal')
return label.length?val==defVal?'nope':val:'nope'
}
,submitFu:function(){
_.validateFu(_.labels)
if(!_.form.has('.'+_.invalidCl).length)
$.ajax({
type: "POST",
url:_.mailHandlerURL,
data:{
name:_.getValFromLabel($('.name',_.form)),
email:_.getValFromLabel($('.email',_.form)),

message:_.getValFromLabel($('.message',_.form)),
owner_email:_.ownerEmail,
stripHTML:_.stripHTML
},
success: function(){
_.showFu()
}
})
},
showFu:function(){
_.success.slideDown(function(){
setTimeout(function(){
_.success.slideUp()
_.form.trigger('reset')
},_.successShow)
})
},
controlsFu:function(){
$(_.controls,_.form).each(function(){
var th=$(this)
th
.bind('click',function(){
_.form.trigger(th.data('type'))
return false
})
})
},
showErrorFu:function(label){
label.find('.'+_.errorCl).slideDown()
},
hideErrorFu:function(label){
label.find('.'+_.errorCl).slideUp()
},
showEmptyFu:function(label){
label.find('.'+_.emptyCl).slideDown()
_.hideErrorFu(label)
},
hideEmptyFu:function(label){
label.find('.'+_.emptyCl).slideUp()
},
init:function(){
_.form=_.me
_.labels=$('label',_.form)

_.preFu()

_.controlsFu()

_.form
.bind('submit',function(){
if(_.validate)
_.submitFu()
else
_.form[0].submit()
return false
})
.bind('reset',function(){
_.labels.removeClass(_.invalidCl)
_.labels.each(function(){
var th=$(this)
_.hideErrorFu(th)
_.hideEmptyFu(th)
})
})
_.form.trigger('reset')
}
}
_.me||_.init(_.me=th.data({forms:_}))
typeof o=='object'
&&$.extend(_,o)
})
}
})(jQuery)
$(window).load(function(){
$('#form').forms({
ownerEmail:'midominio@dominio.x'
})
})


y el PHP

Código: [Seleccionar]
<?php
$owner_email "midominio@dominio.x";
$headers 'From:' $_POST ["email"];
$subject 'Nuevo mensaje desde el formulario ' $_POST["name"];
$messageBody "";

if($_POST['name']!='nope'){
$messageBody .= '<p>Cliente: ' $_POST["name"] . '</p>' "\n";
$messageBody .= '<br>' "\n";
}
if($_POST['email']!='nope'){
$messageBody .= '<p>email: ' $_POST['email'] . '</p>' "\n";
$messageBody .= '<br>' "\n";
}else{
$headers '';
}

if($_POST['message']!='nope'){
$messageBody .= '<p>Mensaje: ' $_POST['message'] . '</p>' "\n";
}

if($_POST["stripHTML"] == 'true'){
$messageBody strip_tags($messageBody);
}

try{
if(!mail($owner_email$subject$messageBody$headers)){
throw new Exception('mail failed');
}else{
echo 'mail sent';
}
}catch(Exception $e){
echo $e->getMessage() ."\n";
}
?>


Ya he cambiado los parametros owner email, smtp por los que corresponden y nada de nada. Hace unos 4 años sé que lo hice funcionar pero no recuerdo qué hice (soy novato) o si hice algo ahora...

Os agradeceria vuestra  ayuda, especialmente a ti Ogramar, que parece que sabes de lo que hablas.

Saludos.



 

Esto es un laboratorio de ideas...
Aprender a programar

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".