Envoi d'informations POST ne marche pas, pourquoi ?

Giga_BossGiga_Boss Membre
01:23 modifié dans Xcode et Developer Tools #1
Bonjour,

je cherche à  appliquer un tuto qui semble pas marcher.

Xcode :
- (IBAction)valider:(id)sender<br />{<br />	NSString *post = [NSString stringWithFormat:@&quot;login=%@ &amp; passe=%@&quot;,<br />					&nbsp; [[login text] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],<br />					&nbsp; [[passe text] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];<br />	<br />	NSData *dataToSend = [NSData dataWithBytes:[post UTF8String] length:[post length]];<br />	<br />	NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@&quot;http://www.foxinteractive.fr/iphone/apl/connexion.php?mode=connexion&quot;]];<br />	<br />	[request setHTTPMethod:@&quot;POST&quot;];<br />	[request setHTTPBody:dataToSend];<br />	<br />	NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];<br />	<br />	NSString *reponseServeur = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];<br />	<br />	[reponseServeur stringByReplacingOccurrencesOfString:@&quot;&#092;n&quot; withString:@&quot;&quot;];<br />	[reponseServeur stringByReplacingOccurrencesOfString:@&quot; &quot; withString:@&quot;&quot;];<br />	<br />	NSLog(@&quot;%@&quot;, reponseServeur);<br />}<br />


PHP :
&lt;?php<br /><br />$mode = $_GET&#91;&#039;mode&#039;];<br /><br />if( $mode == &#039;connexion&#039; )<br />{<br />	$login = $_POST&#91;&#039;login&#039;];<br />	$passe = $_POST&#91;&#039;passe&#039;];<br />	<br />	if( $login == &#039;test&#039; &amp;&amp; $passe == &#039;test&#039; )<br />	{<br />		echo &#039;Oui&#039;;<br />	}<br />	else<br />	{<br />		echo &#039;Non&#039;;<br />	}<br />}<br /><br />?&gt;


Problème :

Sur l'application, j'entre "test" en login et "test" en passe mais la réponse retournée est "Non", sur le document PHP j'ai modifié le script pour vérifier que le login et que le passe, le login me retourne toujours "Non" et le passe fonctionne et me retourne "Oui".

Le problème vient donc de "login".

Comment régler le problème ? Une idée ?

Merci beaucoup !

Réponses

  • AliGatorAliGator Membre, Modérateur
    mars 2011 modifié #2
    Tu mets : [tt]"login=%@ & passe=%@[/tt]
    Ce qui veut dire que quand tu penses passer comme login "test" et comme mode de passe "test", cela passe [tt]"login=test & passe=test"[/tt]
    Ce qui veut dire... que tu passes "test " comme login (oui, avec un espace à  la fin), et que tu ne passes rien à  la clé "passe", par contre... tu envoies la valeur "test" à  la clé " passe" (oui, avec un espace au début) !
    Autrement dit, ta variables $_POST de PHP vaut :
    {<br />&nbsp; &quot;login&quot; =&gt; &quot;test &quot;,<br />&nbsp; &quot; passe&quot; =&gt; &quot;test&quot;<br />}
    

    Il ne faut pas mettre d'espaces autour du "&", sinon ces espaces feront partie de la clé ou de la valeur passée dans l'URL !

    Tu aurais pu t'en rendre compte en mettant quelques traces de debug dans ton PHP, genre
    echo &quot;login: &lt;$login&gt;&#092;n&quot;;<br />echo &quot;passe: &lt;$passe&gt;&#092;n&quot;;
    
    ;)

    PS : Il est évident que passer un login/mot de passe par POST comme ça en clair est loin d'être sécurisé pour ton service je suppose que tu en as conscience ;) Mais bon
  • Giga_BossGiga_Boss Membre
    01:23 modifié #3
    Salut AliGator, merci pour ta réponse, tu as tout bon, ça fonctionne !!! 3 jours passés dessus lol

    Merci beaucoup !!
Connectez-vous ou Inscrivez-vous pour répondre.