c'est l'angoisse de la page blanche...

Eléphant du PHP | 95 Messages

07 juin 2006, 11:14

bonjour
ben voila mon problème c'est un bête lien
// Si l'utilisateur est administrateur, affichage du bouton d'administration 
		$ligne = mysql_fetch_assoc($resultat);
		if ($ligne["typeuser"] == 1)
			echo '<tr><td height="34" scope="row"><div align="left"><a href="administrer.php" class="navText">Administrer le syst&egrave;me</a></div></td></tr>';
qui donne une page blanche, sans messages, rien :
<?php
		
if (isset($_POST["identifiant"]) or die(mysql_error()))
{
    // Définition des variables de session à partir de identifiant et passwd de la page index
    $_SESSION["login"] = $_POST["identifiant"];
    $_SESSION["password"] = $_POST["passwd"];

	// Connexion à la base de données
    mysql_connect($serveur,$utilisateurserveur,$mdpserveur) or die("Impossible de se connecter à la base de données.  ".mysql_error());
    mysql_select_db("resadgac") or die(mysql_error());
    // Requête de vérification de l'utilisateur et de son statut
    $requete = "SELECT DISTINCT login, passwd, typeuser FROM users, typeusers WHERE users.login = '".$_SESSION["login"]."' AND users.passwd = '".$_SESSION["password"]."' AND users.typeuser=typeusers.numtype AND typeuser = 1" or die(mysql_error());
    // Execution de la requête et comptage du nombre de résultat
    $resultat = mysql_query($requete);
    $nbresultat = mysql_num_rows($resultat);
    // Fin de la requête et comptage du nombre de résultat
    if ($nbresultat != 0)
    {
        // Affichage de la page
		echo '

menu en html

';
    }
    else
    {
        // Renvoi vers l'index et indication par un message de l'erreur de navigation
        echo '<script type="text/javascript">document.location = "index.php";alert ("Erreur dans le login ou bien le mot de passe");</script>';
    }
}
else
{
    echo '<script>document.location = "index.php";alert ("Erreur dans le login ou alors le mot de passe");</script>';
}
?>
la requête marche correctement sous MyAdmin, normal, le code source m'affiche jusqu'au </head>, et je ne vois pas d'erreur de syntaxe a priori, même si c'est toujours possible;-)
serait-il possible qu'il ne garde pas en mémoire les variables de session?
Merci beaucoup d'avance

Eléphant du PHP | 119 Messages

07 juin 2006, 11:16

si je ne m'abuse.

les $_session doivent etre placé avant tout code html ou php.

donc si tu utilise des frames ou des pseudo frame met les dans la banniere du haut.

apres je me trompe peut etre :roll: :roll: :roll: :roll:

tient nous au courant

Eléphant du PHP | 95 Messages

07 juin 2006, 11:20

je n'utilise aucune frame ni rien, juste une bête page quoi ^^ le <head> inclut simplement une fonction js, lien vers la page css et le titre of course
apparement il ne rentre même pas dans la toute première boucle, c'est pour sa que je me posai la question de savoir si le contenu de la variable de session ne disparaitrait pas

edit
et meme en mettant les var de session dans le script de propriétes avant le head c'est toujours la page blanche
<?
	// Déclaration de la continuation de la session
	session_start();
	// Fin de déclaration de la continuation de la session
	// Déclaration de l'inclusion du fichier contenant les informations de connxeion à la base de données
	include 'proprietes.php';
	// Définition des variables de session à partir de identifiant et pass de la page index
    $_SESSION["login"] = $_POST["identifiant"];
    $_SESSION["password"] = $_POST["passwd"];
	// Fin de déclaration de l'inclusion du fichier contenant les informations de connexion à la base de données
?>
Modifié en dernier par Ben-J le 07 juin 2006, 11:24, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

07 juin 2006, 11:22

Tout est possible, si les sessions ne sont pas activées ?

Par ailleurs, peux-tu faire des echo partout (dans chaque if et aussi dans les else) qui ne sont pas des balises HTML, mais juste du texte.

Tu peux aussi utiliser print_r($montableau) qui affiche le contenu des variables de tableau PHP ou var_dump($mavariable) qui affiche le type et le contenu de la variable.

Par ailleurs $_SESSION["login"] = $_POST["identifiant"]; ne fonctionnera que si au début du code PHP (au tout début, avant le <html>, tu as mis session_start().
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 95 Messages

07 juin 2006, 11:28


Par ailleurs, peux-tu faire des echo partout (dans chaque if et aussi dans les else) qui ne sont pas des balises HTML, mais juste du texte.
c'est fait, il n'y que le echo d'avant la première boucle if (isset($_POST["identifiant"]) qui s'affiche

de plus, la page "d'accueil" d'après la connexion marche très bien
Modifié en dernier par Ben-J le 07 juin 2006, 11:32, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

07 juin 2006, 11:31


if (isset($_POST["identifiant"]) or die(mysql_error())) ne convient pas...
met juste
if(isset($_POST['identifiant']))
{
echo 'il y a un identifiant';
}
else
{
echo 'pas d identifiant';
}
Par ailleurs, tu peux, avant le IF faire un var_dump($_POST) pour examiner le contenu de la variable.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 95 Messages

07 juin 2006, 11:37

le message d'erreur situé dans le else du premier if ou
array(0) { } ya pa d id
je pensai pourtant que les variables $_SESSION gardait leur valeur jusqu'a la fermeture de cette session, non?

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

07 juin 2006, 11:44

$_POST n'est pas $_SESSION
et il faut faire un session_start() au début de ton code pour avoir accès au tableau $_SESSION

Tu testes $_POST, il n'y a rien dedans :) donc tu ne récupères pas $_POST, ou alors le champ est vide...

// Définition des variables de session à partir de identifiant et pass de la page index
    $_SESSION["login"] = $_POST["identifiant"]; 
//Si $_POST['identifiant'] vaut "" la var de session sera vide
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 95 Messages

07 juin 2006, 11:49

<?
	// Déclaration de la continuation de la session
	session_start();
	// Fin de déclaration de la continuation de la session
	// Déclaration de l'inclusion du fichier contenant les informations de connxeion à la base de données
	include 'proprietes.php';
	// Définition des variables de session à partir de identifiant et pass de la page index
    $_SESSION["login"] = $_POST["identifiant"];
    $_SESSION["password"] = $_POST["passwd"];
	// Fin de déclaration de l'inclusion du fichier contenant les informations de connxeion à la base de données
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>R&eacute;servations</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<link rel="stylesheet" href="mm_travel2.css" type="text/css" />

<script language="JavaScript" type="text/javascript">
var d=new Date();
monthname= new Array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
//Ensure correct for language. English is "January 1, 2004"
var TODAY = d.getDate() + " " + monthname[d.getMonth()] + " " + d.getFullYear();
</script>

</head>

<?php
		var_dump($_POST);
if (isset($_POST["identifiant"]))
{ echo 'il ya un id';
	// Connexion à la base de données
    mysql_connect($serveur,$utilisateurserveur,$mdpserveur) or die("Impossible de se connecter à la base de données.  ".mysql_error());
    mysql_select_db("resadgac") or die(mysql_error());
    // Requête de vérification de l'utilisateur et de son statut
    $requete = "SELECT DISTINCT login, passwd, typeuser FROM users, typeusers WHERE users.login = '".$_SESSION["login"]."' AND users.passwd = '".$_SESSION["password"]."' AND users.typeuser=typeusers.numtype AND typeuser = 1" or die(mysql_error());
    $resultat = mysql_query($requete);
    $nbresultat = mysql_num_rows($resultat);
    // Fin de la requête et comptage du nombre de résultat
    if ($nbresultat != 0)
    {
        // Affichage de la page
		echo '
 menu

';
    }
    else
    {
        // Renvoi vers l'index et indication par un message de l'erreur de navigation
        echo '<script type="text/javascript">document.location = "index.php";alert ("Erreur dans le login ou bien le mot de passe");</script>';
    }
}
else
{ echo 'ya pa d id';
    
}
?>
Franchement je ne vois pas. le session_start() est bien inclu avant tout le reste etc
les $_POST ne sont pas la bonne méthode??

edit :

j'ai fait des controles de saisie a la page de connexion, les champs ne peuvent pas etre vide

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

07 juin 2006, 12:04

j'ai fait des controles de saisie a la page de connexion, les champs ne peuvent pas etre vide
Prouve le !

Plus sérieusement, si ton var_dump($_POST) donne array(0) { } c'est que tu ne récupères rien d'aucun formulaire.

Peux-tu regarder ton formulaire dans ton navigateur, faire Voir la source (CTRL+U) et copier-coller le HTML sur ce forum ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 95 Messages

07 juin 2006, 13:07

ok ^^ :

Code : Tout sélectionner

<!-- fonction javascript de controle de saisie des paramètres de connexion --> <script> function connecter() { if (document.formulaireconnexion.identifiant.value == "" || document.formulaireconnexion.passwd.value == "") { alert ("Vous n'avez pas entré votre identifiant ou votre mot de passe ! Veuillez complétez vos informations et tentez de vous reconnecter."); document.formulaireconnexion.action = "index.php"; } } </script> (dans le <head>) reste de la page <td scope="row"><form id="formulaireconnexion" name="formulaireconnexion" method="post" action="connecte.php"> <!-- span: voir .css--> <p align="left"><span class="bodyText">&nbsp;&nbsp;Login : &nbsp;&nbsp;&nbsp;</span> <!--champ de saisie du login, avec controle de saisie (ts les login sont = à 5(nom) + 1(prénom) caractères ds la base de données)--> <input name="identifiant" type="text" id="identifiant" maxlength="6"/> </p> <p align="left"><span class="bodyText">Password :</span> <input name="passwd" type="password" id="passwd" /> </p> <label> </label> <div align="center"> <!-- nom du bouton; type:sert a envoyer; class: voir .css; id:résultat; value:texte affiché; onclick: exécution de la fonction définie plus haut--> <input name="connexion" type="submit" class="subHeader" id="connexion" value="Connexion" onClick="javascript:connecter()" />

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

07 juin 2006, 13:13

Quand je clique ur le bouton Connexion, je vais bien au fichier PHP (connecte.php chez toi), et je ne me connecte pas à la base de données, car je n'ai pas configuré cela.

Et j'obtiens

array(3) { ["identifiant"]=> string(5) "mereT" ["passwd"]=> string(8) "motpasse" ["connexion"]=> string(9) "Connexion" } il ya un id
Donc, quand je passe par le formulaire, tout va bien. Par où passes-tu pour tester ton fichier PHP ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 95 Messages

07 juin 2006, 13:29

sur ma page connecte.php, j'ai le lien "administrer le système", avec son affichage si typeuser == 1, il est la haut (le lien) (IE et Firefox idem)
Modifié en dernier par Ben-J le 07 juin 2006, 15:07, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

07 juin 2006, 14:31

Tu veux que le lien apparaisse, c'est bien ça ?

Par ailleurs, ton formulaire n'a pas d'erreur en soi mais as-tu toujours l'affichage echo 'ya pa d id'; ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 95 Messages

07 juin 2006, 14:37

Tu veux que le lien apparaisse, c'est bien ça ?


le lien apparait déja sur la page connecter, ce n'est pas le problème

Par ailleurs, ton formulaire n'a pas d'erreur en soi mais as-tu toujours l'affichage echo 'ya pa d id'; ?
oui, mais c'est pour toutes la pages de "2nd niveau" (tous les liens de la page connecter ne rentre pas dans la boucle et donc message d'erreur du else d'en bas) le problème viendrait donc bien du $_POST etc. mais je vois pas trop quoi faire la :(