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"
他のフォームを検索しようとしましたが、それでも同じエラーが表示されます。
ありがとうございました。