deux petites questions de la part d'un newbie

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : deux petites questions de la part d'un newbie

par le paumé » 19 mai 2005, 16:48

excuse moi cyrano je m'exprime mal en effet le problème n'est pas sur la session mais plutôt un problème de cache de navigateur (du moins c'est ce qu'il me semble je me trompe peut être) ce qui fait que quand on clique sur précédent il arrive à rester sur page2.php pendant un bref instant car la page se recharge toutes les 2secondes et quand elle se recharge là on a plus de probléme car elle me renvoie bien là ou il faut

par Cyrano » 19 mai 2005, 16:36

bien sur, mais la session est terminée et le login n'est plus bon si tu as correctement géré l'initialisation de ta variable

par le paumé » 19 mai 2005, 16:21

ben désolé le header marche très bien je suis un boulet. mais ta page n'enleve en rien au fait qu'on peut toujours faire précédent

par le paumé » 19 mai 2005, 16:08

bon je suis désolé mais ça marche pas, pire le header ne marche même pas ce que je trouve inquiétant et je crois que tu a fais une petite erreur dans ton code ->

Code : Tout sélectionner

header("Location : ./index.php");
mais :

Code : Tout sélectionner

header("Location : ./index.html");
à part ce petit detail insignifiant ca me dit pas pourquoi mon header ne marche et pourquoi le bouton précédent continu de m'en faire voir de toute les couleurs

peut être c'est juste un souci de memoire cache du navigateur et que ci je vide le cache mes soucis disparaitront si il y a des personnes qui puissent me donner plus d'informations sur ce sujet la
merci d'avance

par Cyrano » 19 mai 2005, 15:34

Ok, tu vas faire autrement. Tu vas créer une page avec juste ceci:
<?php
// On commence par ouvrir la session 
session_start(); 

// On désenregistre la session login 
unset($_SESSION["login"]); 

// On supprime ttes les variables de la session 
session_unset(); 

// On redirige vers la page index
header("Location : ./index.php");
?>
Comme ça, pas de refresh quelconque, tu enregistre ça sous le nom deco.php et tu fais pointer ton lien [Se délogguer] dessus

par le paumé » 19 mai 2005, 15:24

bon je suis desespéré ](*,) !!! j'ai code quelques petites pages de test et le bouton précédent me tape sur le systeme je vous montre mon codage :

Code : Tout sélectionner

<?php session_start(); if(isset($_SESSION['login'])&&$_SESSION['login']=="bob") { $login=$_SESSION['login']; $MDP=$_SESSION['passe']; echo' <html> <head> <meta http-equiv="refresh" content="2;URL=./page2.php"> </head> <body>'; echo'<br> le login est : ',$login; echo'<br> le passe est : ',$MDP; echo'<br><br><a href="index.php" target="_parent">se deloguer</a>'; echo'</body> </html>'; } else { echo' <html> <head> <meta http-equiv="refresh" content="0;URL=./index.html"> </head> <body > </body> </html>'; } ?>
imaginez que vous etiez bien loguer avec bon mot de passe mais que la pause s'impose votre petite pause café de 10h vous attend donc par "sécurité" vous vous déloguez en cliquant sur mon petit lien "se deloguer" ce qui aura pour effet de vous envoyer sur index.php don voici le code :

Code : Tout sélectionner

<?php // On appelle la session session_start(); // On écrase le tableau de session $_SESSION = array(); // On détruit la session session_destroy(); ?> <html> <head> <meta http-equiv="refresh" content="0;URL=./index.html"> </head> <body> </body> </html>
cette page en theorie detruit la session puis me fait une redirection sur ma page daccueil et la si un petit malin clique sur précédent eh ben ca marche il arrive sur page2.php comme sil etait encore avec une session sauf que apperement ca marche que jusque au rechargement de ma page page2.php ou la il comprend enfin quil n'y a pas de session alors que faire sachant que dans mon vrai codage je rafraichis mes page que toutes les 5secondes et que pendant ce temps la le petit malin pourra faire ce qui veut sur cette page :cry:

par le paumé » 18 mai 2005, 23:10

Premierement je tiens à remercier tout le monde sur ce forum en effet j'ai posé mes questions il y a moins de 12h et je vois que plusieurs personnes ont pris la peine de lire mes petites questions et me répondent du mieux quelles peuvent.
donc un grand merci à tous les membres de ce forum :pouce:

deuxiemement je prend note de vos reflexions et je teste tout ca demain à priori devrait pas y avoir de problème mais je suis le roi du codage farfelu alors on sait jamais ! lol @+ et MERCI à tous :pouce: :pouce: :pouce:

par albat » 18 mai 2005, 17:36

Moralité :
Mammouth > dieu antique :langue:

par zeus » 18 mai 2005, 15:17

Oups :oops: :oops:

J'ai dit une grosse bétise !!!! :oops: :oops:

Veuillez me pardonner :agenouille:

par ZeRo[^L^]CoOOL » 18 mai 2005, 15:15

Il faut faire session_unset() je crois

Re: deux petites questions de la part d'un newbie

par albat » 18 mai 2005, 15:12

2. J'ai un souci avec la destruction de session je ne suis pas du tout sure que ce que je fais detruit bien la session :
session_start();     // On appelle la session
...
$_SESSION = array(); // On écrase le tableau de session
session_destroy();   // On détruit la session
C'est nickel ! =D>
Si tu fait session_destroy(), tu détruit toute les variables de sessions sur ton serveur, c'est sensé suffire !!!
Erreur ! [-X

session_destroy();
Cette fonction détruit la session en cours. Mais elle ne détruit pas les variables de sessions associées à la session courante.
http://www.phpdebutant.org/article69.php

par zeus » 18 mai 2005, 13:56

Merci Cyrano

Je connaissais le ET logique mais je voulais connaître le fonctionnement de bas niveau selon PHP

par Cyrano » 18 mai 2005, 13:55

Alors, en fait, on peut subdiviser, ce sera plus clair et surtout plus juste :
<?php
if(isset($_SESSION['internaute']))
{
    if($_SESSION['internaute'] == "visiteur")
    {
        // affichage normal
    }
    elseif($_SESSION['internaute'] == "membre")
    {
        // autre affichage ou redirection vers une autre page.
    }
}
else
{
    $_SESSION['internaute'] = "visiteur";
    // affichage normal
}
?>

par Cyrano » 18 mai 2005, 13:52

Le test va porter d'abord sur la première condition, puis sur la seconde: si la première n'est pas vérifiée, le second test est inutile, donc on passe au elseif
Mais dans tous les cas, les deux conditions du premier if doivent être vraies pour que soit exécutée l'instruction: si une seule des deux est fausse, tout le if retourne FAUX et on passe au elseif.

par zeus » 18 mai 2005, 13:49

Ce que je voulais savoir, c'était ça :
if(isset($_SESSION['internaute']) && $_SESSION['internaute'] == "visiteur") 
Quand on arrive sur ce test, comment est-ce que fonctionne l'interprétation php ?

Est-ce qu'il teste le 1er terme (isset($_SESSION['internaute'])) et si il retourne faux il ne teste pas le second terme ($_SESSION['internaute'] == "visiteur") ?

Parce que si il teste les 2 termes, le 2nd devrait déclencher une erreur si $_SESSION['internaute'] n'existe pas ??