Sessions: problème sessions deux erreurs qui se contredisent
5 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
- hxjonathan
- Nouveau WRInaute
- Messages: 7
- Inscription: Mar Aoû 29, 2006 20:27
Sessions: problème sessions deux erreurs qui se contredisent
Bonjour à tous,
Mon problème ne semble pas exister dans le forum. On parle beaucoup de sessions mais pas de ce que j'ai besoin exactement.
Ma config:
easyphp 1.8
Voici le code de mes 2 pages qui posent problème:
index.php:
verif.php:
[/code]
Je ne suis pas u pro en php mais je pense comprendre le principe.
J'ai les erreurs banales de sessions mais que je n'arrive pas à résoudre en supprimant le session_start de l'une ou l'autre des 2 pages ou en tentant des if pour voir si le user est déjà loggé !!
Voici l'erreur que j'obtiens avec les 2 pages que je vous ai donné:
Notice: A session had already been started - ignoring session_start() in c:\program files\easyphp1-8\www\immobay4\index.php on line 2
Je comprend bien que c'est parceque j'ai déjà une session d'ouverte mais si je supprimme le session_start de la page index, je n'arrive pas à accéder à ma page protégée dont le code est le suivant :
Si quelqu'un peut m'aider, c'est super sympa.
D'avance merci.
Jhon

Mon problème ne semble pas exister dans le forum. On parle beaucoup de sessions mais pas de ce que j'ai besoin exactement.
Ma config:
easyphp 1.8
Voici le code de mes 2 pages qui posent problème:
index.php:
- Code: Tout sélectionner
<?php
session_start();
?>
<!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" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<link href="cssindex.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="header">
<?php
include "menu.php";
?>
</div>
<div id="corps">
<?php
// On définit le tableau contenant les pages autorisées
// ----------------------------------------------------
$pageOK = array('page1' => 'page1.php',
'page2' => 'page2.php',
'pageprotegee' => 'pageprotegee.php',
'deconnexion' => 'deconnexion.php',
'accueil' => 'accueil.php');
// On teste que le paramètre d'url existe et qu'il est bien autorisé
// -----------------------------------------------------------------
if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) //si l'url existe dans le tableau
{
include($pageOK[$_GET['page']]); // Nous appelons cette url
}
else //sinon
{
include('accueil.php'); // Page par défaut quant elle n'existe pas dans le tableau
}
?>
</div>
</body>
</html>
verif.php:
- Code: Tout sélectionner
<?php
session_start();
//ici on vérifie que le mot de passe et le login entrés existent dans la base de données mysql
$log=false;
$login=$_POST['login'];
$mot_de_passe=$_POST['mot_de_passe'];
$db=mysql_connect('localhost','root','') or die("erreur de connexion");
mysql_select_db ('immobay',$db) or die ("erreur de connexion");
$login=addslashes($login);
$reqlog = mysql_query("SELECT * FROM users WHERE login='$login'")or die(mysql_error());//on cherche dans la base de données le login = au login entré
$log=mysql_num_rows($reqlog);//on compte le nombre de ligne qui contiennent le login en question (dans notre cas c'est 1 ligne)
$mot_de_passe=addslashes($mot_de_passe);
$reqpass = mysql_query("SELECT * FROM users WHERE mot_de_passe='$mot_de_passe'")or die(mysql_error());//on cherche dans la base le mot de passe = au mot de passe entré
$pass=mysql_num_rows($reqpass);//on compte le nombre de ligne qui contiennent le login en question (dans notre cas c'est 1 ligne)
if (($log==1)&&($pass==1))//cas ou le login et la mot de passe sont bons ==> on déclare les variables de sessions
{
$_SESSION['login'] = $_POST['login'];
$_SESSION['mot_de_passe'] = $_POST['mot_de_passe'];
$req2=mysql_query("SELECT id,nom,prenom from users WHERE login='$login' ");//ici on met certaines informations en variables de session afin de pouvoir s'en servir.
$essai=mysql_fetch_array($req2);
$_SESSION['prenom']=$essai['prenom'];
$_SESSION['nom']=$essai['nom'];
$_SESSION['id']=$essai['id'];
$log=true;//variable mise à TRUE car le user s'est bien identifié
include 'index.php';
}
elseif (($log==1)&&($pass==0))
{
echo"mot de passe incorrect";
session_destroy();
include "connexion.php";
}
elseif (($log==0)&&($pass==1))
{
echo"login incorrect";
session_destroy();
include "connexion.php";
}
elseif (($log==0)&&($pass==0))
{
echo"login et mot de passe incorrects";
include "connexion.php";
}
mysql_close($db);
?>
[/code]
Je ne suis pas u pro en php mais je pense comprendre le principe.
J'ai les erreurs banales de sessions mais que je n'arrive pas à résoudre en supprimant le session_start de l'une ou l'autre des 2 pages ou en tentant des if pour voir si le user est déjà loggé !!
Voici l'erreur que j'obtiens avec les 2 pages que je vous ai donné:
Notice: A session had already been started - ignoring session_start() in c:\program files\easyphp1-8\www\immobay4\index.php on line 2
Je comprend bien que c'est parceque j'ai déjà une session d'ouverte mais si je supprimme le session_start de la page index, je n'arrive pas à accéder à ma page protégée dont le code est le suivant :
- Code: Tout sélectionner
<?php
if (($logOK=true)&& (isset($_SESSION['login']))&&(isset($_GET['page'])))
{
echo $_SESSION['login'];
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
</head>
<body>
<?php echo ?>"Bienvenue sur la page protégée";
<?php
}
else
{
include "connexion.php";
}
?>
</body>
</html>
Si quelqu'un peut m'aider, c'est super sympa.
D'avance merci.
Jhon
Tu peux aussi toujours utiliser @session_start(), pour faire sauter la notice.
<rien à voir>
Note : mieux vaut utiliser session_is_registered() me semble-t-il.
</rien à voir>
<rien à voir>
Note : mieux vaut utiliser session_is_registered() me semble-t-il.
</rien à voir>
- hxjonathan
- Nouveau WRInaute
- Messages: 7
- Inscription: Mar Aoû 29, 2006 20:27
Yep,
Tout d'abord merci d'avoir répondu.
1) Mais cette fonction ob_start, c'est une manière de contourner le problème ou est-ce une vraie solution propre et répandue ?
2) Moi j'ai vu qu'il fallait utiliser session_start plutôt que session_register -->http://fr.php.net/session_register
C'est pour une raison de sécurité. D'ailleurs ils disent bien que maintenant ils ont totalement supprimer la possibilité de mettre register global à ON.

Tout d'abord merci d'avoir répondu.
1) Mais cette fonction ob_start, c'est une manière de contourner le problème ou est-ce une vraie solution propre et répandue ?
2) Moi j'ai vu qu'il fallait utiliser session_start plutôt que session_register -->http://fr.php.net/session_register
C'est pour une raison de sécurité. D'ailleurs ils disent bien que maintenant ils ont totalement supprimer la possibilité de mettre register global à ON.
C'est une solution propre, qui permet d'envoyer tous les en-têtes (header, cookie, etc...) en premier. Car aucun code ne doit être envoyé avant eux.hxjonathan a écrit:1) Mais cette fonction ob_start, c'est une manière de contourner le problème ou est-ce une vraie solution propre et répandue ?
Le code peut déjà avoir été généré pour l'envoi à la page, mais il reste dans un tampon.
Cela peut aussi, mais je ne l'ai jamais utilisé de cette manière, permettre de créer le code de la page dans un buffer et de modifier ce contenu avant l'envoi définitif vers le navigateur.
5 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Gestion des langues et des sessions en PHP / MySQL
- Incidence du PHP sur le référencement
- Référencement : le problème des sessions des pages PHP
- Le référencement de pages PHP
- Début du Full Crawl
- Comment créer une page web en PHP
- Ranking Metrics propose désormais des audits de référencement
- Google Developer Day 2007 : à Paris et dans 9 autres villes
- Gérer l'entête HTTP en PHP
- Votre site est mal référencé ? Voilà les remèdes !
Consultez la description détaillée des produits ou services de Google suivants : Google Talk
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités




le forum