Probleme erreur php

Résolu/Fermé
maxime - 29 janv. 2010 à 23:15
 maxime - 31 janv. 2010 à 20:56
Bonjour,
je suis en train de faire un site web
je veux le proteger par un unique identifiant et un mot de passe.

voici ce que j'ai mis dans ma page d'accueil

<h1><?php include('login.php3'); ?></h1>

jusque là ca va.

le fichier login.php3 contient :

<?php
if ($Message == "Invalide")
{ print ("<B><CENTER><FONT COLOR=RED>
</FONT></CENTER></B>\n");
}
print ("<FORM ACTION=\"Log.php3\" METHOD=POST>\n");
print ("Login : <INPUT TYPE=TEXT NAME=Utilisateur SIZE=10><BR>\n");
print ("Password : <INPUT TYPE=PASSWORD NAME=Mdp SIZE=7><BR>\n");
print ("<INPUT TYPE=SUBMIT NAME=SUBMIT VALUE=\"Go\">\n");
?>

Jusque la ca marche le formulaire apparait et je peux le remplir le problème et lors de la vérification dans le fichier log.php3, ce dernier contient :

<?php
if (($Utilisateur == "maxime") && ($Mdp == "max"))
{ header ("Location: index.php3");
exit;
}
else
{ header ("Location: login.php3?Message=Invalide");
exit;
}
?>

Lorsque je suis suis sur le site internet déja en ligne, et que je rentre les bons ou les mauvais identifiants, une page d'erreur s'ouvre.

il doit avoir un probleme dans le fichier log.php3 mais je ne trouve pas.
Je vous serais trés reconnaissant de me trouver et de me reparer l'erreur.

D'avance merci
Maxime

15 réponses

avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
29 janv. 2010 à 23:17
La fonction header() ne peut plus être utilisée lorsque les entêtes HTTP sont envoyées au client, c'est-à-dire avant que le premier caractère (espace compris) soit envoyé.
En gros il ne peut y avoir aucun caractère avant le "<?php" et aucun echo avant header()
1
Bonjour et merci de preter attention à mon cas.
Si j'ai bien compris le probleme viendrait du fait que lorsque le fichier log.php3 s'execute une page html est déjà ouverte.
Peux tu me dire comment faire pour résoudre ce problème, ca fait 2 jours que je cherche sur le web la réponse et je n'y arrive pas.
D'avance merci
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
30 janv. 2010 à 13:05
Bonjour,

pour le header, il faut qu'il n'y ait AUCUNE BALISE HTML ou caracter avant

hors tu mets:

<h1><?php include('login.php3'); ?></h1>

donc il y a un <h1> avant

d'ailleurs je ne voit pas l'interet de ce h1

mets tout simplment

<?php include('login.php3'); ?>


et attention il faut que cette ligne soit bien au début de t page, pas de ligne vide ou d'espace avant
0
jona303 Messages postés 369 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 28 janvier 2013 28
30 janv. 2010 à 13:50
Il y a aussi que pour récupérer les valeurs de ton form qui est en mode post, tu dois faire $_POST['Utilisateur'] et pas $Utilisateur
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
30 janv. 2010 à 15:11
Retirer le <h1> ne résoudra pas le problème car normalement il y a encore du texte avant comme le doctype, l'entête HTML (<head>, qui contient les meta, le CSS, les scripts JS, le titre, ...) et les autres éléments de la page.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
D'aprés vous je devrais remplacer la ligne:

if (($Utilisateur == "maxime") && ($Mdp == "max"))

par

if (($_POST['Utilisateur']=="maxime" )&&($_POST['MDP']=="max"))

Il est normal qu'il y ai de fois le sigle==?

J'essaye ca et je vous tiens au courant.

Merci
Maxime
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
30 janv. 2010 à 16:07
C'est bien ça. Par contre, ça, ça sera encore mieux :
if($_POST['Utilisateur'] == "maxime" && $_POST['MDP'] == "max")
Et sans majuscules ça serait encore mieux.
Pour les deux "=", c'est normal.
0
On avance,
J'ai incorporé la ligne donnée.
Maintenant lorsque je rentre identifiant et mdp et au lieu , c'est le texte du code de la page log.php s'affiche. ( je sais pas si c'est trés clair).

maxime
0
je recommence:
j'ai changé la ligne de commande par celle que tu m'as proposée.

Une fois sur le site lorsque je mais des identifiants et mdp bon ou mauvais, avant j'avais un message d'erreur maintenat c'est le code du fichier log.php3 qui s'affiche, mais il ne "s'execute" pas.

Une idée??

merci
maxime
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
30 janv. 2010 à 16:42
La ligne est correcte, ça ne vient pas de là.
Tu as peut-être oublié de fermer un guillemet ou un apostrophe.
0
J'ai vérifié je n'ai rien trouvé qui cloche.
Peux tu verifier pour moi voici les 2 fichiers

login.php: ( a priori celui là doit etre bon)
<?php
if ($Message == "Invalide")
{ print ("<B><CENTER><FONT COLOR=RED>
!</FONT></CENTER></B>\n");
}
print ("<FORM ACTION=\"log.php3\" METHOD=POST>\n");
print ("Login : <INPUT TYPE=TEXT NAME=Utilisateur SIZE=10><BR>\n");
print ("Password : <INPUT TYPE=PASSWORD NAME=Mdp SIZE=7><BR>\n");
print ("<INPUT TYPE=SUBMIT NAME=SUBMIT VALUE=\"Go\">\n");
?>

log.php:
<?php
if($_POST['Utilisateur'] == "maxime" && $_POST['Mdp'] == "max")
{header ("Location: $accueil.php");
exit;
}

else
{header ("Location: login.php3?Message=Invalide");
exit;
}
?>

Merci de regarder.
maxime
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
30 janv. 2010 à 17:49
header ("Location: $accueil.php");
Où est définie $accueil ?
0
le fichier accueil est situé dans le meme dossier.
a quoi sert le symbole $ ?

il y avait un probleme de majuscule entre login.php et log.php

Maintenant, lorsque je rentre les identifianst et mdp sur le site, le site veut que je télécharge le fichier log.php3.
je me dis qu'il y a une commande dans le code login.php qui me "dis" de le télécharger et non pas de l'executer.
Voici le code:
<?php
if ($Message == "Invalide")
{ print ("<B><CENTER><FONT COLOR=RED>Le Login et Password ne sont pas valide !</FONT></CENTER></B>\n");
}
print ("<FORM ACTION=\"log.php3\" METHOD=POST>\n");
print ("Login : <INPUT TYPE=TEXT NAME=Utilisateur SIZE=10><BR>\n");
print ("Password : <INPUT TYPE=PASSWORD NAME=Mdp SIZE=7><BR>\n");
print ("<INPUT TYPE=SUBMIT NAME=SUBMIT VALUE=\"Go\">\n");
?>

Il y a t-il qqchose dans ce gout là??
Merci
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
30 janv. 2010 à 23:10
Retire le "$" si tu as un fichier nommé accueil.php
Est-ce que ton hébergeur supporte le PHP ?
0
jona303 Messages postés 369 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 28 janvier 2013 28
31 janv. 2010 à 15:41
je ne sais pas mais ton fichier accueil c'est un fichier .php ?? et sinon pourquoi log.php3
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
31 janv. 2010 à 16:01
À voir le HTML qu'il génère, son site doit dater de l'époque de PHP3 :)
0
merci à tous de votre aide, j'ai finis finalement à trouver un autre script sur le net et en le modifiant un peu j'ai réussi à faire ce que je voulais.
0