Iphone SDK, Как разместить данные на веб-сервере? У кого-нибудь есть пример? - PullRequest
2 голосов
/ 28 мая 2010

ребята, я хочу разместить данные на веб-сервере, такие как имя пользователя и пароль, на веб-сервере, я использовал PHP, чтобы повторить да или нет, я прикрепил весь код Кто-нибудь может мне помочь, что не так с кодом. Так как в нем всегда говорится неверный пароль или имя пользователя. Я пытался проверить php-код с именем пользователя и паролем внутри, он работает. Поэтому, пожалуйста, помогите мне. Спасибо.

Заголовочный файл

@interface kiksyloginViewController : UIViewController {
    IBOutlet UITextField *usernameField;
    IBOutlet UITextField *passwordField;
    IBOutlet UIButton *loginButton;
}

@property (nonatomic, retain) UITextField *usernameField;
@property (nonatomic, retain) UITextField *passwordField;
@property (nonatomic, retain) UIButton *loginButton;

- (IBAction) login: (id) sender;

@end

Файл реализации

#import "kiksyloginViewController.h"

@implementation kiksyloginViewController

@synthesize usernameField;
@synthesize passwordField;
@synthesize loginButton;

- (IBAction) login: (id) sender
{

    NSString *post =[NSString stringWithFormat:@"username=%@&password=%@",usernameField.text, passwordField.text];

    NSString *hostStr = @"http://localhost/userlogin.php";
    hostStr = [hostStr stringByAppendingString:post];
    NSData *dataURL =  [NSData dataWithContentsOfURL: [ NSURL URLWithString: hostStr ]];    
    NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding: NSASCIIStringEncoding];


    if([serverOutput isEqualToString:@"Yes"]){

        UIAlertView *alertsuccess = [[UIAlertView alloc] initWithTitle:@"Congrats" message:@"You are authorized "
                                                              delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

        [alertsuccess show];
        [alertsuccess release];

    } else {
        UIAlertView *alertsuccess = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Username or Password Incorrect"
                                                              delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [alertsuccess show];
        [alertsuccess release];

    }
}

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn’t have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren’t in use.
}

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


- (void)dealloc {
    [super dealloc];
}

@end

PHP-файл

<?php 
//$Container = new Container; 

$u = $_GET['username']; 
$pw =$_GET['password']; 
$check = "select username, password from user where username='$u' and password='$pw'"; 
function myDbconn() 

{ 
    mysql_connect("localhost", "root","") or die(); 
    mysql_select_db("test") or die (mysql_error()); 
} 

myDbconn(); 


$login = mysql_query($check) or die (mysql_error()); 
//$run = DB()->select($check); 



if (mysql_num_rows($login)==1){ 
    //$row = DB()->fetch($run); 
    //$row = DB()->fetch($login); 
    $row = mysql_fetch_assoc($login); 
    echo 'yes'; 
    exit;         
} 
else { 
    echo 'No'; 
    exit; 
} 

?>

Ответы [ 2 ]

1 голос
/ 22 апреля 2013

Пост старый, но в любом случае, если он может помочь другим:

Да, там было несколько ошибок. Во-первых, правильная строка в файле .m должна быть:

NSString *post =[NSString stringWithFormat:@"?&username=%@&password=%@",
                 usernameField.text, passwordField.text];

Также в файле .m:

if([serverOutput isEqualToString:@"yes"]){

вместо "Да". Будьте в курсе заглавных букв!

Вот и все. Код работал хорошо.

1 голос
/ 28 мая 2010

Первая проблема, которую я вижу, это, вероятно, самая большая проблема в том, что нет "?" в любом месте. В частности, это:

@"username=%@&password=%@"

должно выглядеть так:

@"?username=%@&password=%@"

Поскольку на самом деле вы не отправляете сообщения на сервер, вы просто используете запрос GET и параметры URL.

Я не знаю, планируете ли вы запускать веб-сервер и PHP на своем устройстве в фоновом режиме, но в какой-то момент я предполагаю, что вы смените http://localhost на что-то другое, и, надеюсь, вы очистите ваш SQL-запрос, прежде чем разрешить пользователям переходить на вашу веб-страницу и вводить в запросе все, что им нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...