Estoy siguiendo un tutorial para hacer un login, trabajando con appserv y una aplicacion AIR.
El script PHP funciona al probarlo por separado, pero al ejecutar la aplicacion Flex me lanza el
famoso error. Les dejo el codigo:
La aplicacion:
Código :
<?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="600" height="400"> <mx:HTTPService id="loginUser" method="POST" useProxy="false" result="checkLogin(event)" url="http://localhost/prueba"> <mx:request xmlns=""> <username>{username.text}</username> <password>{password.text}</password> </mx:request> </mx:HTTPService> <mx:HDividedBox horizontalAlign="left" left="10" top="10" bottom="10" right="10"> <mx:Panel width="250" height="361" layout="absolute"> <mx:Label x="10" y="10" text="Usuario"/> <mx:Label x="10" y="36" text="Contraseña"/> <mx:TextInput x="87" y="8" width="133" id="username"/> <mx:TextInput x="87" y="34" width="133" id="password" displayAsPassword="true"/> <mx:Button x="63.5" y="64" label="Iniciar Sesion" id="login" click="loginUser.send();"/> <mx:Button x="64.5" y="94" label="Cerrar Sesion" id="logout" enabled="false"/> </mx:Panel> <mx:Panel width="250" height="361" layout="absolute"> <mx:Label x="10" y="10" text="Usuario: Desconocido" id="usuario"/> <mx:Label x="10" y="36" text="Nombre"/> <mx:Label x="10" y="62" text="Apellido"/> <mx:Label x="10" y="88" text="Telefono"/> <mx:TextInput x="67" y="34" width="131" id="nombre"/> <mx:TextInput x="67" y="60" width="131" id="apellido"/> <mx:TextInput x="67" y="86" width="86" id="telefono"/> <mx:Button x="10" y="116" label="Agregar" id="add"/> <mx:DataGrid x="10" y="146" width="278" height="165"> <mx:columns> <mx:DataGridColumn headerText="Column 1" dataField="col1"/> <mx:DataGridColumn headerText="Column 2" dataField="col2"/> <mx:DataGridColumn headerText="Column 3" dataField="col3"/> </mx:columns> </mx:DataGrid> <mx:Button x="225" y="116" label="Borrar" enabled="false"/> </mx:Panel> </mx:HDividedBox> <!-- Codigo del script --> <mx:Script> <![CDATA[ import mx.rpc.events.ResultEvent; import mx.controls.Alert; private var logInState: Boolean = false; private var loginUserName: String = "Desconocido"; private function checkLogin (evt: ResultEvent): void{ if (evt.result.loginsuccess == "yes"){ logInState = true; loginUserName = "Ja ja ja"; }else{ Alert.show("Nombre de usuario o contraseña invalidos"); } } ]]> </mx:Script> </mx:WindowedApplication>
El script PHP:
Código :
<?php define (DATABASE_SERVER, "localhost"); define (DATABASE_USER, "root"); define (DATABASE_PASS, "zcerni"); define (DATABASE_NAME, "agenda"); //Conexion con el servidor $connection = mysql_connect (DATABASE_SERVER, DATABASE_USER, DATABASE_PASS) or die (mysql_error()); //Seleccion de la base de datos mysql_select_db (DATABASE_NAME, $connection); //lectura de variables $username = mysql_real_escape_string ($_POST["username"], $connection); $password = mysql_real_escape_string ($_POST["password"], $connection); //Consulta $query = "SELECT * FROM users WHERE user LIKE '$username' AND pass LIKE '$password';"; //resultado $result = mysql_query ($query); $row = mysql_fetch_object ($result); //Cadena de salida $output = "<loginsuccess>"; if ($row){ $output .= "yes"; }else{ $output .= "no"; } $output .= "</loginsuccess>"; mysql_free_result ($result); print ($output); ?>
Este codigo funciona bien independientemente y está ubicado en el directorio raiz de mi servidor
(c:/appserv/www).
El error que muestra:
[RPC Fault faultString="HTTP request error" faultCode="Server.Error.Request" faultDetail="Error: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. URL: http://localhost/prueba" errorID=2032]. URL: http://localhost/prueba"]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()[E:\dev\3.0.x\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:216]
at mx.rpc::Responder/fault()[E:\dev\3.0.x\frameworks\projects\rpc\src\mx\rpc\Responder.as:49]
at mx.rpc::AsyncRequest/fault()[E:\dev\3.0.x\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:103]
at DirectHTTPMessageResponder/errorHandler()[E:\dev\3.0.x\frameworks\projects\rpc\src\mx\messaging\channels\DirectHTTPChannel.as:343]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/redirectEvent()
Aunque creo que es inecesario (al trabajar localmente) puse un archivo crossdomain.xml
en el directorio raiz del servidor local pero aun me sigue mostrando el error.
He visitado muchisimos foros y no encuentro respuesta, por favor ayuuuuuuuudaaaaaaaaaaa.
Gracias de antemano.