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 :

document.referrer pour tester page et rediriger si pas du même domaine


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Mobylette
    Inscrit en
    Décembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Mobylette

    Informations forums :
    Inscription : Décembre 2018
    Messages : 21
    Par défaut document.referrer pour tester page et rediriger si pas du même domaine
    Bonjour,
    Je cherche à faire ceci :

    tester referrer > si page du même domaine alors affichage de la page, si non affichage de l'index.

    Est-ce que ce code rempli bien cela ?

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <script>
    docref = documen<script>
    docref = document.referrer;
    if( docref == -1 )
    {
        // redirect
        window.location.replace( "http:/pagedaccueil" );
    }
    else
    {
        // ignore and load page
    }
    </script>t.referrer;
    if( docref == -1 )
    {
        // redirect
        window.location.replace( "http:/pagedaccueil" );
    }
    else
    {
        // ignore and load page
    }
    </script>

    Merci

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour et bienvenue sur DVP.

    Plusieurs erreurs grossières dans le peu de ligne que tu fournis.
    Des balises <script></script> mises un peu n'importe comment, comme docref = documen<script>, la structure devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script>
      // ton code
    </script>
    Méconnaissance de la propriété referrer de l'objet document et notamment dans if( docref == -1 ), referrer étant une chaine de caractère ce test ne veux rien dire : Document.referrer.

    Je te suggère de reprendre déjà cela et de regarder du coté de String.prototype.indexOf().

  3. #3
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Bonjour, il y a plusieurs raisons pour lesquelles ce script peut ne pas fonctionner.

    Le document.referrer n’est pas fiable, parce qu’il dépend de l’en-tête HTTP Referer qui lui-même n’est pas fiable. Il peut avoir été supprimé par un proxy, ou n’avoir jamais été envoyé. De plus, les navigateurs actuels offrent la possibilité (nativement ou via une extension) de désactiver l’envoi de Referer afin de protéger la vie privée de l’utilisateur.

    À voir la popularité croissante de NoScript, de plus en plus d’Internautes désactivent JavaScript. Il est prudent de développer en tenant compte de ce fait, et s’assurer que notre site sera fonctionnel sans JavaScript.

    Pour savoir si l’utilisateur vient de notre site, on gère ça typiquement avec une session côté serveur. En PHP, ça ressemblerait à ça :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    if (!session_id()) {
        session_start();
    }
     
    if (empty($_SESSION['previous_page']) {
        header('Location: http://pagedaccueil');
        exit();
    }
     
    $_SESSION['previous_page'] = $_SERVER['SCRIPT_NAME'];
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  4. #4
    Membre averti
    Homme Profil pro
    Mobylette
    Inscrit en
    Décembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Mobylette

    Informations forums :
    Inscription : Décembre 2018
    Messages : 21
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    Donc mieux vaut passer par PHP (merci pour le code). Si on doit faire sans javascript (ce qui ne me dérange pas car je n'aime pas).

    Je profite de ce post pour savoir s'il existe une alternative PHP à un code javascript que j'utilise : on clique sur un texte, cela affiche le numéro de téléphone qui est encodé en base64 dans le code source. le code détecte si c'est un android et rend le lien cliquable, et si non se contente d'afficher le téléphone sans lien. J'utilise ce code pour limiter le spam sur mon numéro professionnel… actuellement ma solution noscript est un qrcode… si je peux faire une solution plus simple et éliminant moins de monde en ne m'exposant pas au spam, je suis vraiment intéressé

    Merci

  5. #5
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Ouvre un nouveau sujet, ça sera plus clair pour les autres
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  6. #6
    Membre averti
    Homme Profil pro
    Mobylette
    Inscrit en
    Décembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Mobylette

    Informations forums :
    Inscription : Décembre 2018
    Messages : 21
    Par défaut
    Bonsoir,

    Pas de soucis Watilin, j'ai posé la question sur le forum PHP ici : https://www.developpez.net/forums/d1...mero-telephone

    Bonne fin de soirée

  7. #7
    Membre averti
    Homme Profil pro
    Mobylette
    Inscrit en
    Décembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Mobylette

    Informations forums :
    Inscription : Décembre 2018
    Messages : 21
    Par défaut
    Pour le code PHP, il est bien à mettre tout en haut de la page ?

    J'ai donc mis ceci :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    if (!session_id()) {
        session_start();
    }
    if (empty($_SESSION['previous_page']) {
        header('Location: http://monsite.ext');
        exit();
    }
    $_SESSION['previous_page'] = $_SERVER['SCRIPT_NAME'];
    ?>
    <!DOCTYPE html>
    <html lang="fr">
    et ça me renvoit cette erreur quand j'appelle la page directement :
    Parse error: syntax error, unexpected '{' in mentions.php on line 5
    C'est dû à quoi ?
    Merci

  8. #8
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Il manque une ) ligne 5.

  9. #9
    Membre averti
    Homme Profil pro
    Mobylette
    Inscrit en
    Décembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Mobylette

    Informations forums :
    Inscription : Décembre 2018
    Messages : 21
    Par défaut
    Merci, je l'ai regardé plusieurs fois sans le voir…

    Par contre que je clique sur le lien <p onclick="window.location='mentions.php'"></p> ou que j'entre l'URL directement, je ne peux plus accéder à la page, je suis redirigé vers la page d'accueil systématiquement.
    Pourquoi ?

    Merci

  10. #10
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Le < de <?php doit être le premier caractère du fichier. Il ne doit y en ni espace ni saut de ligne avant.

  11. #11
    Membre averti
    Homme Profil pro
    Mobylette
    Inscrit en
    Décembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Mobylette

    Informations forums :
    Inscription : Décembre 2018
    Messages : 21
    Par défaut
    C'est bien le cas <? php est tout en premier, sans rien avant

    Le soucis est que sur free pages perso, il fallait créer un dossier sessions à la racine de l'espace Ca a résolu les erreurs.

    Par contre que je clique sur le lien <p onclick="window.location='mentions.php'"></p> ou que j'entre l'URL directement, je ne peux plus accéder à la page, je suis redirigé vers la page d'accueil systématiquement.
    Pourquoi ?

    Merci

  12. #12
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 124
    Par défaut
    Salut
    Citation Envoyé par Januor Voir le message
    C'est bien le cas <? php est tout en premier, sans rien avant
    .... Merci
    <? php tu as un espace en trop entre ? et le premier p de php
    <?php
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  13. #13
    Membre averti
    Homme Profil pro
    Mobylette
    Inscrit en
    Décembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Mobylette

    Informations forums :
    Inscription : Décembre 2018
    Messages : 21
    Par défaut
    Bonsoir,
    Dans le fil de discussion oui, mais dans le code, j'ai bien mis sans espace

    edit : pourquoi quand je tape code pour le code ça ne fait pas comme sur les messages édités ou le code est mis en syntaxe colorimétrique online, là ça fait un block…

  14. #14
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Citation Envoyé par Januor Voir le message
    edit : pourquoi quand je tape code pour le code ça ne fait pas comme sur les messages édités ou le code est mis en syntaxe colorimétrique online, là ça fait un block…
    C’est une balise non documentée Essaye [c][/c].

    Edit : pour ton problème, c’est peut-être une histoire de BOM, vérifie la config de ton éditeur de texte.
    Ou alors un problème dans la façon dont la session est représentée côté client. Que donne le script suivant quand tu l’exécutes ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    echo 'session.name = ' . ini_get('session.name') . '<br />';
    echo 'session.referer_check = ' . ini_get('session.referer_check') . '<br />';
    echo 'session.save_handler = ' . ini_get('session.save_handler') . '<br />';
    echo 'session.save_path = ' . ini_get('session.save_path') . '<br />';
    echo 'session.use_cookies = ' . ini_get('session.use_cookies') . '<br />';
    echo 'session.use_only_cookies = ' . ini_get('session.use_only_cookies') . '<br />';
    echo 'session.use_strict_mode = ' . ini_get('session.use_strict_mode') . '<br />';
    echo 'session.use_trans_sid = ' . ini_get('session.use_trans_sid') . '<br />';

    Edit 2 : on est bien d’accord qu’il faut que le script de la page d’accueil aussi peuple la variable $_SESSION['previous_page'] hein ? Sinon la redirection sera faite à chaque fois.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  15. #15
    Membre averti
    Homme Profil pro
    Mobylette
    Inscrit en
    Décembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Mobylette

    Informations forums :
    Inscription : Décembre 2018
    Messages : 21
    Par défaut
    Bonjour,

    On est bien d'accord que la page source définit la session en effet , voici la partie de code de la page d'index du site, appelant la page des mentions légales :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    	if(!isset($_SESSION['previous_page'])) {
    		session_start();
    		$_SESSION['previous_page'] = true;
    		}
    ?>
    pour le script voici le résultat :
    session.name = PHPSESSID
    session.referer_check =
    session.save_handler = files
    session.save_path = /mnt/162/sda/5/b/monsite/sessions
    session.use_cookies = 1
    session.use_only_cookies = 0
    session.use_strict_mode =
    session.use_trans_sid = 0
    Bonne journée

  16. #16
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Citation Envoyé par Januor Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    	if(!isset($_SESSION['previous_page'])) {
    		session_start();
    ...
    Ce n’est pas comme ça que ça marche !
    Il faut appeler session_start avant d’utiliser le tableau $_SESSION, sinon il n’est pas peuplé.

    Tes valeurs ini ont l’air normales. Cependant, pour une meilleure sécurité, je te conseille les paramètres suivants :

    session.cookie_httponlyactivé
    Le cookie de session est envoyé avec le flag httpOnly qui fait que JavaScript ne peut ni le voir ni le manipuler.

    session.use_only_cookiesactivé
    La session ne peut être représentée que par des cookies, elle ne peut pas être dans l’URL.

    session.use_strict_modeactivé
    Garantit que l’id de session ne peut pas être créé par le client. Dans le cas contraire, ça rend possible un certain type d’attaque par vol de session.

    session.use_trans_siddésactivé
    Le transparent SID est un vieux bricolage. Quand cette option est activée, si le serveur détecte que le client n’accepte pas les cookies, PHP va modifier le code HTML envoyé au client, pour y ajouter l’id de session partout où ça lui semble utile : dans les liens sous la forme d’un paramètre GET, et dans les formulaires sous la forme d’un <input type="hidden">. Tu peux observer ce comportement en désactivant session.use_only_cookies et session.use_cookies (mais n’oublie pas de les remettre après).

    session.cookie_secure → ça dépend
    Le cookie de session est envoyé avec le flag secure. Quand un cookie a ce flag, le navigateur ne l’envoie pas au serveur si la connexion n’est pas chiffrée HTTPS. Je crois me souvenir que sur les pages perso Free, on est limité à HTTP non chiffré, donc tu ne pourras pas utiliser cette option.

    Pour plus d’infos voir configuration à l’exécution et Passer l'identifiant de session.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  17. #17
    Membre averti
    Homme Profil pro
    Mobylette
    Inscrit en
    Décembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Mobylette

    Informations forums :
    Inscription : Décembre 2018
    Messages : 21
    Par défaut
    Merci Watilin pour toutes ces précisions qui permettent notamment une meilleure sécurité

    ça fonctionne

    Bonne soirée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modifier document.referrer page web
    Par morgan47 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/05/2009, 08h23
  2. document.getElementById pour une content page.
    Par akli2008 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 29/05/2008, 17h06
  3. Problème pour tester des pages ASP
    Par said394 dans le forum ASP
    Réponses: 2
    Dernier message: 16/12/2007, 00h29
  4. Fonction pour tester l'existence d'une page
    Par erwmat dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/09/2007, 00h06
  5. Erreur 404 - problème pour tester la page jsp
    Par zuzuu dans le forum Tomcat et TomEE
    Réponses: 10
    Dernier message: 05/07/2006, 16h55

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