Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Formulario PHP incluido en plantilla comprada no envia y me esta volviendo loco

Estas en el tema de Formulario PHP incluido en plantilla comprada no envia y me esta volviendo loco en el foro de PHP en Foros del Web. Hola, pues me he comprado una plantilla web, el cual ya la tengo a mi gusto, pero me falta el tema del formulario. El problema ...
  #1 (permalink)  
Antiguo 01/03/2014, 16:10
 
Fecha de Ingreso: julio-2013
Mensajes: 25
Antigüedad: 10 años, 8 meses
Puntos: 0
Formulario PHP incluido en plantilla comprada no envia y me esta volviendo loco

Hola, pues me he comprado una plantilla web, el cual ya la tengo a mi gusto, pero me falta el tema del formulario.
El problema es que el formulario me esta volviendo loco, porque no me envia.

Tiene dos archivos uno en javascrip, que no entiendo, pero que supongo que no tenga que modificar y otro en php que supongo que ahi tenga que poner los datos del correo del destinatario etc. Pero cuando lo pongo, donde pienso que lo tengo que poner no me funciona. A ver si me podeis ayudar.

El codigo php es :

Código PHP:


<?php
    $owner_email 
$_POST["owner_email"];
    
$headers 'From:' $_POST["email"];
    
$subject 'A message from your site visitor ' $_POST["name"];
    
$messageBody "";
    
    if(
$_POST['name']!='nope'){
        
$messageBody .= '<p>Visitor: ' $_POST["name"] . '</p>' "\n";
        
$messageBody .= '<br>' "\n";
    }
    if(
$_POST['email']!='nope'){
        
$messageBody .= '<p>Email Address: ' $_POST['email'] . '</p>' "\n";
        
$messageBody .= '<br>' "\n";
    }else{
        
$headers '';
    }
    if(
$_POST['state']!='nope'){        
        
$messageBody .= '<p>State: ' $_POST['state'] . '</p>' "\n";
        
$messageBody .= '<br>' "\n";
    }
    if(
$_POST['phone']!='nope'){        
        
$messageBody .= '<p>Phone Number: ' $_POST['phone'] . '</p>' "\n";
        
$messageBody .= '<br>' "\n";
    }    
    if(
$_POST['fax']!='nope'){        
        
$messageBody .= '<p>Fax Number: ' $_POST['fax'] . '</p>' "\n";
        
$messageBody .= '<br>' "\n";
    }
    if(
$_POST['message']!='nope'){
        
$messageBody .= '<p>Message: ' $_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";
    }
?>

y luego tiene el archivo js que supongo que no tenga que modificar nada, decir que he modificado donde pone ''owneremail'', pero no consigo nada, hace como que envia pero nunca llega nada.

Este es el codigo js por si hace falta:


Código:
//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:'[email protected]',
					stripHTML:true,
					smtpMailServer:'localhost',
					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'},
						".state":{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'},
						".phone":{rx:/^\+?(\d[\d\-\+\(\) ]{5,}\d$)/,target:'input'},
						".fax":{rx:/^\+?(\d[\d\-\+\(\) ]{5,}\d$)/,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)),
									phone:_.getValFromLabel($('.phone',_.form)),
									fax:_.getValFromLabel($('.fax',_.form)),
									state:_.getValFromLabel($('.state',_.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(){
	$('#form1').forms({
		ownerEmail:'#'
	})
})


Muchas gracias a todos los que me podais ayudar, a ver si poco a poco aprendo de formularios... Porque me llevan loco.

Gracias !!
  #2 (permalink)  
Antiguo 01/03/2014, 18:43
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Formulario PHP incluido en plantilla comprada no envia y me esta volviendo

El correo se envía, pero seguramente los servidores lo rechazan por no tener encabezados apropiados.

Te sugiero usar PhpMailer, aquí en FDW hay muchos aportes que te pueden servir, usa el buscador.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 02/03/2014, 06:21
 
Fecha de Ingreso: julio-2013
Mensajes: 25
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Formulario PHP incluido en plantilla comprada no envia y me esta volviendo

Gracias triby por tu rapida respuesta, he intentado buscar todo tipo de tutoriales con de phpmailer, pero realmente phpmailer hacia mas cosas de las que yo necesitaba y he seguido buscando el problema hasta que he dado con la solucion...

En la ultima linea del archivo javascript ponia esto:


Código:
})(jQuery)
$(window).load(function(){
	$('#form1').forms({
		ownerEmail:'#'
	})
})

En owneremail habia que poner la direccion de correo electronico, yo lo habia puesto solamente arriba del todo, pero no abajo del todo, ya despues de rellenar ese campo, instantaneamente he probado y todo perfecto ...

Ya ves que tonteria era..., Y llevo un par de dias enrollado con el formulario



Gracias nuevamente y hasta otra !! Doy el tema por resuelto


Un saludo !!
  #4 (permalink)  
Antiguo 02/03/2014, 16:20
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Formulario PHP incluido en plantilla comprada no envia y me esta volviendo

Lo malo de tu script es que cualquiera va a poder enviar correos a cualquier dirección; deberías tener cuidado con eso, para evitarte problemas con tu hosting o que tu sitio sea reconocido como fuente de spam.

Una opción es poner en PHP directamente:
Código PHP:
Ver original
  1. $owner_email = '[email protected]';
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: envia, formulario, html, loco, plantilla
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 00:02.