gpt4 book ai didi

iphone - 从 iOS/iPhone 应用程序对 php 脚本进行身份验证

转载 作者:行者123 更新时间:2023-11-29 04:34:27 24 4
gpt4 key购买 nike

这是我需要进行身份验证的 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.

}

最佳答案

[urlRequest addValue:@"test" forHTTPHeaderField:@"m_username" ];

[urlRequest addValue:@"123" forHTTPHeaderField:@"m_password" ];

这是你的问题。您将值作为 HTTP header 字段发送,而不是作为发布数据。发布数据位于请求正文中,而不是 header 中。因此 PHP 不会将其视为要在 $_POST 数组中查看的传入 post 字段。 (不过,这些字段可能会出现在 $_SERVER 数组中...我从未尝试过。无论如何,这不是发送帖子数据的首选方法。)

改为这样做:

NSString *myRequestString = @"m_username=test&m_password=123";
NSData *myRequestData = [NSData dataWithBytes: [myRequestString UTF8String]
length: [myRequestString length]];

[urlRequest setHTTPBody: myRequestData];

显然,您可以将 myRequestString 编写为格式化字符串,并根据需要放入用户提供的值。

另请注意,由于您访问的是非 SSL URL,因此该数据将以明文形式发送,现在所有的 child 都知道这是一个坏主意。

关于iphone - 从 iOS/iPhone 应用程序对 php 脚本进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11257245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com