我想從使用AFNetworking框架的iOS應用程序發送用戶名和密碼到php腳本。 iOS應用程序將繼續接收我定義爲「參數不足」的狀態碼401。我曾嘗試將php腳本的「用戶名」返回到iOS應用程序並接收。AFNetworking PostPath php參數爲空
基於我到目前爲止一直在調查,就好像:
1)PHP腳本沒有解碼POST參數正確
2)的iOS應用程序不發送POST參數選擇不當
以下是iOS的功能
- (IBAction)startLoginProcess:(id)sender
{
NSString *usernameField = usernameTextField.text;
NSString *passwordField = passwordTextField.text;
NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:usernameField, @"username", passwordField, @"password", nil];
NSURL *url = [NSURL URLWithString:@"http://localhost/~alejandroe1790/edella_admin/"];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
[httpClient defaultValueForHeader:@"Accept"];
[httpClient setParameterEncoding:AFJSONParameterEncoding];
[httpClient postPath:@"login.php" parameters:parameters
success:^(AFHTTPRequestOperation *operation, id response) {
NSLog(@"operation hasAcceptableStatusCode: %d", [operation.response statusCode]);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error with request");
NSLog(@"%@",[error localizedDescription]);
}];
}
以下是PHP腳本
function checkLogin()
{
// Check for required parameters
if (isset($_POST["username"]) && isset($_POST["password"]))
{
//Put parameters into local variables
$username = $_POST["username"];
$password = $_POST["password"];
$stmt = $this->db->prepare("SELECT Password FROM Admin WHERE Username=?");
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($resultpassword);
while ($stmt->fetch()) {
break;
}
$stmt->close();
// Username or password invalid
if ($password == $resultpassword) {
sendResponse(100, 'Login successful');
return true;
}
else
{
sendResponse(400, 'Invalid Username or Password');
return false;
}
}
sendResponse(401, 'Not enough parameters');
return false;
}
我覺得我可能會錯過一些東西。任何援助將是偉大的。
你,如果你做了什麼的var_dump(json_decode(的file_get_contents( 「PHP://輸入」))); ?? – GBD
對象(stdClass的)#3(2){ [ 「用戶名」] => 串(14) 「alejandroe1790」 [ 「密碼」] => 串(4) 「測試」 } –