Page 1 sur 2

Simple petit script qui ne fonctionne pas avec ie :s

Posté : 08 mai 2007, 17:11
par Foxstyle
Bonjour à tous !
Voilà je découvre le langague PHP et j'essaie de réaliser des petits scripts
:roll: , mais je recontre ici un problème, mon script ne marche pas, je n'ai aucune erreur mais il ne marche pas et je ne comprends pas pourquoi....
Lorsque je tape le bon mot de passe c'est comme si $_POST['Submit'] n'était pas définie et de plus le script ne réagit pas toujours de la meme maniere c'est très bizarre. :?
Peut etre ca vous sautera aux yeux ! Merci de votre aide :)
<?
// Name : login.php
 
if (isset($_POST['Submit']))
{
	if($_POST['pass']!="password")
	{
		echo "Mot de passe incorrect"."<br>";
		echo " <form action='login.php' method='post' name='login2'>
		<input name='pass' type='text'>
		<input name='Submit' type='submit' value='Envoyer'>
		</form>";
	}
	else
	{
		echo "it's good!!";
	}
}
else
{
	echo "<html>
	<body>
	<form action='login.php' method='post' name='login'>
	<input name='pass' type='text'>
	<input name='Submit' type='submit' value='Envoyer'>
	</form>
	</body>
	</html>";
}
	
?>

Posté : 08 mai 2007, 17:35
par manix
Quand tu dit :
je n'ai aucune erreur mais il ne marche pas et je ne comprends pas pourquoi....
La page est blanche ? ou tu tape le bon pass et ca te dit erreur ? ou autre chose ?

Posté : 08 mai 2007, 17:44
par Foxstyle
Et ben lorsque je tape le mot de passe, j'ai le champ de texte avec le bouton Envoyer, donc c'est comme si je ne rentrai pas dans le if (isset($_POST['Submit'])) mais directement dans le else ... :roll:

Posté : 08 mai 2007, 17:50
par manix
A ce que j'ai compris dans les tutos isset renvois true lorsque la variable a deja été declarer (creer)

et ca correspond a quoi $_POST['submit'] ??
[/php]

Posté : 08 mai 2007, 18:01
par Foxstyle
Oui voila isset renvoie True lorsque la variable est définie. Ensuite $_POST['Submit'] c'est la variable renvoyée lorsque le bouton à été validé.

Si on avait :
<input name='Boutton' type='submit' value='Envoyer'>

On testerait la variable $_POST['Boutton'].

Posté : 08 mai 2007, 18:09
par alaingpl
Peux tu nous montrer le formulaire..

Posté : 08 mai 2007, 18:11
par manix
Au lieu de faire que si le pass est different de "password" ca fasse le then et sinon le else. tu devrais faire que si pass=="password" ( que si le pass est egal a password ca fasse le then et sinon le else). Permet moi de rester septible sur l'éficassité de ma solution mais on sait jamais tente. Sinon jai vu que pour dire different (!=) certain mettent 2 = (!==) essaye ca aussi.Mais je te garanti rien.

Posté : 08 mai 2007, 18:14
par Foxstyle
Oui voilà je l'ai upper ca sera plus simple :

http://shaketonbody.imingo.net/login.php :wink:

Posté : 08 mai 2007, 18:18
par alaingpl
Désolé, mais plûtot le code du formulaire

Posté : 08 mai 2007, 18:26
par Foxstyle
Bon j'ai cliqué sur le lien et j'ai cru que je devenais fou sur le coup, mais en fait pas tant que ca :lol:
Si vous surfez avec firefox, vous ne rencontrerez pas de probleme c'est seulement avec ie qu'il se produit :? ...
Au lieu de faire que si le pass est different de "password" ca fasse le then et sinon le else. tu devrais faire que si pass=="password" ( que si le pass est egal a password ca fasse le then et sinon le else). Permet moi de rester septible sur l'éficassité de ma solution mais on sait jamais tente. Sinon jai vu que pour dire different (!=) certain mettent 2 = (!==) essaye ca aussi.Mais je te garanti rien.
Ouais j'avais déjà tenté mais rien ... :roll: , je ne connaissais pas le !== mais je viens de tenter et rien non plus ^^[/quote]

Posté : 08 mai 2007, 18:29
par Foxstyle
Désolé, mais plûtot le code du formulaire
Ben le formulaire et le code sont dans une meme page dont j'ai posté le code dans mon premier post:
<?
// Name : login.php
 
if (isset($_POST['Submit']))
{
    if($_POST['pass']!="password")
    {
        echo "Mot de passe incorrect"."<br>";
        echo " <form action='login.php' method='post' name='login2'>
        <input name='pass' type='text'>
        <input name='Submit' type='submit' value='Envoyer'>
        </form>";
    }
    else
    {
        echo "it's good!!";
    }
}
else
{
    echo "<html>
    <body>
    <form action='login.php' method='post' name='login'>
    <input name='pass' type='text'>
    <input name='Submit' type='submit' value='Envoyer'>
    </form>
    </body>
    </html>";
}
    
?>

Le formulaire c'est :
echo "<html>
    <body>
    <form action='login.php' method='post' name='login'>
    <input name='pass' type='text'>
    <input name='Submit' type='submit' value='Envoyer'>
    </form>
    </body>
    </html>";

Posté : 08 mai 2007, 18:37
par Jules Petibidon
hello,

un truc simple pour voir ce que te renvoie ton formulaire :

echo '<pre>' , print_r( $_POST , true ) , '</pre>';

tu colle cette ligne avant le moindre test, cela t'affichera tout ce que contient $_POST.

ensuite, tester $_POST['Submit'] n'a aucun intéret. Si tu veux savoir si ton formulaire a été envoyé, tu teste isset( $_POST['pass'] ), il sera automatiquement "set" si le formulaire a été validé (par contre il peut etre "empty" mais cela n'a aucune importance).

Posté : 08 mai 2007, 18:41
par alaingpl
Si je comprends :

tu souhaites ouvrir une session avec un mot de passe par une personne qui c'est préalablement inscrite.

Si c'est cela, il faut donc une bdd et interroger ta base pour savoir si le password est valide...

Posté : 08 mai 2007, 19:12
par Foxstyle
hello,

un truc simple pour voir ce que te renvoie ton formulaire :

echo '<pre>' , print_r( $_POST , true ) , '</pre>';

tu colle cette ligne avant le moindre test, cela t'affichera tout ce que contient $_POST.
Merci pour cette ligne de code assez utile pour débuger ! J'avais placé un echo $_POST['pass'] mais ta commande est plus pratique elle scanne le tableau $_POST. Du coup j'ai constaté que lorsque je tape le mot de passe $_POST['Submit'] devient non seulement vide mais surtout indéfinie... pour des raisons que j'ignore encore.
ensuite, tester $_POST['Submit'] n'a aucun intéret. Si tu veux savoir si ton formulaire a été envoyé, tu teste isset( $_POST['pass'] ), il sera automatiquement "set" si le formulaire a été validé (par contre il peut etre "empty" mais cela n'a aucune importance).
Je n'y avait pas pensé et je vais testé ca peut etre que ca règlera tout, en fait j'ai utilisé $_POST['Submit'] car imaginons que j'ai plusieurs champs de texte pourquoi en choisir un arbitrairement plutot qu'un autre ? ( ca sra le cas quand j'aurai ajouté le champ login par exemple )
Si je comprends :

tu souhaites ouvrir une session avec un mot de passe par une personne qui c'est préalablement inscrite.

Si c'est cela, il faut donc une bdd et interroger ta base pour savoir si le password est valide...
Oui cest tout a fait ca, sauf que ca ne me serivrai a rien de compliqué les choses vu que si ce petit script ne marche pas je peux m'arréter la ^^

Posté : 08 mai 2007, 19:18
par Foxstyle
Voila grand merci Jules Petibidon ta solution marche !
En tout cas je ne comprends pas bien pourquoi ma solution marche sous firefox et pas sous internet explorer ... :roll:
Et merci à tous ! :wink: