2009-05-27 56 views
0

無論用戶名和密碼如何,我的PHP代碼都會返回NO。PHP的Flex Remoting問題作爲後端

的Flex/MXML代碼:

<mx:RemoteObject id="zendAMF" destination="zend" showBusyCursor="true" source="test_class" > 
    <mx:method name="doLogin" result="onSayHelloResult(event)"> 
    <mx:arguments> 
     <username> 
     {username.text} 
     </username> 
     <password> 
     {password.text} 
     </password> 
    </mx:arguments> 
    </mx:method> 
</mx:RemoteObject> 

ActionScript代碼:

private function callZend():void { 
    zendAMF.doLogin(); 
} 

PHP代碼:

class test_class { 

    public function __construct() { 
    } 

    public function doLogin($username,$password) { 

    include("connection.php"); 

    if (isset($_POST['username']) && isset($_POST['password'])) 
    { 
     $username= $_POST['username']; 
     $password= $_POST['password']; 
     $query = "SELECT * 
       FROM users 
       WHERE username = '".mysql_escape_string($username)."' 
       AND password = '".mysql_escape_string($password)."'"; 
     $result = mysql_fetch_array(mysql_query($query)); 
     return 'yes'; 
    } 
    else 
    { 
     return 'no'; 
    } 
    } 
} 

回答

1

我很確定,因爲$ username和$ password是您的方法的參數,並且由於您通過RemoteObject發送了這兩個參數,因此您已經爲它們設置了值,因此不需要使用$ _POST 。

public function doLogin($username,$password) { 

include("connection.php"); 

if (isset($username) && isset($password)) 
{ 
    $query = "SELECT * 
      FROM users 
      WHERE username = '".mysql_escape_string($username)."' 
      AND password = '".mysql_escape_string($password)."'"; 
    $result = mysql_fetch_array(mysql_query($query)); 
    return 'yes'; 
} 
else 
{ 
    return 'no'; 
}} 

這應該夠了。

0

這一行失敗:

if (isset($_POST['username']) && isset($_POST['password'])) 

你確定你的flex方法是使用POST而不是GET嗎?