Probleme session_start();
CarpeDiem*
Messages postés
6
Statut
Membre
-
CarpeDiem* Messages postés 6 Statut Membre -
CarpeDiem* Messages postés 6 Statut Membre -
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 :
verif.php
le sql
... Voilà tout aide est la bienvenue !
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
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 !
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 !
dans connexion.php
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 ... ?
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 ... ?
Dans vérif.php :
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...
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...
je vous donne les codes entier :
zonemembre.php :
connexion.php
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
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"> </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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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 :
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></pre>
J'ai également une fonction simulant une connexion connected( true/false) qui produit le même effet qu'une connexion via le formulaire.
je te remercie mais je ne comprend pas dans ton poste :
"https://pastebin.com/p5pLHbyX</code>"
pour zonemembre et connexion
et donc ca :
"
c'est pour zonemembre en faite ?
pour leur dire un petit coucou un
"https://pastebin.com/p5pLHbyX</code>"
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 ^^