0

私は Php と AS3 を初めて使用します。登録ページを設定しようとしています。AS3 はデータを php に送信し、正常に登録されたことを示すメッセージを返します。現時点では、AS3 はすべてのデータをデータベースに送信します。しかし、AS3 は正常に登録されたというメッセージを表示しませんが、エラーも表示しません。助けてください

私の AS3 コード

stop();



// build variable name for the URL Variables loader
var variables:URLVariables = new URLVariables;

// Build the varSend variable
var varSend:URLRequest = new URLRequest("http://localhost/dummy.php");
varSend.method = URLRequestMethod.POST;
varSend.data = variables;

// Build the varLoader variable
var varLoader:URLLoader = new URLLoader();
varLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
varLoader.addEventListener(Event.COMPLETE, completeHandler);


// handler for the PHP script completion and return of status

  function completeHandler(event:Event):void {
  if(event.target.data && event.target.data.return_msg)
   status_txt.text = event.target.data.return_msg

} 


// Add event listener for submit button click
submit.addEventListener(MouseEvent.CLICK, ValidateAndSend);

// function ValidateAndSend
function ValidateAndSend (event:MouseEvent):void {

// validate fields
if(!name_txt.length) {
status_txt.text = "Please enter your name";
} else if (!email_txt.length) {
status_txt.text = "Please enter your email";
} else if (!pass_txt.length) {
status_txt.text = "Please enter your password";
} else { 


// ready the variables in our form for sending
variables.username = name_txt.text;
variables.email = email_txt.text; 
variables.password = pass_txt.text;

        // if error occurs


// Send the data to PHP now
varLoader.load(varSend);


} // close else condition for error handling

}

以下は私のphpコードです

<?php

ini_set('display_errors', 1); error_reporting(E_ALL);
include 'connect.php';


{
 //get form data
 $username = ($_POST['username']);
 $password = ($_POST['password']);
 $email = ($_POST['email']);

 if (!$username||!$password||!$email)
 {
     $fill= "Please fill out all fields";
 echo ($fill) ;
 }

 else
 {
    //encrypt password
    $password = md5($password);

    //check if username already taken
    $check = mysqli_query($con,"SELECT * FROM Test WHERE username = '$username'") or die( mysqli_error());
    if (mysqli_num_rows($check)>=1)
    {
    echo "return_msg=Username_already_taken";}

    else
    {




           //register into database
            mysqli_query($con,"INSERT INTO Test (username,password,email) VALUES 
                ('$username','$password','$email');") or die(mysqli_error());
        }


    echo "return_msg=success" ;    


 }

 }


?>

お時間を割いていただき、ありがとうございました

4

1 に答える 1

1

をトレースしたときの応答に基づいてevent.target.data、php が応答を送信しています。条件付きロジックのため、何も表示されません。event.target.data は存在しますが、存在しませんevent.target.data.return_msg

条件付きロジックを削除して、

function completeHandler(event:Event):void {
    status_txt.text = event.target.data
} 

これにより、php から返された文字列が提供されます。トリムを使用して空白 (テスト応答の url_encoded 文字) をクリアし、必要に応じて=記号で分割できます。私は個人的にJSONAS3 と PHP との通信に記法を使用するのが好きです...

追加された編集:

Adobe Docsに記載されている StringHelper クラスがありますが、DocumentClass で次の関数を使用して応答をトリミングします。

public static function trim(s:String):String{
    return s.replace(/^([\s|\t|\n]+)?(.*)([\s|\t|\n]+)?$/gm, "$2");
}
于 2013-10-09T18:41:54.043 に答える