Page 1 sur 1

Test de sessions

Posté : 28 janv. 2009, 14:05
par fabrice88250
bonjour,
je met en place un system de membre avec session.
mon probleme et que sa ne fonctionne pas. Je suis hébergé chez 1and1.
lorsque le membre rentre son nom d'utilisateur et son mot de passe les session ne s'enregistre pas et je ne suis pas redirigé vers ma page index.

pourriez vous me dire se que vous en penssez ?

voilà ma page de connexion : conexion.php (formulaire + test validité identifiants)

<?php 
session_start(); // initialisation de la variable session 
?> 
<?

// Redirige l'utilisateur s'il est déjà identifié
if(isset($_SESSION["ID_UTILISATEUR"]))
{
     header("Location: index.php");
}
else
{
     
     // Formulaire visible par défaut
     $masquer_formulaire = false;
     
     // Une fois le formulaire envoyé
     if(isset($_POST["BT_Envoyer"]))
     {
          
          // Vérification de la validité des champs
          if(!ereg("^[A-Za-z0-9_]{2,20}$", $_POST["TB_Nom_Utilisateur"]))
          {
               $message = "Votre nom d'utilisateur doit comporter entre 2 et 20 caractères<br />\n";
               $message .= "L'utilisation de l'underscore est autorisée";
          }
          elseif(!ereg("^[A-Za-z0-9]{6,}$", $_POST["TB_Mot_de_Passe"]))
          {
               $message = "Votre mot de passe doit comporter au moins 6 caractères";
          }
          else
          {
               
               // Connexion à la base de données
               // Valeurs à modifier selon vos paramètres configuration
               mysql_connect("","","");
               mysql_select_db(""); 
               
               // Sélection de l'utilisateur concerné
               $result = mysql_query("
                    SELECT ID_Utilisateur, Nom_Utilisateur, Mot_de_Passe, Compte_Active
                    FROM Comptes_Utilisateurs
                    WHERE Nom_Utilisateur = '" . $_POST["TB_Nom_Utilisateur"] . "'
               ");
               
               // Si une erreur survient
               if(!$result)
               {
                    $message = "Une erreur est survenue lors de la tentative de connexion";
               }
               else
               {
                    
                    // Si aucun utilisateur n'a été trouvé
                    if(mysql_num_rows($result) == 0)
                    {
                         $message = "Le nom d'utilisateur " . $_POST["TB_Nom_Utilisateur"] . " n'existe pas";
                    }
                    else
                    {
                         
                         // Récupération des données
                         $row = mysql_fetch_array($result);
                         
                         // Si le compte n'a pas été activé
                         if($row["Compte_Active"] == 0)
                         {
                              $message = "Votre compte utilisateur n'a pas été activé";
                         }
                         else
                         {
                              
                              // Vérification du mot de passe
                              if(md5($_POST["TB_Mot_de_Passe"]) != $row["Mot_de_Passe"])
                              {
                                   $message = "Votre mot de passe est incorrect";
                              }
                              else
                              {
                               	//création de session							   
								$_SESSION['TB_Nom_Utilisateur'] = $TB_Nom_Utilisateur; //
								$_SESSION['ID_UTILISATEUR'] = $ID_UTILISATEUR; // 
																   
                                   // Fermeture de la connexion à la base de données
                                   mysql_close();
                                   
                                   // Redirection de l'utilisateur
                                   header("Location: index.php");
                                   
                              }
                              
                         }
                         
                    }
                    
               }
               
               // Fermeture de la connexion à la base de données
               mysql_close();
               
          }
          
     }
     
}

?>

<html>
<head>
     <title>Créer un espace membre</title>
</head>

<body>
<? if(isset($message)) { ?>
     <p><?= $message; ?></p>
<? } if($masquer_formulaire != true) { ?>
<form action="http://<?= $_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"]; ?>" method="post">     <p>
          Nom d'utilisateur : <input type="text" name="TB_Nom_Utilisateur" />
     </p>
     <p>
          Mot de passe : <input type="password" name="TB_Mot_de_Passe" />
     </p>
     <p>
          <input type="checkbox" name="CB_Connexion_Automatique" />
          Se connecter automatiquement à chaque visite
     </p>
     <p>
          <input type="submit" name="BT_Envoyer" value="Envoyer" />
     </p>
</form>
<? } ?>
</body>
</html>
je ne comprend pas pourquoi sa ne fonctionne pas

Posté : 29 janv. 2009, 01:31
par rolusseum
<?php 
session_start(); // initialisation de la variable session 
?> 
<?
Pour commencer vire les balises php qui sont inutiles
<?php 
session_start(); // initialisation de la variable session 
Ensuite après une condition et une redirection, "sort" du code.
header("Location: index.php");
exit();
Pour terminer, lorsque tu ouvre une balise php préfère <?php à <?

Posté : 29 janv. 2009, 09:30
par fabrice88250
bonjour, et merci. en fesant des test je metai rendu compte que si je suprimais comme tu me le proposai les balises PHP en trop sa fonctionnait.

Mon probleme est donc résolu je n'ai cependant pas d'explication au pourquoi du comment sa fonctionne maintenant et pourquoi pas avant.

Afin de ne pas mourrir bête, si vous avez une réponse a ce sujet je vous en remercie par avance.

Posté : 29 janv. 2009, 09:58
par albat
Peut-être parce que tu avais utilisé une balise courte ?
// MAL
<?php 
session_start();
?> 
<?  // Éviter les balises courtes !!!
$variable = fonction($valeur);
// PASSABLE
<?php 
session_start();
?> 
<?php // Balise correcte, mais inutile
$variable = fonction($valeur);
// MIEUX
<?php 
session_start();
$variable = fonction($valeur);