2010-05-27 1 views
2

gars, je veux poster des données sur le serveur web, comme nom d'utilisateur et mot de passe, sur le serveur web, j'ai utilisé PHP pour écho oui ou non, j'ai joint tout le code. Quelqu'un peut-il m'aider, quel est le problème avec le code. Comme il est toujours dit mot de passe incorrect ou nom d'utilisateur. J'ai essayé de tester le code php avec le nom d'utilisateur et le mot de passe à l'intérieur, ça fonctionne. Alors s'il vous plaît aidez-moi. Je vous remercie.Iphone sdk, Comment poster des données au serveur web? quelqu'un a un exemple?

fichier d'en-tête

@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 

fichier de mise en œuvre

#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 

fichier 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; 
} 

?> 

Répondre

1

La première question que je vois c'est le plus grand est sans doute qu'il n'y a pas "?" nulle part. Plus précisément, ceci:

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

devrait ressembler à ceci:

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

Parce que vous publiez pas réellement sur le serveur, vous êtes juste à l'aide d'une requête GET et des paramètres d'URL. Je ne sais pas si vous envisagez d'avoir un serveur web et PHP en cours d'exécution sur votre appareil en arrière-plan, mais à un moment je suppose que vous allez changer http://localhost à autre chose, et j'espère que vous allez nettoyer votre requête SQL avant vous laissez les gens accéder à votre page Web et tapez tout ce qu'ils veulent dans la requête d'URL.

1

Le poste est vieux, mais de toute façon si elle peut aider les autres:

Oui, il y avait quelques erreurs. Tout d'abord, la chaîne correcte dans le fichier .m doit être:

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

également au fichier .m:

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

au lieu de "Oui". Soyez conscient des lettres majuscules!

C'est tout. Le code a bien fonctionné.

Questions connexes