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.
