cflo56
Février 16, 2008, 12:02
1
Bonjour, donc j’ai réussi pour faire une Page de Connexion
Mais bon gros problème maintenant !
Donc je vous explique
Je suis en page index.php avec du php(include)
exemple : index.php?page=inscription
etc…
Comme c’est du php include, j’ai réalisé, sur le coté un espace connexion (qui est toujours là) et qui fonctionne
donc je me connecte (il marche avec les sessions).
Tout se passe bien, il revient à index.php dès qu’il est connecté (il me le fait savoir)
Ensuite je veux changer de page, il se déconnecte tout le temps !
Comment faire ?
Voilà la page index.php
<?php
session_start();
$nom_fichier = "index.php";
?>
<?php
ini_set('session.use_trans_sid','1'); // Le '0' ne marche pas
ini_set('url_rewriter.tags','form=fakeentry'); // trans_sid seulement pour les forms
ini_set('session.auto_start','0'); // La session ne demarre que lorsque celle ci est déclarée
ini_set('session.use_cookies','1'); // Initialise le cookie de session
ini_set('session.use_only_cookies','0'); // ...mais pas forcément avec des cookies
ini_set('session.name','OKSES'); // Mon identifiant de session
?>
<?php
$fichier="conf/config.php";
if(file_exists("$fichier"))
{ echo ""; }
else { echo "Le fichier n'existe pas, merci de relancer l'installation du portail. !"; }
?>
<?php
include'sources/date.php';
?>
<?php
include'conf/config.php';
?>
<?php
mysql_connect($host, $user, $mdp)
or die('Impossible de se connecter au serveur '.$host);
mysql_select_db($base)
or die('Impossible de sélectionner la base '.$base);
?>
<link rel="stylesheet" type="text/css" href="themes/default/style.css" />
<title> </title>
<style type="text/css">
<!--
.Style9 {
font-size: 25px;
font-weight: bold;
}
.Style10 {font-size: 14px; font-weight: bold; }
-->
</style>
<div id="content">
<div class="header">
<div class="searchform">
<?php
echo date_fran();
?>
<p><input name="search_query" class="text" type="text" />
<input name="search" class="searchbutton" value="Recherche" type="submit" />
</p>
</div>
<p class="Style9">
<?php
$reponse = mysql_query("SELECT titre FROM config") or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse) )
{
echo $donnees['titre'];
echo "<br />";
}
?>
</p>
<p class="Style10"> <?php
$reponse = mysql_query("SELECT description FROM config") or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse) )
{
echo $donnees['description'];
echo "<br />";
}
?> </p>
</div>
<div class="subheader">
<div class="subheader_right">
<a href="index.php?page=index">Acceuil</a><a href="index.php?page=news">News</a><a href="index.php?page=inscription">Inscription</a><a href="index.php?page=connexion">Espace Membre </a><a href="index.php?page=forum">Forum</a><a href="index.php?page=contact">Contact</a><a href="index.php?page=aide">Aide</a>
</div>
<div class="subheader_left">
<a href="#">Outils Généraux </a>
</div>
</div>
<div class="right">
<div class="info">
</div>
<?php
include'include.php';
?>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</div>
<div class="left">
<p align="center"><strong>Connexion :</strong></p>
<?php
// variables du formulaire
$action = isset($_POST['action']) ? $_POST['action'] : '';
$pseudo = isset($_POST['pseudo']) ? $_POST['pseudo'] : '';
$mdp = isset($_POST['mdp']) ? md5($_POST['mdp']) : '';
// Si aucune action, le formulaire est afficher
if ($action !=1 ) {
echo '<form action="'.$nom_fichier.'" method="post">';
echo '<input type="hidden" name="action" value="1">';
echo 'Pseudo : <br />';
echo '<input type="text" name="pseudo"><br />';
echo 'Mot de Passe : <br />';
echo '<input type="password" name="mdp"><br />';
echo '<input type="submit" value="Connexion"><br />';
echo '</form>';
echo '<p align="center"><a href="index.php?page=inscription">Inscription</a></p>';
echo '<p align="center"><a href="index.php?login=mdp">Mot de Passe Oublié ?</a> </p>';
}
// Sinon
if ($action == 1) {
$q = mysql_query("SELECT *
FROM users
WHERE pseudo='$pseudo'
AND mdp='$mdp'");
$n = mysql_num_rows($q);
if ($n == 1 AND $pseudo != "" AND $mdp != "")
{
// Le login est placé dans la session
$_SESSION['login_session'] = $pseudo;
// Cadre Loggué
echo '<p align="center">Vous êtes Connecté en tant que <strong>'.$pseudo.'</strong></p>';
echo '<p align="center"> </p>';
echo '<p align="center"><a href="index.php?session=profil">Mon Profil</a> </p>';
echo '<p align="center"><a href="deconnexion.php">Deconnexion</a> </p>';
echo '<br />';
}
// Si le login ou le mot de passe sont incorrect
// affiche de nouveau le formulaire
else{
echo '<form action="'.$nom_fichier.'" method="post">';
echo '<input type="hidden" name="action" value="1">';
echo 'Pseudo : <br />';
echo '<input type="text" name="pseudo"><br />';
echo 'Mot de Passe : <br />';
echo '<input type="password" name="mdp"><br />';
echo '<input type="submit" value="Connexion">';
echo '</form>';
echo '<p align="center"><a href="index.php?page=inscription">Inscription</a></p>';
echo '<p align="center"><a href="index.php?login=mdp">Mot de Passe Oublié ?</a> </p>';
echo('<font color="red">Informations incorrectes !</font><br />');
echo('<font color="red">Merci de bien renseigner les champs</font>');
echo('<br />');
}
}
?>
<p><u><em>Statistiques du Site : </em></u></p>
<p><strong>
<?php
include'sources/connectes.php';
?>
</strong></p>
<p><strong> <?php
$fp = fopen("sources/compteur.txt","r+");
$nbvisites = fgets($fp,255);
$nbvisites++;
fseek($fp,0);
fputs($fp,$nbvisites);
fclose($fp);
echo"$nbvisites page(s) vue(s)";
?>
</strong></p>
<p><strong>
<?php
$retour = mysql_query("SELECT COUNT(*) AS nb FROM users");
$donnees = mysql_fetch_array($retour);
?>
<?php echo $donnees['nb']; ?> inscrits sur le site</strong> </p>
</div>
<div class="footer">
<p><a href="#">Flux RSS </a> | <a href="#">Contact</a> | <a href="admin/">Administration</a></p>
<p>© Copyright 2005, <a href="#">Portail Cflo56 </a> | Valid <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a> and <a href="http://validator.w3.org/check?uri=referer">XHTML</a></p>
</div>
</div>
</body>
</html>
Avez vous une expliquation ?
Merci de votre Aide
Si vous avez des solutions merci de m’aider !
Il faut inclure un code de session sur les pages qui sont en Include ? (SI oui lequels ?)
Changer le Code de Index.php ?
Etc ??
Merci
Met tu bien au debut de chaque page php et pour chaque page php un session_start ?
cflo56
Février 16, 2008, 12:39
3
Alors vu que c’est du Php Include, et juste le Cadre du Milieu qui se change et que la base (menu connecté, menu) reste statique, ai je besoin ?
Je viens de tester, voilà l’erreur qu’il affiche :
Notice: A session had already been started - ignoring session_start() in c:\program files\easyphp1-8\www\modules\inscription.php on line 2
ça dit bien ce que ça veux dire session déjà ouverte . tant pour moi !
Moi personellement je mettrait une variable de session à 1 une fois la vérification du login terminée et validée .
ensuite il suffit de faire un test sur cette variable pour la page à afficher
<?php
session_start();
if (isset($_SESSION['connexion']))
{
$connexion=$_SESSION['connexion']; // prendre la valeur de la variable si elle existe
}
else
{
$connexion=0; // si elle n'existe pas, alors elle sera égale à 0
}
if ($connexion == "1") // Elle sera à 1 si la personne est identifiée
{
// Si personne identifiée alors affichage
}
?>
Bien c’est très schématique mais cela marche très bien !
Edité le 16/02/2008 à 14:23
cflo56
Février 16, 2008, 1:31
6
Alors je vois pas ou la placé ! a part en début de page, et j’ai une parse error qui s’affiche je vois pas l’erreur.
Et je sais pas faire pour faire une variable de session à 1 une fois la vérification du login terminée et validée .
Il y a possiblité de corriger mes fonctions qui sont déjà entrés sur ma page, car il s’agit surrement d’un code manquant
Merci
Je suis pas Très fort en php, je viens de m’y mettre,c’est pour cela j’apprend en même temps
Merci
Ps : tu as fait une faute je l’ai corriger mais sa change rien donc merci de m’aider en reprenant les attributs du php ou de bien m’expliquer pour que je puisse retenir
Merci encore bonne journée
Il te suffit de mettre la variable à 1 dans la partie de ton code qui vérifie si le login est correct c-à-d ici
if ($n == 1 AND $pseudo != "" AND $mdp != "")
{
// Le login est placé dans la session
$_SESSION['login_session'] = $pseudo;
$_SESSION['connexion']=1; // mise de la variable connexion à 1
}
Edité le 16/02/2008 à 13:55
cflo56
Février 16, 2008, 6:02
8
Je comprend pas ca marche pas !
Toujours la meme erreur et de plus il y a deux affichages de la zone de connexion qui est dans le premier code html qui est codé en “echo”!
Je comprend pas !
Le code est bon pourtant
<?php
session_start();
if (isset($_SESSION['connexion']))
{
$connexion=$_SESSION['connexion']; // prendre la valeur de la variable si elle existe
}
else
{
$connexion=0; // si elle n'existe pas, alors elle sera égale à 0
}
if ($connexion == "1") // Elle sera à 1 si la personne est identifiée
{
// Si personne identifiée alors affichage
}
?>
<?php
$nom_fichier = "index.php";
?>
<?php
$fichier="conf/config.php";
if(file_exists("$fichier"))
{ echo ""; }
else { echo "Le fichier n'existe pas, merci de relancer l'installation du portail. !"; }
?>
<?php
include'sources/date.php';
?>
<?php
include'conf/config.php';
?>
<?php
mysql_connect($host, $user, $mdp)
or die('Impossible de se connecter au serveur '.$host);
mysql_select_db($base)
or die('Impossible de sélectionner la base '.$base);
?>
<link rel="stylesheet" type="text/css" href="themes/default/style.css" />
<style type="text/css">
<!--
.Style9 {
font-size: 25px;
font-weight: bold;
}
.Style10 {font-size: 14px; font-weight: bold; }
-->
</style>
<?php
$reponse = mysql_query("SELECT titre FROM config") or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse) )
{
$titre = $donnees['titre'];
}
?>
<title><? echo $titre;?> </title>
<div id="content">
<div class="header">
<div class="searchform">
<?php
echo date_fran();
?>
<p><input name="search_query" class="text" type="text" />
<input name="search" class="searchbutton" value="Recherche" type="submit" />
</p>
</div>
<p class="Style9">
<?php
$reponse = mysql_query("SELECT titre FROM config") or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse) )
{
echo $donnees['titre'];
echo "<br />";
}
?>
</p>
<p class="Style10"> <?php
$reponse = mysql_query("SELECT description FROM config") or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse) )
{
echo $donnees['description'];
echo "<br />";
}
?> </p>
</div>
<div class="subheader">
<div class="subheader_right">
<a href="index.php?page=index">Acceuil</a><a href="index.php?page=news">News</a><a href="index.php?page=inscription">Inscription</a><a href="index.php?page=connexion">Espace Membre </a><a href="index.php?page=forum">Forum</a><a href="index.php?page=contact">Contact</a><a href="index.php?page=aide">Aide</a>
</div>
<div class="subheader_left">
<a href="#">Outils Généraux </a>
</div>
</div>
<div class="right">
<div class="info">
</div>
<?php
include'include.php';
?>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</div>
<div class="left">
<p align="center"><strong>Connexion :</strong></p>
<?php
// variables du formulaire
$action = isset($_POST['action']) ? $_POST['action'] : '';
$pseudo = isset($_POST['pseudo']) ? $_POST['pseudo'] : '';
$mdp = isset($_POST['mdp']) ? md5($_POST['mdp']) : '';
// Si aucune action, le formulaire est afficher
if ($action !=1 ) {
echo '<form action="'.$nom_fichier.'" method="post">';
echo '<input type="hidden" name="action" value="1">';
echo 'Pseudo : <br />';
echo '<input type="text" name="pseudo"><br />';
echo 'Mot de Passe : <br />';
echo '<input type="password" name="mdp"><br />';
echo '<input type="submit" value="Connexion"><br />';
echo '</form>';
echo '<p align="center"><a href="index.php?page=inscription">Inscription</a></p>';
echo '<p align="center"><a href="index.php?login=mdp">Mot de Passe Oublié ?</a> </p>';
}
// Sinon
if ($action == 1) {
$q = mysql_query("SELECT *
FROM users
WHERE pseudo='$pseudo'
AND mdp='$mdp'");
$n = mysql_num_rows($q);
if ($n == 1 AND $pseudo != "" AND $mdp != "")
{
// Le login est placé dans la session
$_SESSION['login_session'] = $pseudo;
$_SESSION['connexion']=1; // mise de la variable connexion à 1
}
// Cadre Loggué
echo '<p align="center">Vous êtes Connecté en tant que <strong>'.$pseudo.'</strong></p>';
echo '<p align="center"> </p>';
echo '<p align="center"><a href="index.php?login=profil">Mon Profil</a> </p>';
echo '<p align="center"><a href="deconnexion.php">Deconnexion</a> </p>';
echo '<br />';
}
// Si le login ou le mot de passe sont incorrect
// affiche de nouveau le formulaire
else{
echo '<form action="'.$nom_fichier.'" method="post">';
echo '<input type="hidden" name="action" value="1">';
echo 'Pseudo : <br />';
echo '<input type="text" name="pseudo"><br />';
echo 'Mot de Passe : <br />';
echo '<input type="password" name="mdp"><br />';
echo '<input type="submit" value="Connexion">';
echo '</form>';
echo '<p align="center"><a href="index.php?page=inscription">Inscription</a></p>';
echo '<p align="center"><a href="index.php?login=mdp">Mot de Passe Oublié ?</a> </p>';
echo('<font color="red">Informations incorrectes !</font><br />');
echo('<font color="red">Merci de bien renseigner les champs</font>');
echo('<br />');
}
?>
<p><u><em>Statistiques du Site : </em></u></p>
<p><strong>
<?php
include'sources/connectes.php';
?>
</strong></p>
<p><strong> <?php
$fp = fopen("sources/compteur.txt","r+");
$nbvisites = fgets($fp,255);
$nbvisites++;
fseek($fp,0);
fputs($fp,$nbvisites);
fclose($fp);
echo"$nbvisites page(s) vue(s)";
?>
</strong></p>
<p><strong>
<?php
$retour = mysql_query("SELECT COUNT(*) AS nb FROM users");
$donnees = mysql_fetch_array($retour);
?>
<?php echo $donnees['nb']; ?> inscrits sur le site</strong> </p>
</div>
<div class="footer">
<p><a href="#">Flux RSS </a> | <a href="#">Contact</a> | <a href="admin/">Administration</a></p>
<p>© Copyright 2005, <a href="#">Portail Cflo56 </a> | Valid <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a> and <a href="http://validator.w3.org/check?uri=referer">XHTML</a></p>
</div>
</div>
</body>
</html>
Je vois aucune erreur merci de m’aider
Merci philouvb
La Capture : www.monsterup.com…
Edité le 16/02/2008 à 18:10
Il y avait une petite erreur voilà le code corrigé juste un petit “}” en trop je l’ai commenté que tu voit ou il se trouvait
Un conseil essaie de ne pas faire trop de copier - coller et essaie de comprendre ce que tu doit écrire
<?php
session_start();
if (isset($_SESSION['connexion']))
{
$connexion=$_SESSION['connexion']; // prendre la valeur de la variable si elle existe
}
else
{
$connexion=0; // si elle n'existe pas, alors elle sera égale à 0
}
if ($connexion == "1") // Elle sera à 1 si la personne est identifiée
{
// Si personne identifiée alors affichage
}
?>
<?php
$nom_fichier = "index.php";
?>
<?php
$fichier="conf/config.php";
if(file_exists("$fichier"))
{ echo ""; }
else { echo "Le fichier n'existe pas, merci de relancer l'installation du portail. !"; }
?>
<?php
include'sources/date.php';
?>
<?php
include'conf/config.php';
?>
<?php
mysql_connect($host, $user, $mdp)
or die('Impossible de se connecter au serveur '.$host);
mysql_select_db($base)
or die('Impossible de sélectionner la base '.$base);
?>
<link rel="stylesheet" type="text/css" href="themes/default/style.css" />
<style type="text/css">
<!--
.Style9 {
font-size: 25px;
font-weight: bold;
}
.Style10 {font-size: 14px; font-weight: bold; }
-->
</style>
<?php
$reponse = mysql_query("SELECT titre FROM config") or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse) )
{
$titre = $donnees['titre'];
}
?>
<title><? echo $titre;?> </title>
<div id="content">
<div class="header">
<div class="searchform">
<?php
echo date_fran();
?>
<p><input name="search_query" class="text" type="text" />
<input name="search" class="searchbutton" value="Recherche" type="submit" />
</p>
</div>
<p class="Style9">
<?php
$reponse = mysql_query("SELECT titre FROM config") or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse) )
{
echo $donnees['titre'];
echo "<br />";
}
?>
</p>
<p class="Style10"> <?php
$reponse = mysql_query("SELECT description FROM config") or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse) )
{
echo $donnees['description'];
echo "<br />";
}
?> </p>
</div>
<div class="subheader">
<div class="subheader_right">
<a href="index.php?page=index">Acceuil</a><a href="index.php?page=news">News</a><a href="index.php?page=inscription">Inscription</a><a href="index.php?page=connexion">Espace Membre </a><a href="index.php?page=forum">Forum</a><a href="index.php?page=contact">Contact</a><a href="index.php?page=aide">Aide</a>
</div>
<div class="subheader_left">
<a href="#">Outils Généraux </a>
</div>
</div>
<div class="right">
<div class="info">
</div>
<?php
include'include.php';
?>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</div>
<div class="left">
<p align="center"><strong>Connexion :</strong></p>
<?php
// variables du formulaire
$action = isset($_POST['action']) ? $_POST['action'] : '';
$pseudo = isset($_POST['pseudo']) ? $_POST['pseudo'] : '';
$mdp = isset($_POST['mdp']) ? md5($_POST['mdp']) : '';
// Si aucune action, le formulaire est afficher
if ($action !=1 ) {
echo '<form action="'.$nom_fichier.'" method="post">';
echo '<input type="hidden" name="action" value="1">';
echo 'Pseudo : <br />';
echo '<input type="text" name="pseudo"><br />';
echo 'Mot de Passe : <br />';
echo '<input type="password" name="mdp"><br />';
echo '<input type="submit" value="Connexion"><br />';
echo '</form>';
echo '<p align="center"><a href="index.php?page=inscription">Inscription</a></p>';
echo '<p align="center"><a href="index.php?login=mdp">Mot de Passe Oublié ?</a> </p>';
}
// Sinon
if ($action == 1) {
$q = mysql_query("SELECT *
FROM users
WHERE pseudo='$pseudo'
AND mdp='$mdp'");
$n = mysql_num_rows($q);
if ($n == 1 AND $pseudo != "" AND $mdp != "")
{
// Le login est placé dans la session
$_SESSION['login_session'] = $pseudo;
$_SESSION['connexion']=1; // mise de la variable connexion à 1
// } voilà ce qui était en trop
// Cadre Loggué
echo '<p align="center">Vous êtes Connecté en tant que <strong>'.$pseudo.'</strong></p>';
echo '<p align="center"> </p>';
echo '<p align="center"><a href="index.php?login=profil">Mon Profil</a> </p>';
echo '<p align="center"><a href="deconnexion.php">Deconnexion</a> </p>';
echo '<br />';
}
// Si le login ou le mot de passe sont incorrect
// affiche de nouveau le formulaire
else{
echo '<form action="'.$nom_fichier.'" method="post">';
echo '<input type="hidden" name="action" value="1">';
echo 'Pseudo : <br />';
echo '<input type="text" name="pseudo"><br />';
echo 'Mot de Passe : <br />';
echo '<input type="password" name="mdp"><br />';
echo '<input type="submit" value="Connexion">';
echo '</form>';
echo '<p align="center"><a href="index.php?page=inscription">Inscription</a></p>';
echo '<p align="center"><a href="index.php?login=mdp">Mot de Passe Oublié ?</a> </p>';
echo('<font color="red">Informations incorrectes !</font><br />');
echo('<font color="red">Merci de bien renseigner les champs</font>');
echo('<br />');
}
?>
<p><u><em>Statistiques du Site : </em></u></p>
<p><strong>
<?php
include'sources/connectes.php';
?>
</strong></p>
<p><strong> <?php
$fp = fopen("sources/compteur.txt","r+");
$nbvisites = fgets($fp,255);
$nbvisites++;
fseek($fp,0);
fputs($fp,$nbvisites);
fclose($fp);
echo"$nbvisites page(s) vue(s)";
?>
</strong></p>
<p><strong>
<?php
$retour = mysql_query("SELECT COUNT(*) AS nb FROM users");
$donnees = mysql_fetch_array($retour);
?>
<?php echo $donnees['nb']; ?> inscrits sur le site</strong> </p>
</div>
<div class="footer">
<p><a href="#">Flux RSS </a> | <a href="#">Contact</a> | <a href="admin/">Administration</a></p>
<p>© Copyright 2005, <a href="#">Portail Cflo56 </a> | Valid <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a> and <a href="http://validator.w3.org/check?uri=referer">XHTML</a></p>
</div>
</div>
</body>
</html>
Edité le 16/02/2008 à 18:31
cflo56
Février 16, 2008, 6:36
10
J’ai compris, mais je comprend pas, la session ne reste pas comme pour les autres !
C’est du au localhost. ?
Edité le 16/02/2008 à 18:37
Tu doit te servir de la variable connexion qui détermines si tu est loggué ou pas pour afficher ce que tu désire afficher .Tout le code à afficher en cas de login doit se trouver dans le bout de code ci-dessous. C’est pour cela que je t’ai dit de ne pas recopier bêtement sans comprendre. tu avais juste recopié un bout de code que je t’ai donné sans en comprendre le sens !
if ($connexion == "1") // Elle sera à 1 si la personne est identifiée
{
// Si personne identifiée alors affichage
// cette partie doit contenir le code à afficher en cas d'identification
}
?>
Question : as-tu été visité le site du zero et ses tutoriels pour ce qui concerne la création d’un site dynamique en php ? Si non; tu devrais !
PS : Et pour chaque page à afficher tu devras refaire ce test !
Edité le 16/02/2008 à 19:00
cflo56
Février 16, 2008, 7:10
12
Oh j’ai pas lu cette partie !
Car j’avais une parse error, un { de moins
Oui, j’essaye de faire une variable qu’il affiche que je ferais plus bas
car ce code il affiche en haut vu que c’est obligé pour une session start , il faudrait que je puisse l’intégrer sur le coté c’est cho
Ps : sur le site du zéro il explique pas ce genre d’erreur avec le login
Merci
cflo56
Février 16, 2008, 7:58
13
J’essaye de pouvoir l’adapter, mais je n’arrive pas a faire afficher quelques chose quand il n’y a pas de session, et quand la session est Oki, la Variable utilisé pour afficher le pseudo est vide !
Donc j’ai essayer de le déplacé en chagant “action” par connexion dans les variables, mais rien ne marche, je vois pas pour l’inclure dans l’emplacement définis