ios将数据发送到php并从php检索变量

时间:2014-08-24 23:11:22

标签: php ios objective-c

我是ios开发的新手。我曾经是一名网络开发人员。 我想发送用户名和密码到我的PHP服务器,然后我的PHP服务器将发回一些反馈。我的服务器非常适合网络。我搜索了几个答案,但没有一个有效。

这是我到目前为止所做的:

NSString *rawStr =[NSString stringWithFormat: @"&username=%@&password=%@",_name.text,_pass.text];  //(do I need a question mark before username?)
NSData *data=[rawStr dataUsingEncoding:NSASCIIStringEncoding   allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d",[data length]];
NSMutableURLRequest *request= [[NSMutableURLRequest alloc] init] ;
request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://ec2********/loginS.php"]]]; //the php server is on amazon ec2
[request setHTTPMethod:@"POST"];
[request setHTTPBody: data];
NSURLResponse *response;
NSError *err;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
NSLog(@"responseData: %@", responseData);

这是我的php服务器:     

$username = $_POST['username'];
$password = $_POST['password'];


$stmt = $mysqli->prepare("SELECT COUNT(*), password FROM user WHERE email=?");

$stmt->bind_param('s', $username);
$stmt->execute();


$stmt->bind_result($cnt, $pwd_hash);
$stmt->fetch();

if($cnt == 1 && crypt($password, $pwd_hash)==$pwd_hash){
    session_start();
    ini_set('session.cookie_httponly',1);

    $_SESSION['token'] = substr(md5(rand()), 0, 10);
    $_SESSION['email']=$username;    
    echo json_encode(array(
        'success' => true,
        'username' => htmlentities($_SESSION['email']),
        'token' => htmlentities($_SESSION['token'])

    ));
    exit;
}else{
    echo json_encode(array(
        'success' => false,
        'message' => "oop"
    ));
    exit;
}

>

我很确定我的php服务器工作正常,因为我的网页与php服务器配合得很好。 我的控制台打印出一些奇怪的东西

responseData:其中3c627220 2f3e0a3c 623e4e6f 74696365 3c2f623e 3a202055 6e646566 696e6564 20696e64 65783a20 70617373 776f7264 20696e20 3c623e2f 7661722f 7777772f 68746d6c 2f6d7573 69632f63 6f72652f 6c6f6769 6e532e70 68703c2f 623e206f 6e206c69 6e65203c 623e373c 2f623e3c 6272202f 3e0a7b22 73756363 65737322 3a66616c 73652c22 6d657373 61676522 3a225c75 35653130 5c753533 66375c75 36323136 5c753830 30355c75 35626336 5c753738 30315c75 39353139 5c753862 6566227d>

任何人都可以告诉我如何正确地将数据发送到php服务器。

感谢!!!!

1 个答案:

答案 0 :(得分:0)

有什么奇怪的? responseData是以十六进制显示的数据,也就是数据的一般显示方式,有很多种显示数据的方法。要将数据看作字符串(如果是),请使用:NSLog(@“responseData as a string:%@”,[[NSString alloc] initWithData:data encoding:NSUTF16StringEncoding]);

通过网络上的十六进制运行十六进制到ascii转换器会产生:

<br />
<b>Notice</b>:  Undefined index: password in <b>/var/www/html/music/core/loginS.php</b> on line <b>7</b><br />
{"success":false,"message":"\u5e10\u53f7\u6216\u8005\u5bc6\u7801\u9519\u8bef"}

显示格式为:

  


注意:未定义索引:密码输入   第 7行 /var/www/html/music/core/loginS.php
  { “成功”:假, “消息”: “\ u5e10 \ u53f7 \ u6216 \ u8005 \ u5bc6 \ u7801 \ u9519 \ u8bef”}“

这是html并解释了问题。