Problème de session insoluble :-/ ?
18 messages
• Page 1 sur 2 • 1, 2
-

Zecat - WRInaute accro

- Messages: 12003
- Inscription: 1 Mar 2005
Problème de session insoluble :-/ ?
Arf je m'arrache les tifs depuis hier la dessus ... si un cadors en sessions traine par ici, aide bienvenue !
Ma page index contient :
en tout debut avant le <html>. A l'intérieur un form et un bouton submit qui envoie sur se-connecter.php. Dans se_connecter.php, on a bien :
et ensuite on affiche une confirmation :
et la badaboum,
Par contre le se-connecter.php ne contient pas de session_start :
- il n'y a que du code php et pas de section html.
- et de toute façon si je mets un session start j'ai un messge d'erreur comme quoi le header je sais plus trop quoi ...
Note : lorsque je simule la meme chose avec des pages de test contenant des liens et donc pas la commande header, tout se passe bien (la variable $_SESSION['pseudo'] reste bien accessible dans toutes les pages ...).
Donc en gros il semble que header soit fasse un destroy de la session soit pose un probleme, je sais pas. Et j'ai impérativement besoin du header pour envoyer vesr la page de confirmation.
Je suppose que j'ai du louper une marche (pour mémoire php et moi c'est une histoire qui a commencé y a 10 jours
)
Ma page index contient :
- Code: Tout sélectionner
<?php
session_start();
?>
en tout debut avant le <html>. A l'intérieur un form et un bouton submit qui envoie sur se-connecter.php. Dans se_connecter.php, on a bien :
$_SESSION['pseudo']=$pseudoT;
et ensuite on affiche une confirmation :
- Code: Tout sélectionner
$delai=0;
$url='http://www.az-sante.com/AA_php2/vous-etes-connecte.php';
header("Refresh: $delai;url=$url");
et la badaboum,
$_SESSION['pseudo'] est vide dans vous-etes-connecte.php (qui commence bien aussi par son :<?php
session_start();
?>
Par contre le se-connecter.php ne contient pas de session_start :
- il n'y a que du code php et pas de section html.
- et de toute façon si je mets un session start j'ai un messge d'erreur comme quoi le header je sais plus trop quoi ...
Note : lorsque je simule la meme chose avec des pages de test contenant des liens et donc pas la commande header, tout se passe bien (la variable $_SESSION['pseudo'] reste bien accessible dans toutes les pages ...).
Donc en gros il semble que header soit fasse un destroy de la session soit pose un probleme, je sais pas. Et j'ai impérativement besoin du header pour envoyer vesr la page de confirmation.
Je suppose que j'ai du louper une marche (pour mémoire php et moi c'est une histoire qui a commencé y a 10 jours
-

UsagiYojimbo - WRInaute accro

- Messages: 8578
- Inscription: 23 Nov 2005
Re: Problème de session insoluble :-/ ?
Ajoute le session_start dans se_connecter.php. Vu que c'est dans cette page que tu crées la session, tu as aussi besoin du session_start() dedans.
-

Zecat - WRInaute accro

- Messages: 12003
- Inscription: 1 Mar 2005
Re: Problème de session insoluble :-/ ?
sauf que je peux pas ... comme indique, si je lemets (tu penses bien que ca a été la premiere chose testée, j'ai un message d'erreur comme quoi j'ai pas le droit de modifiy le header ou un truc du genre ! Bref ca boucle.
Note : en fait ma session je la crée des l'arrivée sur le site pour avoir un espace de stockage de variables entre les pages et pas simplement pour les infos membres (et lorsque je passe par une navigation classique (par a href), tout va bien ...
Note : en fait ma session je la crée des l'arrivée sur le site pour avoir un espace de stockage de variables entre les pages et pas simplement pour les infos membres (et lorsque je passe par une navigation classique (par a href), tout va bien ...
-

-amethyste- - WRInaute discret

- Messages: 52
- Inscription: 26 Fév 2008
Re: Problème de session insoluble :-/ ?
Donc ton problème vient de là :
Dans ta page de confirmation, tu ne peux pas envoyer le Header s'il a déjà été envoyé. Vérifies qu'avant le code ci-dessus il n'y a rien du tout qui soit affiché, même le moindre espace.
- Code: Tout sélectionner
header("Refresh: $delai;url=$url");
Dans ta page de confirmation, tu ne peux pas envoyer le Header s'il a déjà été envoyé. Vérifies qu'avant le code ci-dessus il n'y a rien du tout qui soit affiché, même le moindre espace.
-

Zecat - WRInaute accro

- Messages: 12003
- Inscription: 1 Mar 2005
Re: Problème de session insoluble :-/ ?
-amethyste- a écrit:Donc ton problème vient de là :
- Code: Tout sélectionner
header("Refresh: $delai;url=$url");
Dans ta page de confirmation, tu ne peux pas envoyer le Header s'il a déjà été envoyé. Vérifies qu'avant le code ci-dessus il n'y a rien du tout qui soit affiché, même le moindre espace.
Ben non rien de rien ! Voila tout le code de se-connecter.php :
- Code: Tout sélectionner
<?
// if ((isset($_POST['pseudo']) AND (isset($_POST['password']))
// {
$pseudoT=$_POST['pseudo'];
$passwordT=$_POST['password'];
$chaine=$pseudoT.":";
// ------ on va lire le fichier
$chemin=$_SERVER['DOCUMENT_ROOT']."/PROTEGE_MEMBRES/inscrits.txt";
if (file_exists($chemin))
{
$array_pseudo=file($chemin);
$taille_array=sizeof($array_pseudo);
// ------ verif que le pseudo existe dans le document
$rangok=-1;
for ($indice=0; $indice<=($taille_array-1); $indice++)
{
if ($rangok < 0)
{
$work="*".$array_pseudo[$indice]; // * a cause du bug de strpos (si trouvee en pos O)
$position=strpos($work, $chaine);
if ($position > 0)
{
$rangok=$indice;
$work=$array_pseudo[$indice];
}
}
}
if ($rangok >= 0)
{
// ----- verif que c'est le bon password
$passwordmd5=str_replace($chaine, "", $work); // le passe word valide
$longueur=strlen($passwordmd5)-1;
$passwordmd5=substr($passwordmd5, 0, $longueur);
$passwordtest=md5 ($passwordT);
if ($passwordtest == $passwordmd5)
{
// ---- mŽmorisation
$_SESSION['pseudo']=$pseudoT;
// ---- affichage page de confirmation
$delai=0;
$url='http://www.az-sante.com/AA_php2/vous-etes-connecte.php';
header("Refresh: $delai;url=$url");
}
else
{
$delai=0;
$url='http://www.az-sante.com/AA_php2/login-pass-invalide.php';
header("Refresh: $delai;url=$url");
}
$passwordT=""; // comme ca pour pas laisser trainer
}
else
{
$delai=0;
$url='http://www.az-sante.com/AA_php2/login-pass-invalide.php';
header("Refresh: $delai;url=$url");
}
}
else
{
echo ("file absent");
}
// }
?>
Et une fois sur "vous-etes-connecte.php", j'ai perdu $_SESSION['pseudo'] qui est vide
- fullflash13
- WRInaute discret

- Messages: 57
- Inscription: 18 Mai 2008
Re: Problème de session insoluble :-/ ?
Zecat a écrit:
en tout debut avant le <html>. A l'intérieur un form et un bouton submit qui envoie sur se-connecter.php. Dans se_connecter.php, on a bien :
Perso , je trouve ca bizarre de mettre une form et un submit avant la balise html ? essaie de mettre le code de soumission a l'interieur et le bout de code de se-connecter.php a l'interieur de index aussi.
Et aussi évite de mettre le chemin de ton fichiers qui contient les pass , meme si c'est en md5.
A toute
-

Zecat - WRInaute accro

- Messages: 12003
- Inscription: 1 Mar 2005
Re: Problème de session insoluble :-/ ?
fullflash13 a écrit:Perso , je trouve ca bizarre de mettre une form et un submit avant la balise html ?
C'est pas avant le html mais dedans ...
fullflash13 a écrit:Et aussi évite de mettre le chemin de ton fichiers qui contient les pass , meme si c'est en md5.
A toute
Ca craint a quel niveau ?
Note : par sécu je vais changer le nom du rep, le nom du doc et lui coller un . devant
Mais sinon quelle peut etre la faiblesse d'avoir un tel doc sur le serveur (MD5 est non réversible si j'ai bien compris)
Sinon mon problème se situe en aval du form une fois que l'on valide le submit et que ca lance se-connecter.php ou là j'ai perdu ma variable $_POST['pseudo'] dans l'opération puiqu'il refuse le session_start en debut de se-connecter.php ... ca tourne en rond mon problème.
- fullflash13
- WRInaute discret

- Messages: 57
- Inscription: 18 Mai 2008
Re: Problème de session insoluble :-/ ?
ReSalut,
pour le md5 il existe des sites , qui te le déchiffre , grace a des grosses base de données qui contient les equivalences passe en clair et pass en md5 , comme celui la _http://www.authsecu.com/decrypter-dechiffrer-cracker-hash-md5/decrypter-dechiffrer-cracker-hash-md5.php
Sinon pour ton probleme de connection ,
je te file mon code a moi
il est structuré avec en 1 fichier header.php , dans lequel il y a le session_start() au debut , suivis d'un code qui lit le fichier contenant les passe et determine a si on a acces ou pas a la page,
ce fichier header require un fichier function.php our l'appel de la fonction find_user ( + autre fonction pour autre choses ):
ce header.php , est inclus par tout les pages , nécessitant un accès authentifié ,
pour la page de connection :
Pour les autre pages , par exemple la page server.php , qui contient le menu pour un utilisateur de niveau 2 ( admin chez moi)
d'ou le define("LEVEL",2); sinon c'a aurait etais define("LEVEL",1);
ET dans ce server.php , j'ai
echo "<BR></BR>Coucou ",$_SESSION['login'],"";
qui affiche bien le login
Et pourquoi pas mon footer.php aussi :
J'espere qu'avec ca tu t'y retrouve , en tout cas je n'ais pas de probleme avec ce code
A toute.
pour le md5 il existe des sites , qui te le déchiffre , grace a des grosses base de données qui contient les equivalences passe en clair et pass en md5 , comme celui la _http://www.authsecu.com/decrypter-dechiffrer-cracker-hash-md5/decrypter-dechiffrer-cracker-hash-md5.php
Sinon pour ton probleme de connection ,
je te file mon code a moi
il est structuré avec en 1 fichier header.php , dans lequel il y a le session_start() au debut , suivis d'un code qui lit le fichier contenant les passe et determine a si on a acces ou pas a la page,
- Code: Tout sélectionner
<?php
session_start();
if(!defined('IN_SITE'))die("Vous n'etes pas autoriser a voir cette page");
$pass_filename = "chemin_de_mon_fichier contenant login et pass md5";
require("function.php");
?>
<html>
<head>
<title>Panneau Administration</title>
<link type="text/CSS" rel="stylesheet" href="style.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body bgcolor="#C9DA1A">
<?php
// Read Pass File
$user = array();
if($fp = @fopen($pass_filename,"r")){
$count = 0;
while(!feof($fp)){
$user[$count] = array();
$data = fgets($fp,255);
if(trim($data)!=""){
list($user[$count]['login'],$user[$count]['password'],$user[$count]['level']) = explode("\t",$data);
// Triming all Data (remove possible \t or \n)
$user[$count]['login'] = trim($user[$count]['login']);
$user[$count]['password'] = trim($user[$count]['password']);
$user[$count]['level'] = trim($user[$count]['level']);
$count++;
}
}
fclose($fp);
}
else{
echo display_error("The filename ".$pass_filename." can't be found.",300)."<p>";
include("footer.php");
exit;
}
if(isset($_SESSION['login']) && isset($_SESSION['password'])){
if(($user_id = find_user($_SESSION['login']))>=0){
if($_SESSION['password'] != $user[$user_id]['password'])
$user_id=-1;
}
else
$user_id=-1;
}
else
$user_id=-1;
$level_required = 0;
if(defined("LEVEL"))
$level_required = LEVEL;
if(($level_required>0 && $user_id==-1) || ($level_required>1 && $user[$user_id]['level']!=1)){
echo display_error("Deconnecter",300);
include("footer.php");
exit;
}
?>
ce fichier header require un fichier function.php our l'appel de la fonction find_user ( + autre fonction pour autre choses ):
- Code: Tout sélectionner
<?php
if(!defined('IN_SITE'))die("pages non autorisées.");
function next_color($restart=0){
static $color=0;
if($restart==1){$color = null;}
if($color==1){$couleur="#8DCADA";$color=2;}
else{$couleur="#73C4DA";$color=1;}
return $couleur;
}
function display_table($title="",$width=100){
global $sys_conf;
if($title=="")
$variable_table = "</table>\n</td></tr></table>\n";
else{
$variable_table = "
<table width=\"".$width."\" border=0 cellpadding=0 cellspacing=0 align=\"center\" bgcolor=\"#00A3D1\" class=\"tableline\"><tr><th><u>".$title."</u>
</th></tr><tr><td>
<table width=\"100%\" border=0 cellpadding=4 cellspacing=1 align=\"center\">
";
}
return $variable_table;
}
function display_error($text,$width){
echo display_table("Erreur",$width);
echo "<tr bgcolor=\"".next_color()."\"><td align=\"center\">".$text."</td></tr>";
echo display_table();
}
function find_user($login){
global $user;
for($i=0;$i<count($user);$i++)
if(strcasecmp($user[$i]['login'],$login)==0)
return $i;
return -1;
}
?>
ce header.php , est inclus par tout les pages , nécessitant un accès authentifié ,
pour la page de connection :
- Code: Tout sélectionner
<?php
define("IN_SITE",true);
include("header.php");
if($user_id>=0){
if($user[$user_id]['level']==1){
echo "<meta http-equiv=\"refresh\" content=\"1; url=server.php\">";
exit;
}
else{
$link1 = "<a href=\"voir.php\">Visualiser les Photos</a>";
$link2 = "<a href=\"rep.php\">Envoyer mes Photos</a>";
}
echo display_table("Menu Membre",600);
echo "<tr><td bgcolor=\"".next_color()."\" width=\"50%\"><a href=\"pass.php\">Changer mon password</a></td><td bgcolor=\"".next_color()."\">".$link1."</td></tr>";next_color();
echo "<tr><td bgcolor=\"".next_color()."\"> </td><td bgcolor=\"".next_color()."\">".$link2."</td></tr>";next_color();
echo "<tr><td bgcolor=\"".next_color()."\"><a href=\"logout.php\">Deconnexion</a></td>";
echo "<td bgcolor=\"".next_color()."\"><a href=\"sup.php\">Effacer photo</a></td></tr>";
}
else{
if(isset($_POST['login_login']) && isset($_POST['login_password'])){
if(($user_id = find_user($_POST['login_login']))>=0)
if(md5($_POST['login_password'])==$user[$user_id]['password']){
$_SESSION['login'] = $user[$user_id]['login'];
$_SESSION['password'] = $user[$user_id]['password'];
if($user_id>=0){
if($user[$user_id]['level']==1){
echo "<meta http-equiv=\"refresh\" content=\"1; url=server.php\">";
}
else{
echo "<meta http-equiv=\"refresh\" content=\"2; url=index2.php?\">";
echo display_table("Login",300);
echo "<tr bgcolor=\"".next_color()."\"><td align=\"center\">Connexion réussi</td></tr>";
echo "<tr bgcolor=\"".next_color()."\"><td align=\"center\"><a href=\"index2.php?\">Session Membre</a></td></tr>";
echo display_table();
include("footer.php");
exit;
}
}
}
else
echo display_error("Erreur identification",300);
else
echo display_error("Erreur identification",300);
}
echo "<center><h1>Connection Membre</h1></center>";
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">";
echo display_table("Login",300);
echo "<tr bgcolor=\"".next_color()."\"><td align=\"right\">Utilisateur</td><td width=\"200\"><input type=\"text\" name=\"login_login\" size=30 style=\"width:200px\"></td></tr>";
echo "<tr bgcolor=\"".next_color()."\"><td align=\"right\">Mot de passe</td><td width=\"200\"><input type=\"password\" name=\"login_password\" size=30 style=\"width:200px\"></td></tr>";
echo "<tr bgcolor=\"".next_color()."\"><td align=\"center\" colspan=\"2\"><input type=\"submit\" value=\"Envoyer\" class=\"button\"></td></tr>";
echo display_table();
echo "</form>";
}
include("footer.php");
?>
Pour les autre pages , par exemple la page server.php , qui contient le menu pour un utilisateur de niveau 2 ( admin chez moi)
d'ou le define("LEVEL",2); sinon c'a aurait etais define("LEVEL",1);
- Code: Tout sélectionner
<?php
define("IN_SITE",true);
define("LEVEL",2);
include("header.php");
echo "<BR></BR>Coucou ",$_SESSION['login'],"";
echo display_table("Panneaux principale",300);
echo "<tr bgcolor=\"".next_color()."\"><a href=logout.php>Deconnexion</a></tr>";
echo display_table();
include("menu.php");
include("footer.php");
?>
ET dans ce server.php , j'ai
echo "<BR></BR>Coucou ",$_SESSION['login'],"";
qui affiche bien le login
Et pourquoi pas mon footer.php aussi :
- Code: Tout sélectionner
<?php
if(!defined('IN_SITE'))die("pages non autorisées.");
?>
</td></tr></table>
</body>
</html>
J'espere qu'avec ca tu t'y retrouve , en tout cas je n'ais pas de probleme avec ce code
A toute.
-

Zecat - WRInaute accro

- Messages: 12003
- Inscription: 1 Mar 2005
Re: Problème de session insoluble :-/ ?
merci .. t'inquiète je vais me le disséquer (c'est pas un paquet de code qui va me faire peur
.
Ca va me décoincer parce que ma partie membre est quasi fini : me restait plus qu'a décoincer ce verrou ...
Ca va me décoincer parce que ma partie membre est quasi fini : me restait plus qu'a décoincer ce verrou ...
-

Zecat - WRInaute accro

- Messages: 12003
- Inscription: 1 Mar 2005
Re: Problème de session insoluble :-/ ?
fullflash13 a écrit:ReSalut,
pour le md5 il existe des sites , qui te le déchiffre , grace a des grosses base de données qui contient les equivalences passe en clair et pass en md5 , comme celui la _http://www.authsecu.com/decrypter-dechiffrer-cracker-hash-md5/decrypter-dechiffrer-cracker-hash-md5.php
Bon ben qu'à cela ne tienne :
- Je vais introduire des modifs dans la chaine de chiffre MD5 (style ajouter des chiffres, style changer des chiffres, style permuter des chiffres)
- Ces changements n'étant connus que de moi
- donc la chaine md5 devient inexploitable
Ensuite quand je veux l'exploiter, j'ai plus qu'a dépolluer la chaine et rouler jeunesse
Allez c'ets parti pour deux routines polluerMD5.php depolluerMD5.php
-

Zecat - WRInaute accro

- Messages: 12003
- Inscription: 1 Mar 2005
Re: Problème de session insoluble :-/ ?
bon ben finalement, j'ai retenté de mettre le session start et la ca passe ... il devait y avoir un truc qui le derangeait et qui a sauté au gré des modifs ... donc ca marche : ma var est bien conservée.
-

Zecat - WRInaute accro

- Messages: 12003
- Inscription: 1 Mar 2005
Re: Problème de session insoluble :-/ ?
Et du coup voila, les fonctions suivantes sont opérationnelles (sur mon www) :
- s'inscrire (avec la gestion des questions réponses anti spam, l'envoi d'email de confirmation etc), confirmer son inscription, annuler son inscription.
- se connecter
- se déconnecter
- déployer / contracter la zone membres (bon reste un bug lorsque l'on change de page, la zone membre ne reste pas dans son état)
les autres lien renvoient pour le moment sur une page en cours de réalisation
Si certains veulent jouer les beta testeurs
NB : autre truc pas au top : si vous faites une erreur (par exemple mauvaise reponse à l'anti spam, il ne conserve pas vos informations frappées ... ca va être fignolé dans la journée)
- s'inscrire (avec la gestion des questions réponses anti spam, l'envoi d'email de confirmation etc), confirmer son inscription, annuler son inscription.
- se connecter
- se déconnecter
- déployer / contracter la zone membres (bon reste un bug lorsque l'on change de page, la zone membre ne reste pas dans son état)
les autres lien renvoient pour le moment sur une page en cours de réalisation
Si certains veulent jouer les beta testeurs
NB : autre truc pas au top : si vous faites une erreur (par exemple mauvaise reponse à l'anti spam, il ne conserve pas vos informations frappées ... ca va être fignolé dans la journée)
-

skyll - WRInaute passionné

- Messages: 1364
- Inscription: 14 Oct 2005
Re: Problème de session insoluble :-/ ?
Zecat a écrit:Ensuite quand je veux l'exploiter, j'ai plus qu'a dépolluer la chaine et rouler jeunesseNon mais scrogneu de scrogneugneu
Allez c'ets parti pour deux routines polluerMD5.php depolluerMD5.php
tu peut également regarder du côté de la "seed" à rajouter pour "poluer" ton md5 automatiquement
18 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Google Developer Day 2007 : à Paris et dans 9 autres villes - 27-05-2007
- Référencement d'un forum phpBB - 09-05-2004
- Référencement : le problème des sessions des pages PHP - 04-08-2008
- Le référencement de pages PHP - 04-08-2008
- Séminaire sur le référencement : ImiTiki - Online 2005 - 18-04-2005
- Formation référencement à Paris du 8 au 11 février 2011 Ranking Metrics - 12-10-2010
- Formation Ranking Metrics à Marseille : référencement Google - 09-11-2010
- Vidéos de Matt Cutts sur le référencement Google - 04-08-2006
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

