这是我需要验证的php:
<?php
$username=$_POST["m_username"];
$password=$_POST["m_password"];
/*
$username=$_GET["m_username"];
$password=$_GET["m_password"];
*/
?>
我使用以下代码从我的iPhone应用程序进行身份验证。但它不是在验证。我不知道它不起作用的问题是什么。它表示发送了空参数/值。
NSString *urlAsString =[NSString stringWithFormat:@"http://www.myurl.com/abc/authenticate.php"];
NSURL *url = [NSURL URLWithString:urlAsString];
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url];
[urlRequest setTimeoutInterval:30.0f];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest addValue:@"test" forHTTPHeaderField:@"m_username" ];
[urlRequest addValue:@"123" forHTTPHeaderField:@"m_password" ];
[[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response,NSData *data, NSError *error) {
if ([data length] >0 && error == nil){
html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"HTML = %@", html);
receivedData = [NSMutableData data];
}
else if ([data length] == 0 && error == nil){
NSLog(@"Nothing was downloaded.");
}
else if (error != nil){
NSLog(@"Error happened = %@", error);
}
}];
// Start loading data
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];
if (theConnection)
{
// Create the NSMutableData to hold the received data
receivedData = [NSMutableData data];
}
else {
// Inform the user the connection failed.
}
答案 0 :(得分:1)
[urlRequest addValue:@"test" forHTTPHeaderField:@"m_username" ];
[urlRequest addValue:@"123" forHTTPHeaderField:@"m_password" ];
这是你的问题。您将值作为HTTP标头字段发送,而不是作为发布数据发送。发布数据位于请求正文中,而不是标题中。因此PHP不会将其视为要在$_POST
数组中查看的传入帖子字段。 (那些字段可能会出现在$_SERVER
数组中,但是......我从来没有尝试过。无论如何,它不是发送帖子数据的首选方法。)
请改为:
NSString *myRequestString = @"m_username=test&m_password=123";
NSData *myRequestData = [NSData dataWithBytes: [myRequestString UTF8String]
length: [myRequestString length]];
[urlRequest setHTTPBody: myRequestData];
显然,您可以将myRequestString
组合为格式化字符串,如果需要,可以删除用户提供的值。
另请注意,由于您正在点击非SSL网址,因此这些数据将以明文形式发送,现在所有孩子都知道这是一个坏主意。
答案 1 :(得分:0)
尝试像这样调用你的php页面网址
[你的网址]?m_username = abc&amp; m_password = abc然后改变
$_POST['m_username'] to $_REQUEST['m_username']
and
$_POST['m_password'] to $_REQUEST['m_password']
看看你得到了什么...如果它对json数据没问题,那么问题在于你的可可代码。
祝你好运。
答案 2 :(得分:0)
在iPhone中,您传递HTTP标头中的参数,但在PHP脚本中,您正在从POST数据中检索参数。尝试同步数据传输。