changement de système de session

Répondre
zebden
le 16/09/2004 à 18:15
zebden
$_SESSION est un tableau

avec session register t'enregistre la variable en temps que variable de session.
zebdinou pour les intimes / Blog : http://www.zebden.fr
BornToBe
le 16/09/2004 à 18:27
BornToBe
Ah d'accord je vois ce que tu veux dire... Oui, il semblerait que ce soit plus sûr...
Mais bon, moi aussi ça me saôule de devoir le changer, hein. En plus, j'avais rajouté des ptits trucs trouvés par ci par là sur le net qui rajoutaient à la sécurité... Tant pis.

BTB
Nì heolas go haontìos
BornToBe
le 17/09/2004 à 15:01
BornToBe
Euh, c'est bizarre: toujours dans login.php, le code ne passe pas dans cette condition:
if (isset($_POST['login']))
ni dans celle-ci:
if (($login == "meuwa") && ($pwd == "demayne"))
ou encore là:
if (($login == $login_valide) && (md5($pwd) == $pwd_valide))
.
A croire que les if n'existaient pas encore en PHP 4.0.4... Quelqu'un voit d'où ça vient?

BTB
Nì heolas go haontìos
i M@N
le 17/09/2004 à 15:52
i M@N
Hello !

Normal, en codant à register_global à off, on doit vérifier l'existence de la variable et l'initialiser :
if isset($_POST['login']) $login=$_POST['login'] else $login="";
@+...
One Love, One Heart, One Unity.
i M@N
le 17/09/2004 à 15:56
i M@N
une précision : tu fais ça avec toutes tes variables dans la page traitant le formulaire en $_GET ou $_POST ou dans la page qui récupère une variable dans l'url. Tu fais ça pour toutes tes variables en début de page et après c'est bbon tu pourras te servir de $variable dans ton script.
One Love, One Heart, One Unity.
BornToBe
le 17/09/2004 à 16:27
BornToBe
... C'est exactement ce que j'ai fait. D'où mon incompréhention. Au cas où, voici le début du fichier:
<?php
// Connexion à la base
(...)?>
<?php
// Définition de la session administrateur
$login_valide = "(...)";
$pwd_valide = '(...)';

// Test de la définition des variables
if (isset($_POST['login']))
$login = $_POST['login'];
else
$login = "";
if (isset($_POST['pwd']))
$pwd = $_POST['pwd'];
else
$pwd = "";

if (isset($_POST['login']) && isset($_POST['pwd']))
{
// Vérification des informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé, de même pour le mot de passe
if (($login == $login_valide) && (md5($pwd) == $pwd_valide))
{
// Démarrage de la session
session_start();
// Enregistrement des paramètres de l'administrateur comme variables de session
$Slogin = $login;
session_register($_POST['login']);
$Spass = $pwd;
session_register($_POST['pwd']);
(...)

Ai-je fait une bourde??

BTB
Nì heolas go haontìos
zebden
le 17/09/2004 à 16:47
zebden
$HTTP_POST_VARS[] , essai avec ca
zebdinou pour les intimes / Blog : http://www.zebden.fr
BornToBe
le 17/09/2004 à 17:03
BornToBe
Y a du mieux!
Déjà, il rentre dans les boucles!
Par contre, il m'affiche des warnings s'il y a des echosmiley. Bon, je les supprime (il s'agissait seulement de tests pour voir si on rentrait dans la boucle) et il ne me reste plus qu'un seul warning:"Cannot add header information - headers already sent by" à la ligne du
header ('location: accueil_admin.php');
. Je vous jure qu'il n'y a pas de balise html smiley!
Par contre, peut-être devrais-je préciser qu'il y a ceci entre les session_register et le header:
// Récupération du nombre d'inscrits sur la mailing list
// on prépare la requête pour récupérer le numero du propriétaire
$sql = 'SELECT COUNT(*) FROM mailing_list';

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$data = mysql_fetch_array($req);
?>
<form action="accueil_admin.php" method="post">
<?php echo '<input type="hidden" name="NbInscrits" value="'.$data[0].'">'; ?>
</form>


BTB
Nì heolas go haontìos
BornToBe
le 17/09/2004 à 18:20
BornToBe
Bon, mis à part le code si dessus que je ne teste pas pour l'instant, login.php fonctionne: j'arrive sur accueil_admin.php. Par contre cette page ne reconnaît pas $Slogin. J'ai fais dans le login.php comme Zebden m'a indiqué:
$Slogin = $login;
session_register($Slogin);
et lorsque dans accueil_admin.php, je l'appele:
if (!isset($Slogin))
{(...)
, il ne reconnaît pas...

BTB
Nì heolas go haontìos
BornToBe
le 21/09/2004 à 15:33
BornToBe
C'est bon, j'ai fini par trouver!
Pour ceux que ça intéresse:
dans login.php, il fallait mettre:
sesssion_start();
session_register("Slogin");
$Slogin=$login;
session_register("Spass");
$Spass=$pass;

Voilà. Merci quand même à tous ceux qui ont pris le temps de m'aider.

BTB
Nì heolas go haontìos
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours