Probleme session_start();

Fermé
CarpeDiem* Messages postés 6 Date d'inscription mercredi 12 septembre 2012 Statut Membre Dernière intervention 12 septembre 2012 - Modifié par CarpeDiem* le 12/09/2012 à 12:00
CarpeDiem* Messages postés 6 Date d'inscription mercredi 12 septembre 2012 Statut Membre Dernière intervention 12 septembre 2012 - 12 sept. 2012 à 19:29
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

0x40 Messages postés 65 Date d'inscription vendredi 7 septembre 2012 Statut Membre Dernière intervention 14 septembre 2012 41
12 sept. 2012 à 12:22
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
CarpeDiem* Messages postés 6 Date d'inscription mercredi 12 septembre 2012 Statut Membre Dernière intervention 12 septembre 2012
12 sept. 2012 à 12:25
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
0x40 Messages postés 65 Date d'inscription vendredi 7 septembre 2012 Statut Membre Dernière intervention 14 septembre 2012 41
Modifié par 0x40 le 12/09/2012 à 12:44
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
CarpeDiem* Messages postés 6 Date d'inscription mercredi 12 septembre 2012 Statut Membre Dernière intervention 12 septembre 2012
12 sept. 2012 à 13:42
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
0x40 Messages postés 65 Date d'inscription vendredi 7 septembre 2012 Statut Membre Dernière intervention 14 septembre 2012 41
12 sept. 2012 à 16:14
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.
0
CarpeDiem* Messages postés 6 Date d'inscription mercredi 12 septembre 2012 Statut Membre Dernière intervention 12 septembre 2012
12 sept. 2012 à 16:35
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
CarpeDiem* Messages postés 6 Date d'inscription mercredi 12 septembre 2012 Statut Membre Dernière intervention 12 septembre 2012
12 sept. 2012 à 17:14
j'ai tenté ta solution et sans être connecter j'ai recu a arriver a ma zonemembre... :'(
0
CarpeDiem* Messages postés 6 Date d'inscription mercredi 12 septembre 2012 Statut Membre Dernière intervention 12 septembre 2012
12 sept. 2012 à 19:29
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

Discussions similaires