Page blanche sur un connexion.php

Bonjour,

je suis novice en php et je suis en train de crée mon site alors voila je vous explique , j'ai fait un systeme d'inscription qui va enregistré dans ma base de donné le login et le pass , j'ai donc dans ma table "id" "login" et "pass" , mon inscription marche impecable apres avoir corigé les beug du script php , seulement voila , quand je veux me connecté ca me dirige vers la page " connexion.php" et ca m'affiche une belle page blanche , et si je fait " afficher le code source de la page" il n'y a rien dedans hors dans mon editeur j'ai bien mon script php , voici mon script php :

<?php

session_start();

$BDD = mysql_connect("IP_Serveur","LOGIN_MYSQL","PASS_MYSQL"); // Connexion à la base de données.
mysql_select_db("Site"); // Sélection de la base de données utilisée.

// On met les variables utilisés du script PHP à FALSE.
$error = FALSE;

$connexionOK = FALSE;

// On regarde si l'utilisateur a bien utilisé le module de connexion pour traiter les données.
if(isset($_POST["connexion"])){

// On regarde si tout les champs sont remplis. Sinon on lui affiche un message d'erreur.
if($_POST["login"] == NULL OR $_POST["pass"] == NULL){

$error = TRUE;

$errorMSG = "Vous devez remplir tout les champs !";

}

// Sinon si tout les champs sont remplis alors on regarde si le nom de compte rentré existe bien dans la base de données.
else{

$sql = "SELECT login FROM users WHERE login = '".$_POST["login"]."' ";

$req = mysql_query($sql);

// Si oui, on continue le script...
if($sql){

// On sélectionne toute les données de l'utilisateur dans la base de données.
$sql = "SELECT * FROM users WHERE login = '".$_POST["login"]."' ";

$req = mysql_query($sql);

// Si la requête SQL c'est bien passé...
if($sql){

// On récupère toute les données de l'utilisateur dans la base de données.
$donnees = mysql_fetch_assoc($req);

// Si le mot de passe entré à la même valeur que celui de la base de données, on l'autorise a se connecter...
if($_POST["pass"] == $donnees["pass"]){

$connexionOK = TRUE;

$connexionMSG = "Connexion au site réussie. Vous êtes désormais connecté !";

$_SESSION["login"] = $_POST["login"];

$_SESSION["pass"] = $_POST["pass"];

}

// Sinon on lui affiche un message d'erreur.
else{

$error = TRUE;

$errorMSG = "Nom de compte ou mot de passe incorrect !";

}

}

// Sinon on lui affiche un message d'erreur.
else{

$error = TRUE;

$errorMSG = "Nom de compte ou mot de passe incorrect !";

}

}

// Sinon on lui affiche un message d'erreur.
else{

$error = TRUE;

$errorMSG = "Nom de compte ou mot de passe incorrect !";

}

}

}

mysql_close($BDD);

?>

<?php if(isset($_SESSION["login"]) AND isset($_SESSION["pass"])){

echo "<p style="color:green">Bienvenue <strong>".$_SESSION["login"]."</strong></p>"; }

} ?>

<?php if($error == TRUE){ echo "<p align="center" style="color:red"><strong>".$errorMSG."</strong></p>"; } ?>

<?php if($connexionOK == TRUE){ echo "<p align="center" style="color:green"><strong>".$connexionMSG."</strong></p>"; } ?>

Merci d'avance .

9 réponses

Résumé de la discussion

Problème principal : après l’inscription, la connexion redirige sur une page blanche et le code source n’apparaît pas, ce qui peut indiquer une erreur PHP non affichée. Des suggestions pointent des soucis dans le script : double requêtes SQL, utilisation de $_POST sans quotes ou validation insuffisante des champs, et des tests 'if ($sql)' au lieu de vérifier les résultats. D’autres échanges suggèrent des erreurs d’authentification, comme comparer directement le mot de passe saisi avec celui en base sans hachage, et des problèmes de gestion des sessions qui ne s’actualisent pas sur la même page. Réponses suggèrent d’activer l’affichage des erreurs, d’utiliser des requêtes préparées ou au minimum mysql_real_escape_string, et de corriger les erreurs de sélection DB et des guillemets.

Bobot (l’IA à votre service)
  1. Salut,

    Il me semble que la session ne peut être pris en compte dans une même page si celle-ci na pas été ré-actualisée. Par ailleurs, vous sélectionnez 2 fois les mêmes données et vos messages d'erreurs sont répétitifs. Pour finir, il y a des erreurs de double quotte sur les 2 dernières lignes.

    A l'arrache ... :
    <?php 
    session_start();
    
    mysql_connect("IP_Serveur","LOGIN_MYSQL","PASS_MYSQL"); // Connexion à la base de données. 
    mysql_select_db("Site") or die('Impossible de sélectionner une base de données.'); // Sélection de la base de données utilisée. 
    
    // On regarde si l'utilisateur a bien utilisé le module de connexion pour traiter les données. 
    if(isset($_POST["connexion"])){
    
    	// On regarde si tout les champs sont remplis
    	if(empty($_POST["login"]) OR empty($_POST["pass"])){ 
    		echo "Vous devez remplir tout les champs !"; 
    	} 
    	// Sinon si tout les champs sont remplis
    	else{ 
    		//on va chercher tout ce qui correspond à l'utilisateur
    		$utilisateur = mysql_query("SELECT login, pass FROM users WHERE login='".mysql_real_escape_string($_POST["login"])."' AND pass='".mysql_real_escape_string($_POST["pass"])."'");
    		$result = mysql_fetch_assoc($utilisateur);
    		//si le résultat est égal à 0
    		if(mysql_num_rows($utilisateur) == 0)
    		{
    			echo 'Aucun utilisateur ne correspond à votre demande!';
    		}
    		else{
    			//on extrait les données
    			extract($result);
    			//on libère le résultat de la mémoire
    			mysql_free_result($utilisateur);
    			//on créer les sessions
    			$_SESSION["login"] = $login; 
    			$_SESSION["pass"] = $pass; 
    			//on redirige vers cette même page pour que la session soit pris en compte
    			echo 'Connexion réussie, redirection en cours...<script type="text/javascript">
    window.setTimeout("location=(\'votrepage.php\');",3000)
    </script>';
    		}
    	}
    }
    //si les 2 sessions existent
    if(isset($_SESSION["login"]) && isset($_SESSION["pass"])){
    	echo '<p style="color:green">Bienvenue <strong>'.$_SESSION["login"].'</strong></p>';
    }
    
    mysql_close();
    ?>