Comunidad de diseño web y desarrollo en internet online

formulario php para servidor windows

Citar            
MensajeEscrito el 25 Nov 2009 05:34 pm
Ya se que lo que hay que hacer es cambiar a Linux, pero a veces no es posible..... y uno se encuentra que tiene una web en flas con un formulario de contacto para ser enviado al mail del webmaster en un servidor windows. Falta afinar algo al actionscript, o eso me han dicho los del hosting, pero como ellos no estan para eso, no me han dicho más.... y aqui llevo horas dandole vuetas y no se por qué no va bien. Copio los codigos, por si alguien ve algo rapidamente que me pueda ayudar.... Mil gracias de antemano.

El codigo que utilizo en el flash, y que siempre ha funcionado:

Código ActionScript :

stop();


_root.carga_fondo.enviar_mc.onRelease=function(){
   enviarCorreo();
   };
   

_root.carga_fondo.textoOk._visible=false;
_root.carga_fondo.textoError._visible=false;
_root.carga_fondo.mensaje_requeridos._visible=true;
limpiarFormulario();


//enviar_mc.onRelease=enviarCorreo;

function comprobarCampoCorreo(campo,defecto,okAntes){
   
   if (campo.corregir) return false;

   if ( (campo.text == "") || (campo.length<4) ){
      campo.text = defecto;
      campo.corregir=true;
      
      return false;
   }   
   var posArroba:Number = campo.text.indexOf("@");
   var posPunto:Number = campo.text.indexOf(".");
   var extraido:String = campo.text.substring(posArroba+1, posPunto);         
   if ( (posArroba == -1) || (posPunto == -1) || (posPunto<posArroba) || (extraido.length<2) ) {
      campo.text = defecto;
      campo.corregir=true;      
      return false;
   }
   return (true == okAntes);
}

function comprobarCampoTexto(campo,defecto,okAntes){
   if (campo.corregir) return false;
   if ((campo.text=="") || (campo.corregir==true) ){
      campo.text=defecto;
      campo.corregir=true;
      return false;
   }
   return (true == okAntes);
}

function enviarCorreo(){
   todoOk=true;
   todoOk=comprobarCampoTexto(nombre,"requerido / required",todoOk);
   todoOk=comprobarCampoCorreo(email,"requerido / required",todoOk);
   todoOk=comprobarCampoTexto(telefono,"requerido / required",todoOk);
//   todoOk=comprobarCampoTexto(telefono2Txt,"Su nombre, por favor",todoOk);
   todoOk=comprobarCampoTexto(mensaje,"requerido / required",todoOk);
   if (todoOk) enviarCorreoSeguro();
}

function enviarCorreoSeguro(){
   var formCorreo = new LoadVars();
   //formCorreo.tarjeta = tarjeta.getSelectedItem().data;
   formCorreo.nombre=nombre.text;
   formCorreo.email=email.text;
   formCorreo.telefono=telefono.text;

   formCorreo.mensaje=mensaje.text;   
   formCorreo.onLoad = function(success:Boolean) {
      trace("Mensaje Enviado suc:"+success+" this: "+this+"");
      if (success && (this.estatus=="ok") ) {
         _root.carga_fondo.textoOk._visible=true;         
         _root.carga_fondo.textoError._visible=false;
         _root.carga_fondo.mensaje_requeridos._visible=false;
         limpiarFormulario();
      } else {
         _root.carga_fondo.textoOk._visible=false;
         _root.carga_fondo.textoError._visible=true;
         _root.carga_fondo.mensaje_requeridos._visible=false;
      }
   };
   trace("_-----------------------------");
   formCorreo.sendAndLoad("http://www.dominio.net/send_contacto.php", formCorreo, "POST");

}

function cambioCampo(){
   
   this.corregir=false;
   textoOk._visible=false;
   textoError._visible=false;
   mensaje_requeridos._visible=true;
   //trace("Cambiando campo "+this.corregir);
}

function fijarCampo(campo){
   campo.text="";
   campo.corregir=false;
   campo.onChanged=cambioCampo
}


function limpiarFormulario(){
         fijarCampo(nombre);
         fijarCampo(telefono);
         fijarCampo(email);
         fijarCampo(mensaje);
}




Aqui el codigo del php modificado segun la orientacion de los tecnicos del hosting (hay muchos comentarios, perdon)

Código PHP :

<?
include("Mail.php");

//if (isset($_REQUEST["nombre"])&& isset($_REQUEST["email"])&& isset($_REQUEST["mensaje"])&& isset($_REQUEST["telefono"]) )
if ( isset($_POST['enviar'])&&($_POST['nombre']!='')&&($_POST['email']!='')&&($_POST['mensaje']!='')&&($_POST['telefono']!='')){

//dirección del destinatario la cogemos del formulario
$recipients = "[email protected]";

//Cuenta desde donde se hace el envío
$headers["From"] = $_POST['email'];

//destinatario lo cogemos desde el formulario
$headers["To"] = "[email protected]";

//asunto lo sacamos del formulario
$headers["Subject"] = "Desde SERVIDOR";

//cuerpo del mensaje, lo cojemos del formulario
$body = $_POST['nombre'];
$body = $_POST['email'];
$body = $_POST['telefono'];
$body = $_POST['mensaje'];

//servidor correo (Ver NOTA)
$params["host"] = "10.0.0.161";

//puerto smtp
$params["port"] = "25";

//activamos la autenticacion, siempre a true
$params["auth"] = true;

//usuario del correo desde el que enviamos
$params["username"] = "[email protected]";

//clave de la cuenta de correo anterior
$params["password"] = "123456";

// Creamos el objeto mail usando el metodo Mail::factory
$mail_object =& Mail::factory("smtp", $params);

// Enviamos el correo con los datos anteriores y comprobamos que se ha enviado correctamente

if( $mail_object->send($recipients, $headers, $body) ){

//echo "Mensaje enviado correctamente.";
echo "&estatus=ok&";
}else{
//echo "Error al enviar.";
echo "&estatus=Error&";
}
}else{
echo "Para realizar el envio dirijase a: <a
href='http://sudominio.com/formulario.html'>http://sudomin
io.com/formulario.html</a><br /> Y complete todos los
campos.";
}
?>



Y aqui un formulario que han hecho los del servidor, y que llama a mi php, para demostrarme que funciona, y que el problema esta en el fla. (Este formulario sí funciona)

Código PHP :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
      "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
      <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
      <title>Formulario</title>
</head>
<body>
<form action="send_contacto.php" method="post" accept-charset="utf-8">
      <p>nombre:<br /><input type="text" name="nombre" value=""/></p>
      <p>email:<br /><input type="text" name="email" value=""/></p>
      <p>telefono:<br /><input type="text" name="telefono" value=""/></p>
      <p>Mensaje:<br /><textarea name="mensaje" rows="8"
cols="40"></textarea></p>
      <p><input type="submit" value="Enviar" name="enviar"/></p>
      </form>
</body>
</html>



Que le falta o sobra a mi flash?

Gracias de nuevo

Por rakeljuice

34 de clabLevel



 

msie7
Citar            
MensajeEscrito el 25 Nov 2009 05:39 pm
Olvide decir que el segundo bloque de codigo es send_contacto.php

Por rakeljuice

34 de clabLevel



 

msie7
Citar            
MensajeEscrito el 25 Nov 2009 08:35 pm
Si te han comprobado el PHP no es el problema, seguro lo es el Flash. El envío de las vars esta correcto, por lo cual te quedaría suponer que estas validando mal los datos.

Pero el problema en concreto es: ¿Que no envía NADA o envía blanco o que?

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 26 Nov 2009 11:31 am
El tema es que cuando le das al boton enviar, y el php funciona, este devuleve un status=ok, que hace lo siguiente:

Código ActionScript :

formCorreo.mensaje=mensaje.text;       formCorreo.onLoad = function(success:Boolean) {       trace("Mensaje Enviado suc:"+success+" this: "+this+"");       if (success && (this.estatus=="ok") ) {          _root.carga_fondo.textoOk._visible=true;                   _root.carga_fondo.textoError._visible=false;          _root.carga_fondo.mensaje_requeridos._visible=false;          limpiarFormulario();       } else {          _root.carga_fondo.textoOk._visible=false;          _root.carga_fondo.textoError._visible=true;          _root.carga_fondo.mensaje_requeridos._visible=false;       } 



como ves, hace que el mensaje de envio correcto se haga visible, y el de error invisible (ambos son movieclip).
Y cuando no devuelve el ok, pues hace lo contrario.

Entonces, no se donde se para, si en el retorno, o en el envio, o donde.

Por rakeljuice

34 de clabLevel



 

msie7
Citar            
MensajeEscrito el 26 Nov 2009 07:44 pm
Ok, pero rakeljuice...¿El correo no lo envía para nada? ¿No recibes nada?

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 27 Nov 2009 09:43 am
pues no...

si lo recibiese, estaria funcionando....

Por rakeljuice

34 de clabLevel



 

msie7
Citar            
MensajeEscrito el 28 Nov 2009 12:14 am
No siempre, a veces envía solo en blanco el maldito je.

La mierda de iPhone no me deja ver si estas llamando correctamente al loadvars... Te responde el "ok" el server?
sino prueba metiendo un crossdomain.XML, quizá como lo llamas en path absoluto anda jodiendo la seguridad.


Saludos, Hernan . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

safari

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.