Page 1 sur 2

Problème sur les sessions

Posté : 21 juin 2006, 09:05
par dededick
Bonjour à tous, j'ai un problème avec les sessions lors de l'authentification:

Voici ma page qui traite les données quand quelqu'un essaye de se connecter:
<?php
// pensez a ouvrir une connexion vers mysql ici
include('chien.php');

if(isset($_POST) && !empty($_POST['pseudo']) && !empty($_POST['password'])) {
  extract($_POST);
  // on recupère le password de la table qui correspond au login du visiteur
  $sql = "select password from siteweb where pseudo='".$pseudo."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

  $data = mysql_fetch_assoc($req);

  if($data['password'] != $password) {
    include('erreur.html'); // On inclut le formulaire d'identification
    exit;
  }
  else {
    
    $_SESSION['pseudo'] = $_POST['pseudo'];// si pb, essayer de remplace 'pseudo' par
//'login' ;)

    echo 'Vous etes bien logué <br/><br/>';
  echo'Vous rendre sur la page <a href="acceuil.html"> principale </a>';  // ici vous pouvez afficher un lien pour renvoyer
    // vers la page d'accueil de votre espace membres
  }
}
else {
   include('erreur2.html'); // On inclut le formulaire d'identification
   exit;
}
?>
Maintenant, je ne sais pas quoi mettre pour que les personnes non-connectées ne puissent accéder à mes autres pages.
Si quelqu'un à une réponse, merci :)

Posté : 21 juin 2006, 09:09
par guilt92
Dans cette page tu initialises une variable de session pseudo.

Il te suffit par exemple de créer un fichier entete.php qui contiendrai uniquement la verification de la variable pseudo. Si elle est vide ou indéfinie, l utilisateur est renvoyé sur ta page de log in ou d acceuil...
session_start();
if(!isset($_SESSION['pseudo']) || empty($_SESSION['pseudo']))
header("Location: index.php");
Ensuite il te suffit de faire un include de cette page au début des autres pages...

Posté : 21 juin 2006, 09:09
par béka
moi j'essairai avec ca a chaque début de page que tu veux protéger. Attention, il ne doit pas avoir d'autre lignes de php avant:
<?php session_start(); 
if (!isset($_SESSION['nom'])) { 
    header ('Location: autrepage.php'); 
    exit(); 
} 
?>

re

Posté : 21 juin 2006, 10:07
par dededick
Merci à vous, j'essayerai les 2 méthodes :)

Posté : 21 juin 2006, 10:29
par guilt92
j'essayerai les 2 méthodes
Nous t'avons proposé la meme chose mais formulé differemment ;)

Le concept reste de tester au début de chaque page si la variable de session est définie, et si ca n est pas le cas de faire une redirection.

Posté : 21 juin 2006, 10:38
par Invité
La première méthode marche pas:
j'essaye d'aller sur la page sans être connecté, ça y va quand même; peut est-ce un problème de mon pc:
si quelqu'un veut vérifier, peut-il aller sur:
http://dededick.free.fr/acceuil.html

Merci

Posté : 21 juin 2006, 10:46
par guilt92
fais voir le code STP. N oublie pas que le session_start() doit etre la premiere ligne de ton code, soit via un include soit directement mais il faut que ca soit en premier...

Posté : 21 juin 2006, 10:50
par Invité
<!-- Ouvrir une session pour pas que les non-connectés accèdent à cette page !-->
<?php session_start();
if (!isset($_SESSION['pseudo'])) {
    header ('Location: index.html');
    exit();
}
?>

<html>
<head>
<title> Bienvenue sur Poudlard2006 </title>
<meta http-equiv="content-language" content="fr">
 <link rel="stylesheet" media="screen" type="text/css" title="Essai" href="color.css" />

<SCRIPT LANGUAGE="JavaScript">
// a mettre entre <head> et <head/>
var max=0;
function textlist() {
max=textlist.arguments.length;
for (i=0; i<max; i++)
this[i]=textlist.arguments[i];
}
tl = new textlist(
"Bievenue sur ce site.",
"En cas de problème, un forum est à votre disposition.",
"Petites annonces:",
"Aujourd'hui, le cerveau a des capacités tellement étonnantes, que presque tout le monde en a un.",
"Un verre est à moitié plein d'eau; n'est-il pas plutôt à moitié vide?",
"Il semblerait que... mais on n'en est pas sur...",
"Vous pensez ne rien savoir? Mais rassurez-vous, vous savez au moins ça!"
);

var x = 0; pos = 0;
var l = tl[0].length;
function textticker() {
document.tickform.tickfield.value = tl[x].substring(0, pos) + "_";
if(pos++ == l) {
pos = 0;
setTimeout("textticker()", 2000);
if(++x == max) x = 0;
l = tl[x].length;
} else
setTimeout("textticker()", 50);
}
</script>
</head>
<BODY OnLoad="textticker()">

<center>
<form name=tickform>
<textarea name=tickfield rows=3 cols=38 style="background-color: rgb(0,0,0); color: rgb(255,255,255); cursor: default; font-family: Arial; font-size: 12px" wrap=virtual>Les infos apparaissent ici, une fois que la page est chargée.</textarea>
</form>
</center>
</script>



   </head>
   <script language="JavaScript">
function nextSize(i,incMethod,textLength){
  if (incMethod == 1) return (40*Math.abs( Math.sin(i/(textLength/3.14))) );
  if (incMethod == 2) return (255*Math.abs( Math.cos(i/(textLength/3.14))));
}

function sizeCycle(text,method,dis){   
  output = "";
  for (i = 0; i < text.length; i++){
    size = parseInt(nextSize(i +dis,method,text.length));
    output += "<font style='font-size: "+ size +"pt'>" +text.substring(i,i+1)+ "</font>";
  }
  theDiv.innerHTML = output;
}

function doWave(n){
  theText = "dededick.free.fr";
  sizeCycle(theText,1,n);       
  if (n > theText.length) {n=0}
  setTimeout("doWave(" + (n+1) + ")", 150);
}
</script>
<body>
<div id="en_tete">
<!-- Mettre la bannière -->
</div>
<div id="menu">
<div id="element_menu">
<ul id="lien2">
<li><a href="acceuil.html"> Arrivée à Poudlard2006 </a></li>
<li><a href="http://poudlard2006.goodforum.net"> La Grande Salle </a></li>
C'est la page d'acceuil...

Posté : 21 juin 2006, 10:58
par dededick
<!-- Ouvrir une session pour pas que les non-connectés accèdent à cette page !-->
<?php session_start();
if (!isset($_SESSION['pseudo'])) {
    header ('Location: index.html');
    exit();
}
?>

<html>
<head>
<title> Bienvenue sur Poudlard2006 </title>
<meta http-equiv="content-language" content="fr">
 <link rel="stylesheet" media="screen" type="text/css" title="Essai" href="color.css" />

<SCRIPT LANGUAGE="JavaScript">
// a mettre entre <head> et <head/>
var max=0;
function textlist() {
max=textlist.arguments.length;
for (i=0; i<max; i++)
this[i]=textlist.arguments[i];
}
tl = new textlist(
"Bievenue sur ce site.",
"En cas de problème, un forum est à votre disposition.",
"Petites annonces:",
"Aujourd'hui, le cerveau a des capacités tellement étonnantes, que presque tout le monde en a un.",
"Un verre est à moitié plein d'eau; n'est-il pas plutôt à moitié vide?",
"Il semblerait que... mais on n'en est pas sur...",
"Vous pensez ne rien savoir? Mais rassurez-vous, vous savez au moins ça!"
);

var x = 0; pos = 0;
var l = tl[0].length;
function textticker() {
document.tickform.tickfield.value = tl[x].substring(0, pos) + "_";
if(pos++ == l) {
pos = 0;
setTimeout("textticker()", 2000);
if(++x == max) x = 0;
l = tl[x].length;
} else
setTimeout("textticker()", 50);
}
</script>
</head>
<BODY OnLoad="textticker()">

<center>
<form name=tickform>
<textarea name=tickfield rows=3 cols=38 style="background-color: rgb(0,0,0); color: rgb(255,255,255); cursor: default; font-family: Arial; font-size: 12px" wrap=virtual>Les infos apparaissent ici, une fois que la page est chargée.</textarea>
</form>
</center>
</script>



   </head>
   <script language="JavaScript">
function nextSize(i,incMethod,textLength){
  if (incMethod == 1) return (40*Math.abs( Math.sin(i/(textLength/3.14))) );
  if (incMethod == 2) return (255*Math.abs( Math.cos(i/(textLength/3.14))));
}

function sizeCycle(text,method,dis){   
  output = "";
  for (i = 0; i < text.length; i++){
    size = parseInt(nextSize(i +dis,method,text.length));
    output += "<font style='font-size: "+ size +"pt'>" +text.substring(i,i+1)+ "</font>";
  }
  theDiv.innerHTML = output;
}

function doWave(n){
  theText = "dededick.free.fr";
  sizeCycle(theText,1,n);       
  if (n > theText.length) {n=0}
  setTimeout("doWave(" + (n+1) + ")", 150);
}
</script>
<body>
<div id="en_tete">
<!-- Mettre la bannière -->
</div>
<div id="menu">
<div id="element_menu">
<ul id="lien2">
<li><a href="acceuil.html"> Arrivée à Poudlard2006 </a></li>
<li><a href="http://poudlard2006.goodforum.net"> La Grande Salle </a></li>
C'est la page d'acceuil...
Et ce qu'il me dit c'est:

Code : Tout sélectionner

Warning: session_start() [function.session-start]: open(/mnt/112/sdb/4/d/dededick/sessions/sess_d7b9ae6910d58209d7b85e8f2236e7a9, O_RDWR) failed: No such file or directory (2) in /mnt/112/sdb/4/d/dededick/acceuil.php on line 2 Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/112/sdb/4/d/dededick/acceuil.php:2) in /mnt/112/sdb/4/d/dededick/acceuil.php on line 2 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/112/sdb/4/d/dededick/acceuil.php:2) in /mnt/112/sdb/4/d/dededick/acceuil.php on line 2 Warning: Cannot modify header information - headers already sent by (output started at /mnt/112/sdb/4/d/dededick/acceuil.php:2) in /mnt/112/sdb/4/d/dededick/acceuil.php on line 4 Warning: Unknown(): open(/mnt/112/sdb/4/d/dededick/sessions/sess_d7b9ae6910d58209d7b85e8f2236e7a9, O_RDWR) failed: No such file or directory (2) in Unknown on line 0 Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/mnt/112/sdb/4/d/dededick/sessions) in Unknown on line 0
[/code]

Posté : 21 juin 2006, 10:59
par guilt92
déjà avant que je regarde la suite enlève les commentaires avant le session_start

On a précisé que ca doit etre la 1ere ligne et c vraiment le cas, les commentaires html ne passeront pas si tu les mets avant.

Tu peux par contre les mettre en php si tu veux commenter :
<?php
//Ouvrir une session pour pas que les non-connectés accèdent à cette page 
session_start(); 
if (!isset($_SESSION['pseudo'])) { 
    header ('Location: index.html'); 
    exit(); 
} 
?>

Posté : 21 juin 2006, 11:01
par dededick
le message qu'il me renvoie:

Code : Tout sélectionner

Warning: session_start() [function.session-start]: open(/mnt/112/sdb/4/d/dededick/sessions/sess_4a6b842cec07002a9123e47f1facd96c, O_RDWR) failed: No such file or directory (2) in /mnt/112/sdb/4/d/dededick/acceuil.php on line 1 Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/112/sdb/4/d/dededick/acceuil.php:1) in /mnt/112/sdb/4/d/dededick/acceuil.php on line 1 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/112/sdb/4/d/dededick/acceuil.php:1) in /mnt/112/sdb/4/d/dededick/acceuil.php on line 1 Warning: Cannot modify header information - headers already sent by (output started at /mnt/112/sdb/4/d/dededick/acceuil.php:1) in /mnt/112/sdb/4/d/dededick/acceuil.php on line 4 Warning: Unknown(): open(/mnt/112/sdb/4/d/dededick/sessions/sess_4a6b842cec07002a9123e47f1facd96c, O_RDWR) failed: No such file or directory (2) in Unknown on line 0 Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/mnt/112/sdb/4/d/dededick/sessions) in Unknown on line 0
J'ai pensé :
ptet parce que j'ai pas ouvert de connexion à la bdd

Posté : 21 juin 2006, 11:03
par guilt92
déjà avant que je regarde la suite enlève les commentaires avant le session_start

On a précisé que ca doit etre la 1ere ligne et c vraiment le cas, les commentaires html ne passeront pas si tu les mets avant.

Tu peux par contre les mettre en php si tu veux commenter :
<?php
//Ouvrir une session pour pas que les non-connectés accèdent à cette page 
session_start(); 
if (!isset($_SESSION['pseudo'])) { 
    header ('Location: index.html'); 
    exit(); 
} 
?>
tu as fait ca ?

Posté : 21 juin 2006, 11:04
par dededick
Ben oui voilà le code:
<?php session_start();
//Ouvrir une session pour pas que les non-connectés n'accèdent pas à cette page
if (!isset($_SESSION['pseudo'])) {
    header ('Location: index.html');
    exit();
}
?>
<html>
<head>
<title> Bienvenue sur Poudlard2006 </title>
<meta http-equiv="content-language" content="fr">
 <link rel="stylesheet" media="screen" type="text/css" title="Essai" href="color.css" />

<SCRIPT LANGUAGE="JavaScript">
// a mettre entre <head> et <head/>
var max=0;
function textlist() {
max=textlist.arguments.length;
for (i=0; i<max; i++)
this[i]=textlist.arguments[i];
}
tl = new textlist(
"Bievenue sur ce site.",
"En cas de problème, un forum est à votre disposition.",
"Petites annonces:",
"Aujourd'hui, le cerveau a des capacités tellement étonnantes, que presque tout le monde en a un.",
"Un verre est à moitié plein d'eau; n'est-il pas plutôt à moitié vide?",
"Il semblerait que... mais on n'en est pas sur...",
"Vous pensez ne rien savoir? Mais rassurez-vous, vous savez au moins ça!"
);

var x = 0; pos = 0;
var l = tl[0].length;
function textticker() {
document.tickform.tickfield.value = tl[x].substring(0, pos) + "_";
if(pos++ == l) {
pos = 0;
setTimeout("textticker()", 2000);
if(++x == max) x = 0;
l = tl[x].length;
} else
setTimeout("textticker()", 50);
}
</script>
</head>
<BODY OnLoad="textticker()">

<center>
<form name=tickform>
<textarea name=tickfield rows=3 cols=38 style="background-color: rgb(0,0,0); color: rgb(255,255,255); cursor: default; font-family: Arial; font-size: 12px" wrap=virtual>Les infos apparaissent ici, une fois que la page est chargée.</textarea>
</form>
</center>
</script>



   </head>
   <script language="JavaScript">
function nextSize(i,incMethod,textLength){
  if (incMethod == 1) return (40*Math.abs( Math.sin(i/(textLength/3.14))) );
  if (incMethod == 2) return (255*Math.abs( Math.cos(i/(textLength/3.14))));
}

function sizeCycle(text,method,dis){   
  output = "";
  for (i = 0; i < text.length; i++){
    size = parseInt(nextSize(i +dis,method,text.length));
    output += "<font style='font-size: "+ size +"pt'>" +text.substring(i,i+1)+ "</font>";
  }
  theDiv.innerHTML = output;
}

function doWave(n){
  theText = "dededick.free.fr";
  sizeCycle(theText,1,n);       
  if (n > theText.length) {n=0}
  setTimeout("doWave(" + (n+1) + ")", 150);
}
</script>
<body>
<div id="en_tete">
<!-- Mettre la bannière -->
</div>
<div id="menu">
<div id="element_menu">
<ul id="lien2">
<li><a href="acceuil.html"> Arrivée à Poudlard2006 </a></li>
<li><a href="http://poudlard2006.goodforum.net"> La Grande Salle </a></li>

Posté : 21 juin 2006, 11:11
par béka
et ca marche alors?

Posté : 21 juin 2006, 11:15
par dededick
ben non vla ce qu'il me met: quand chui connecté :

Code : Tout sélectionner

Warning: session_start() [function.session-start]: open(/mnt/112/sdb/4/d/dededick/sessions/sess_04ff8bdb81f622489ed588649737b4d2, O_RDWR) failed: No such file or directory (2) in /mnt/112/sdb/4/d/dededick/acceuil.php on line 1 Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/112/sdb/4/d/dededick/acceuil.php:1) in /mnt/112/sdb/4/d/dededick/acceuil.php on line 1 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/112/sdb/4/d/dededick/acceuil.php:1) in /mnt/112/sdb/4/d/dededick/acceuil.php on line 1 Warning: Cannot modify header information - headers already sent by (output started at /mnt/112/sdb/4/d/dededick/acceuil.php:1) in /mnt/112/sdb/4/d/dededick/acceuil.php on line 4 Warning: Unknown(): open(/mnt/112/sdb/4/d/dededick/sessions/sess_04ff8bdb81f622489ed588649737b4d2, O_RDWR) failed: No such file or directory (2) in Unknown on line 0 Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/mnt/112/sdb/4/d/dededick/sessions) in Unknown on line 0
quand chui pas connecté:

Code : Tout sélectionner

Warning: session_start() [function.session-start]: open(/mnt/112/sdb/4/d/dededick/sessions/sess_1c58e01dc2a3870a3f8abd1d4ca63a8a, O_RDWR) failed: No such file or directory (2) in /mnt/112/sdb/4/d/dededick/acceuil.php on line 1 Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/112/sdb/4/d/dededick/acceuil.php:1) in /mnt/112/sdb/4/d/dededick/acceuil.php on line 1 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/112/sdb/4/d/dededick/acceuil.php:1) in /mnt/112/sdb/4/d/dededick/acceuil.php on line 1 Warning: Cannot modify header information - headers already sent by (output started at /mnt/112/sdb/4/d/dededick/acceuil.php:1) in /mnt/112/sdb/4/d/dededick/acceuil.php on line 4 Warning: Unknown(): open(/mnt/112/sdb/4/d/dededick/sessions/sess_1c58e01dc2a3870a3f8abd1d4ca63a8a, O_RDWR) failed: No such file or directory (2) in Unknown on line 0 Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/mnt/112/sdb/4/d/dededick/sessions) in Unknown on line 0
Au fait, chez vous aussi c'est très lent?