Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/11/2010, 17h11   #1
skandhal
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Par défaut Page PHP qui ne veut pas s'afficher

Bonjour à toutes et à tous,

J'ai un problème avec une page php qui n'affiche plus rien.

En gros la situation:

page1.php contient du php et un formulaire HTML permettant la saisie d'un nom d'utilisateur et d'un mot de passe pour se connecter à une partie du site web. Jusque là aucun problème.

Lorsque l'on appui sur le bouton "se connecter", je passe (par la méthode POST) les paramètres de mon formulaire à une autre page php (page2.php).

page2.php récupère les variables $_POST qui sont comparées à la base de données.
Si ces données sont exactes, l'utilisateur est connecté.
Si les données sont erronées, l'utilisateur est informé de s'il s'agit d'une erreur sur le nom d'utilisateur (l'utilisateur n'existe pas) ou sur le mot de passe (le mot de passe est incorrect). Rien d'extra ordinaire non plus.

Donc hier soir je faisais mes tests avec des noms d'utilisateurs et mots de passe pour vérifier la cohérence de mon script php. Cela fonctionnait normalement, mais tout d'un coup sans avoir changé quoi que ce soit dans mon script de vérification. Tout c'est mis à vaciller!

Par exemple un utilisateur test avec comme mot de passe test:

A 21h50: L'utilisateur s'est bien connecté.
A 21h51: Mot de passe incorrect.
A 21h52: Page blanche dans le navigateur.

J'ai commencé par vérifier les données dans la base de données. L'utilisateur test et son mot de passe n'ont pas été effacé, ni changé. Pourquoi alors ai-je eu mot de passe incorrect, sachant que mon script n'a pas changé entre 21h50 et 21h52.

Bon connaissant le proverbe suivant: "La nuit porte conseil", j'ai jeté un dernier coup d'oeil à mon script et je suis parti dormir.

Cet après midi, je ré-ouvre ma page1.php, je remet mes identifiants test/test, je clique sur "se connecter" et paf à nouveau page blanche. Je décide donc de faire un petit clic droit > afficher le code source. Et là, surprise! Rien! Même pas une balise html, header, body ou autre. LE NEAN COMPLET !!!

Je décide donc de commenter toutes les lignes de mon script PHP et de mettre un simple echo "bonjour"; et de raffraichir ma page2.php. Surprise toujours rien dans le navigateur et dans le code source. Si je met du html pur idem rien ne s'affiche (code source inclus).

Je n'ai aucun problème avec mes autres pages html ou php. Je ne comprends ce qui se passe avec celle là.

Auriez-vous une idée de ce qui peut poser problème? Parce que là je sèche complet sur la question.

En attendant: je vais tenter de changer le nom de la page pour voir, vraiment par curiosité, mais je doute que ça change quelques choses.
  Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 17h19   #2
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
on veut voir ton code
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 17h29   #3
skandhal
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Code HTML :
1
2
3
4
5
<form name='login_form' method='post' action='./page2.php' >
	Adresse e-mail: <input id="mail" type="text" name='mail' maxlength="32" size="35"/> 
	Mot de passe: <input id="password" type="password" name='password' maxlength="8" size="10"/> 
	<input id="button" type="submit" value="Se connecter" onclick='return check_login_form();' /><br />
</form>
Code de page2.php
Code PHP :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
	<head>
		<title>xxxxxxxxx</title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<meta name="author" content="xxxxxxxxx" />
		<meta name="description" content="xxxxxxxxx" />
		<meta name="keywords" content="xxxxxxxxx" />
		<meta name="reply-to" content="xxxx@xxxx" />
		<link rel="stylesheet" media="screen" type="text/css" title="xxxxxxxxx" href="css_bet.css" />
		<link rel="icon" type="image/x-icon" href="picture/favicon.ico" />
 
	</head>
	<body>
		<?php include("headerandmenu.php"); ?> <!--  -->
		<div id="content1">
			Vérification de vos identifiants de connexion en cours. Merci de patienter quelques secondes...<br />
			<img src="pictures/#" alt="Logo patienter rotatif"/><br />
			<?php
				if(isset($_POST['mail']) && isset($_POST['password']))
				{
					if(!empty($_POST['mail']) && !empty($_POST['password']))
					{
						/* Connexion au server MySQL */
						$idConn = mysql_connect("localhost", "XXXX", "XXXX");
						/* Sélection de la base de données */
						mysql_select_db("_db_bet");
 
						$mail = mysql_real_escape_string($_POST['mail']);
						$mail = strtolower($mail); // Forçage en minuscule
 
						$password = md5($_POST['password']); // Cryptage du mot de passe MD5
 
						$password_db = "";
						$mail_db = "";
 
						/* Construction de la requête MySQL et récupération des résultats */
						$return = mysql_query('SELECT * FROM t_users WHERE mail = \'' . $mail .'\'') or die(mysql_error());
						/* Fermeture de la connexion au serveur MySQL */
						mysql_close($idConn);
						/* Traitement des résultats */
						while ($data = mysql_fetch_array($return))
						{
							$password_db = $data["password"];
							$mail_db = strtolower($data["mail"]);
						}
						/* Adresse mail présente dans la base de données, vérification du mot de passe */
						if($password == $password_db) /* Mot de passe valide */
						{
							/* On redirige l'utilisateur */
							echo "Connexion réussie, vous allez être redirigé dans quelques secondes vers votre compte.<br />
								Si vous n'êtes par redirigé automatiquement cliquez <a href=\"#\">ici</a>, merci."; // INSERER LE LIEN VERS LA PAGE DE CONNEXION ! ! ! <==========
 
								/* Mettre à jour la base de données avec:
								 * adresse IP de l'utilisateur ($REMOTE_ADDR) pour IP_address
								 * date du jour pour last_connection
								 * 
								 */
 
								/* Connexion au server MySQL */
								$idConn = mysql_connect("localhost", "XXXX", "XXXX");
								/* Sélection de la base de données */
								mysql_select_db("_db_bet");
								/* Construction de la requête MySQL et récupération des résultats */
								$return = mysql_query('UPDATE t_users SET IP_address=' . $REMOTE_ADDR . ', last_connection='. now() .' WHERE mail = \'' . $mail .'\'') or die(mysql_error());
								/* Fermeture de la connexion au serveur MySQL */
								mysql_close($idConn);
 
								/* SCRIPT REDIRECTION ICI */
 
						}
						else if($mail_db != $mail) 
						/* Les mots de passe de correspondent pas: Erreur de saisie utilisateur */
						else if($password != $password_db) echo "Le mot de passe n'est pas correct.<br />";
						/* L'adresse mail est introuvable dans la base de données: Erreur de saisie utilisateur */
						else echo "L'adresse mail n'existe pas dans notre base de données.<br />";
					}
					/* Uniquement pour les utilisateurs n'autorisant pas JavaScript */
					else
					{
						/* On affiche un message d'erreur à la place du message de vérification */
						echo "Le formulaire de connexion n'a pas été rempli correctement.<br />";
						/* Champ adresse e-mail vide */
						if(empty($_POST['mail'])) echo "Vous n'avez pas saisi votre adresse e-mail.<br />";
						/* Champ mot de passe vide */
						if(empty($_POST['password'])) echo "Vous n'avez pas saisi votre mot de passe.<br />";
					}
				}
				/* On affiche un message d'erreur à la place du message de vérification */
				else echo "Vous ne pouvez pas vous connecter de cette manière.<br />
						Veuillez utiliser le formulaire de connexion, cliquez <a href=\"#\">ici</a>.<br />"; // INSERER LE LIEN VERS LA PAGE DE CONNEXION ! ! ! <==========
			?>
		</div>
 
		<?php include("footer.php"); ?> <!--  -->
	</body>
</html>

Voilà à la demande de Madfrix

C'est grave docteur ?
  Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 17h40   #4
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Que vaut ta fonction check_login_form() définie (bizzarement) sur un un input de type submit ?
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 17h50   #5
skandhal
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
C'est une simple fonction en JS qui me permet d'afficher un message d'erreur si les champs du formulaire sont remplis.

Code JavaScript :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<script type="text/javascript"><!--
function check_login_form() // VERIFICATION DU FORMULAIRE
{
	var msg = "";
	if (document.login_form.mail.value == "") // VERIFICATION DU NOM
	{
		msg += "Votre adresse e-mail.\n";
		document.login_form.mail.style.backgroundColor = "#FFFFFF";
	}
	if (document.login_form.password.value == "") // VERIFICATION DU PRENOM
	{
		msg += "Votre mot de passe.\n";
		document.login_form.password.style.backgroundColor = "#FFFFFF";
	}
	if (document.login_form.mail.value != "" && document.login_form.password.value != "") // SI LES CHAMPS SONT REMPLIS
	{
		return(true);
	}
	else // SINON EDITION DU MESSAGE D'ERREUR
	{
		alert('Veuillez compléter l\'(les) information(s) suivante(s) :\n'+msg);
		return(false);
	}
}//-->
</script>
  Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 18h23   #6
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
modifie l'action du form avec une page php inexistante voir s'il t'envoie bien un message d'erreur et si tu quittes ta page blanche
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 18h30   #7
Membre confirmé
 
Homme Benjamin Rouxel
Développeur informatique
Inscription : avril 2007
Messages : 238
Détails du profil
Informations personnelles :
Nom : Homme Benjamin Rouxel
Âge : 25
Localisation : France, Côtes d'Armor (Bretagne)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2007
Messages : 238
Points : 228
Points : 228
Envoyer un message via MSN à psylox
Salut,
en haute de page2.php tu peux aussi ajouter
Code :
1
2
 
error_reporting(E_ALL);
__________________
Linux because rebooting is just for adding medias
psylox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 19h02   #8
skandhal
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
@Madfrix:
J'ai l'équivalent du 404 pour Google Chrome: Ooops! La page demandée n'a pu être trouvée. Si je change page2.php par une page qui n'existe pas.

@Psylox:
J'ai mis
Code :
<?php error_reporting(E_ALL); ?>
tout en haut de page donc avant <html and co>. Je n'ai aucun changement, pas même un message d'erreur ou quoi que ce soit.

----
@Tous:
J'ai remarqué autre chose encore plus bizarre que tout le reste.

Dans chacune de mes pages je fais un include php, pour afficher l'entête du site (l'image du haut équivalent à celle de Developpez.com) et le menu du site.

Bizarrement mes images s'affichent sans problème et mon menu ne s'affiche pas sur certaine de mes pages, depuis quelques minutes seulement ce bug est apparu. Encore plus étonnant, c'est que c'est le même fichier qui contient l'image et le menu, donc je comprends vraiment pas pourquoi il m'inclut que la moitié de ce fichier.

Dernière modification par Deepin ; 29/11/2010 à 07h48. Motif: Merci d'utiliser la balise [code] (bouton #) de l'editeur.
  Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 20h47   #9
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
C'est surement parce qu'une fonction php plante lamentablement et que le reste du code n'est pas affiché. As tu essayé de tout commenter et de retirer les commentaires au fur et à mesure pour voir où ca plante ?
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 22h05   #10
skandhal
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Oui j'ai testé et même avec la totalité du script en commentaire j'ai une page blanche (et code source vide quand je demande d'afficher le code).

Est ce que ça peut venir d'un problème du serveur apache?

Car comme je l'ai dit dans post précédent. J'ai un
Code :
<?php include("headerandmenu.html" ?>
au début de chacune de mes pages.

Dans ce fichier j'ai 2 <div> un pour l'entête graphique du site et un autre pour le menu. Je n'ai que l'entête graphique qui s'affiche depuis quelques heures.

En gros plus j'essaye de m'en sortir et plus je m'enfonce j'ai l'impression.

Dernière modification par Deepin ; 29/11/2010 à 07h49. Motif: Merci d'utiliser la balise [code] (bouton #) de l'editeur.
  Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 22h44   #11
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
As tu regardé les logs apache et php ?
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 23h33   #12
skandhal
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
En ce qui concerne les logfiles:

>apache: RAS mis à part quelques tentatives de piratages qui ont échoués.

>php: les logs sont bien en ON mais impossible de les trouver

Connais-tu le chemin par défaut des log de php? J'ai parcouru le ini mais il est vraiment vaste j'ai dû louper la ligne qui indique le chemin à plusieurs reprises. Mais en console sous vi pas facile de faire une recherche

Bref, je continu à chercher.
  Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2010, 13h55   #13
skandhal
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
J'ai tjrs les mêmes problèmes. Personne d'autres n'a d'idées pour m'aider à résoudre le soucis?
  Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2010, 15h42   #14
Membre éclairé
 
Inscription : octobre 2004
Messages : 235
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 235
Points : 360
Points : 360
Commence progressivement :

- si tu mets juste "hello world" dans page2.php ?
- si tu mets juste
Code :
<? echo "hello world (echo)"; ?>
dans page2.php ?
- si tu mets juste
Code :
<pre><? var_dump($_POST); ?></pre>
dans page2.php ?
Joker-eph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 11h54   #15
skandhal
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
ça ne change rien.

Je vais désinstaller/réinstaller Apache et refaire toute sa configuration.
Je vous tiens au courant si la situation rentre dans l'ordre après cela.

J'ai vraiment besoin d'avancer maintenant et je ne m'en sors plus. Donc aux grands maux les grands remèdes.

Merci en tout cas pour les aides et conseils que vous m'avez apporté.

Je passe pas en résolu car ce n'est pas le cas pour le moment
  Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 18h41   #16
Membre éclairé
 
Inscription : octobre 2004
Messages : 235
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 235
Points : 360
Points : 360
Citation:
Envoyé par skandhal Voir le message
ça ne change rien.
Tu veux dire que même en vidant complêtement test2.php et en mettant uniquement "hello world" sans balises <? ?> il n'y a rien qui s'affiche ?
Joker-eph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 15h10   #17
skandhal
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Exact (2 sujets en même temps j'ai du mal a suivre )
  Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 15h15   #18
Membre éclairé
 
Inscription : octobre 2004
Messages : 235
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 235
Points : 360
Points : 360
Est-ce qu'il y a un .htaccess quelque part ?

Sinon il ne reste que les logs apache à éplucher ...
Joker-eph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 15h25   #19
skandhal
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Aucun .htaccess pour le moment.
Dans les logs apache, je n'ai rien trouvé. Il me renvoit bien ma page j'ai des status 200 partout pour ma page2.php.
  Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Mettre Résolu
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h24.


 
 
 
 
Partenaires

Hébergement Web