1

MAC で MAMP を介してサーバーを確立しました。誰かが以下の PHP スクリプトを書きました:

header("Content-Type:text/html; charset=utf-8");
if(!isset($_COOKIE['hostname']))$hostname = "http://127.0.0.1";
    else $hostname = $_COOKIE['hostname'];
if(!isset($_COOKIE['username']))$username = "root";
    else $username = $_COOKIE['username'];
if(!isset($_COOKIE['password']))$password = "";
    else $password = $_COOKIE['password'];

if(!isset($_POST['operate'])){
    echo "Please Input:";
    print(json_encode("Error:Please Input:"));
    return false;
}
else{
    $operate = $_POST['operate'];
    switch ($operate){
        case "login":
            login($_POST['hostname'],$_POST['username'],$_POST['password']);
            break;
        case "clean":
            clean();
            break;
        case "search":
            search($_POST['form'], $_POST['field'], $_POST['value']);
            break;
        case "read":
            if(!isset($_POST['num']))read1($_POST['form']);
            else read2($_POST['$form'], $_POST['$base'], $_POST['$num']);
            break;
        case "alter":
            alter($_POST['form'], $_POST['field'], $_POST['id'],$_POST['value']);
            break;
        case "delete":
            delete($_POST['form'],$_POST['id']);
            break;
        case "insert":
            if(isset($_POST['device']))insert1($_POST['form'],$_POST['device'], $_POST['port'], $_POST['vlan'], $_POST['singleMulti'], $_POST['function'], $_POST['destDevice']);
            else insert2();
            break;
        default:
            echo "Please Input:";
            print(json_encode("Error:Please Input:"));
            return false;

    }
}

function login($hostname,$username,$password){
//Login
    $link = @mysql_connect($hostname,$username,$password);
    if(!$link){
        echo "Fail to connect the DataBase";
        print(json_encode("Error:Fail to connect the DataBase"));
        return false;
    }
    mysql_query("set names utf8");
    mysql_select_db("qrcode");

    setcookie("hostname", $hostname, time()+ 9999999);
    setcookie("username", $username, time()+ 9999999);
    setcookie("password", $password, time()+ 9999999);
    mysql_close();
    return true;
}
function search($form, $field, $value){
//query
    login($hostname,$username,$password);
    $sql="select * from $form where $field = '$value'";
    $result = @mysql_result($sql);

    if(!$result){
        echo "Fail to query the DataBase";
        print(json_encode("Error:Fail to query the DataBase"));
        return false;

    }
    while($e=mysql_fetch_assoc($result))
        $output[] =$e;  
    echo json_encode($output);  
    mysql_close();
    return true;
}

function read1($form){
    if(read2($form, 0, 5))return true;      
    else return false;
}

    //Clean ...............
//Load.................
    //Alter................
//Delete...............
//Insert...............

そして、以下のコードである ASIHTTPRequest を使用します。

NSURL *url=[NSURL URLWithString:@"http://localhost/QRcode.php"];
ASIFormDataRequest *request=[[ASIFormDataRequest alloc]initWithURL:url];

[request setRequestMethod:@"POST"];
[request setDelegate:self];

[request setPostValue:@"login" forKey:@"operate"];
[request setPostValue:@"localhost" forKey:@"hostname"];
[request setPostValue:@"root" forKey:@"username"];
[request setPostValue:@"root" forKey:@"password"];

[request setPostValue:@"search" forKey:@"operate"];
[request setPostValue:@"5020" forKey:@"form"];
[request setPostValue:@"id" forKey:@"field"];
[request setPostValue:@"1" forKey:@"value"];

[request startSynchronous];
NSLog(@"%@",[request responseString]);

「5020」フォームがデータベースに存在していたことは確かですが、次の結果が得られます。

Fail to query the DataBase Error:\u6570\u636e\u5e93\u67e5\u8be2\u5931\u8d25"

他のフォームを検索しようとしましたが、それでも同じエラーが表示されます。

ありがとうございました。

4

1 に答える 1

0

解決済み..... : のような文字列u\6570\u5647\u......は UTF-8 エンコードです。アプリの言語設定を中国語に変更するだけで、すべての奇妙な文字列がなくなります.....

于 2013-12-05T02:18:01.950 に答える