This is my php where I need to authenticate:
<?php
$username=$_POST["m_username"];
$password=$_POST["m_password"];
/*
$username=$_GET["m_username"];
$password=$_GET["m_password"];
*/
?>
I am using below code to authenticate from my iPhone app. But it is not authenticating. I dont know what is the issue that its not working. It says null parameters/values sent.
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.
}
This is your problem. You’re sending your values as HTTP header fields, not as post data. Post data goes in the request body, not the header. So PHP doesn’t treat it as incoming post fields to look at in the
$_POSTarray. (Those fields might turn up in the$_SERVERarray, though… I’ve never tried that. It’s not the preferred method for sending post data, anyhow.)Do this instead:
You can, obviously, compose
myRequestStringas a formatted string, dropping in values the user provides, if needed.Also note that since you’re hitting a non-SSL URL, this data will be sent in the clear, which is known by all the kids these days as A Bad Idea.