Probleme session_start();

Bonjour, à tous !

donc j'ai voulu faire une inscription (normal rien de plus basique ... email, login, Mot de passe...) seulement je veux faire une vérification si le l'utilisateur est bien connecté afin de pas voir ce qu'il a pas a voir si il est pas connecter ...

donc j'utilise un fichier verif.php ( je met les codes ensuite )

seulement le problème c'est que même quand je suis connecter il m'affiche que je suis pas connecter ... ( Arf ) avec un reboot qui s'arrête jamais

bon les codes :
Zone membre.php :

<?php 
require('verif.php'); 
?> 
<html> 
<head>


verif.php
<? 
session_start(); 

/* 
si la variable de session login n'existe pas cela siginifie que le visiteur 
n'a pas de session ouverte, il n'est donc pas logué ni autorisé à 
acceder à l'espace membres 
*/ 
if(!isset($_SESSION['ID_Utilisateur'])) { 
  echo 'Vous n\'êtes pas autoris' à acceder à cette zone'; 
  include('connexion.php'); 
  exit; 
} 
?>  


le sql

CREATE TABLE IF NOT EXISTS 'Comptes_Utilisateurs' ( 
  'ID_Utilisateur' bigint(20) NOT NULL auto_increment, 
  'Nom_Utilisateur' varchar(20) character set latin1 NOT NULL, 
  'Mot_de_Passe' varchar(32) character set latin1 NOT NULL, 
  'Adresse_Email' varchar(255) character set latin1 NOT NULL, 
  'Date_Inscription' int(10) NOT NULL default '0', 
  'Compte_Active' enum('0','1') character set latin1 NOT NULL default '0', 
  'Clef_Activation' int(8) NOT NULL, 
  PRIMARY KEY  ('ID_Utilisateur') 
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=14 ;


... Voilà tout aide est la bienvenue !

8 réponses

  1. deplus je pensé que crée un 3 fichier avec ce qu'il y avait dans verif. permet un gain de temps c'est faux ?
    0
    1. j'ai tenté ta solution et sans être connecter j'ai recu a arriver a ma zonemembre... :'(
      0
      1. je te remercie mais je ne comprend pas dans ton poste :

        "https://pastebin.com/p5pLHbyX&lt;/code&gt;"

        pour zonemembre et connexion

        et donc ca :

        "
            // Création des cookies
                        setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
                        setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");
                        /*
                          ICI Déclaration de toutes les variables sessions 
                          Ex. 
                          $_SESSION['ID_Utilisateur']   = '1';
                          $_SESSION['Nom_Utilisateur']  = "0x40";
                          $_SESSION['Pass_Utilisateur'] = "aefrfg/4rrd7797rdv9g7rfd";
                        */
        
                       
                        // Fermeture de la connexion à la base de données
                        mysql_close();
        </code>

        c'est pour zonemembre en faite ?

        pour leur dire un petit coucou un
        <? echo "$Nom_Utilisateur"; ?>
        suffira ^^
        0
        1. J'ai un peu tout modifié, j'ai fais ça sans tester mais en théorie ça fonctionne ><

          Je m'explique un peu j'ai réduit le tout à 2 pages, dans zonemembre, on vérifie que l'utilisateur à une variable session "ID", si c'est le cas il peut voir la page il est donc connecté sinon une include de connexion est faite affichant le formulaire de connexion.

                          // Création des cookies
                          setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
                          setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");
                          /*
                            ICI Déclaration de toutes les variables sessions 
                            Ex. 
                            $_SESSION['ID_Utilisateur']   = '1';
                            $_SESSION['Nom_Utilisateur']  = "0x40";
                            $_SESSION['Pass_Utilisateur'] = "aefrfg/4rrd7797rdv9g7rfd";
                          */
          
                         
                          // Fermeture de la connexion à la base de données
                          mysql_close();
          


          Si l'utilisateur entre les bons identifiants il faudra ajouté les variables SESSION du style ID, Username par exemple afin de les utilisés pour dire un coucou au membre...

          zonemembre.php :
          http://pastebin.com/kCLPWi4i</code>
          
          connexion.php :
          http://pastebin.com/p5pLHbyX</code>
          

          J'ai également une fonction simulant une connexion connected( true/false) qui produit le même effet qu'une connexion via le formulaire.
          </pre>
          0
          1. je vous donne les codes entier :

            zonemembre.php :

            <?php
            require('verif.php');
            ?>
            <html>
            <head>
            <title>FamilleCarpeDiem</title>
            <link rel="stylesheet" type="text/css" href="style1.css" />
            </head>
            <body bgcolor="#FFFFFF" text="#000000">
            <p align="center"><b><font face="Verdana" size="3">Famille CarpeDiem </font></b></p>
            <p align="center">&nbsp;</p>
            <p align="center"><font size="2" face="Verdana">
            Voici la galerie<br><br>
            Bonjours <b><? echo "$Nom_Utilisateur"; ?></b><br><br>
            :)<br>
            <a href="photo.php3?id=<? echo "$id"; ?>">Galerie</a><br>
            
            <br><br>


            connexion.php

            <?php
            if(isset($_COOKIE["ID_UTILISATEUR"]))
            {
            
            echo '<script language="Javascript">
            <!--
            document.location.replace("zonemembre.php3");
            // -->
            </script>';
             session_start();
                $_SESSION['ID_Utilisateur'] = $ID_Utilisateur;
            }
            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
                                          {
                                               
                                               // Définition du temps d'expiration des cookies
                                               $expiration =
                                                    empty($_POST["CB_Connexion_Automatique"]) ? 0 : time() + 90 * 24 * 60 * 60;
                                               
                                               // Création des cookies
                                               setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
                                               setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");
                                               
                                               // Fermeture de la connexion à la base de données
                                               mysql_close();
                                               
                                               // Redirection de l'utilisateur
                                               header("Location: zonemembre.php3");
                                               
                                          }
                                          
                                     }
                                     
                                }
                                
                           }
                           
                           // Fermeture de la connexion à la base de données
                           mysql_close();
                           
                      }
                      
                 }
                 
            }
            ?>
            <!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" lang="fr">
            <head>
            <title></title>			  
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
            <meta http-equiv="content-language" content="fr" />
            <link href="style.css"	title="Défaut" rel="stylesheet" type="text/css" media="screen" />
            	<script type="text/javascript" src="js/jquery-1.2.6.min.js"></script>
            	<script type="text/javascript" src="js/jquery-easing-1.3.pack.js"></script>
            	<script type="text/javascript" src="js/jquery-easing-compatibility.1.2.pack.js"></script>
            	<script type="text/javascript" src="js/coda-slider.1.1.1.pack.js"></script>
            	<script type="text/javascript" src="js/js.js"></script>
            <!--[if lt IE 10]> 
            <style>
            .cadre    {behavior: url(js/PIE.php);}
            </style>
            <![endif]-->
            </head>
            
            
            <body> 
            
            
            
            
                   <div id="conteneur">
            <!-- *************************************** HEADER **************************************** -->	 
                        <div id="header">	
                             <div id="header_haut">
                              <a href=""><img src="images/souscrire.png" width="100" height="17" alt="" /></a>
            				 </div>	
            				 <marquee id="scroller" scrollamount="1" direction="up" width="200" height="50" 
            onmouseover="javascript:scroller.stop()" onmouseout="javascript:scroller.start()">
            Famille Carpediem est en version 0.1 la partie login est ouverte !<br>
            </marquee>
            			
             				 <ul id="menu_header">
                                 <li id="ici"><a href="#" title="">Rubrique</a></li>
                                 <li><a href="#" title="">Rubrique</a></li> 
                                 <li><a href="#" title="">Rubrique</a></li> 
                                 <li><a href="#" title="">Rubrique</a></li> 
                                 <li><a href="#" title="">Rubrique</a></li> 
                                 <li><a href="#" title="">Rubrique</a></li> 
                                 <li><a href="#" title="">Rubrique</a></li>  	
                                 <li><a href="#" title="">Rubrique</a></li> 
                                 <li><a href="#" title="">Rubrique</a></li> 
                             </ul>	 
            				 <!--Champs login !-->
            				 <form action="" method="post">
            <div>  
            <div align=right>
            
            
            </div></center></div>
            </form>
            <!----Fin !---> 
            				 <a id="twitter" href="#"></a>
            			</div>
            			
            <!-- *************************************** HEADER **************************************** -->   
            
            <!-- *************************************** CONTENU **************************************** -->	 
            	   <div id="contenu">  
            	   <div id="cadre">	   
                        <div class="cadre">
                           <!-- Place Cadre 1 !-->
            			</div>
            			
                        <div class="cadre"> 
            			<?php if(isset($message)) { ?>
                 <p><?php echo $message; ?></p>
            <?php } if($masquer_formulaire != true) { ?>
            <form action="http://<?php echo $_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"]; ?>" method="post">
                 <p>
                      Nom d'utilisateur :<br> <input type="text" name="TB_Nom_Utilisateur" /><br>
                 </p>
                 <p>
                      Mot de passe : <br><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>
            <?php } ?>
            </div>
            
            			</div> 
            
              
                       <div class="clear"></div>			 
            	   </div>	


            verif.php est déjà entier plus haut, mon problème c'est que je veux que les utilisateur passe directement par la case connexion qu'ils ne peuvent pas faire directement : http://urldusite/zonemembre.php3
            0
            1. Dans vérif.php :
              session_start(); 
              if(!isset($_SESSION['ID_Utilisateur'])) {  
                echo 'Vous n\'êtes pas autoris' à acceder à cette zone';  
                include('connexion.php');  
                exit;  
              } 
              

              Il y a un session_start() ça c'est très bien mais dans connexion.php il y est encore or c'est complètement inutile, voir même faux !

              Session_start(); doit être placé avant tout code HTML ou condition PHP !

              J'ai du mal à comprendre votre problème ce n'est pas très claire, de plus avec des morceaux de code...
              0
              1. dans connexion.php
                session_start();
                    $_SESSION['ID_Utilisateur'] = $ID_Utilisateur;
                }
                else
                {


                j'ai fais exprès de vérifier que la sessions car je peux mettre autres chose cela reviendra au même non ?

                Si le pseudo n'est pas reconnue c'est que l'email non plus ... ?
                0
                1. Salut,
                  Déjà tu peux supprimer le exit qui ne sert à rien, si tu dois afficher le bas de la page et que tu es dans la condition elle ne s'affichera pas...

                  Sinon à quel moment tu attribut une valeur à $_SESSION['ID_Utilisateur'] ? A quel moment tu fais une requête SQL ?

                  De plus ta condition vérifie uniquement si la variable $_SESSION n'existe pas, et c'est bel et bien toujours le cas !
                  0