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 :

Portail Captif - URL d'origine


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut Portail Captif - URL d'origine
    Bonjour.

    Je suis en train de développer un portail captif internet en PHP5. Mon serveur est sous Unbuntu Server.
    Tout se passe bien excepté un problème : je n'arrive pas à bien rediriger sur l'url d'origine que l'utilisateur a tappé en ouvrant son navigateur.

    En gros une situation, sans les détails :
    - L'utilisateur ouvre son navigateur qui va automatiquement sur Google
    - Le portail l'envoie sur une page pour se connecter grâce à son code
    - Le code est bon, le portail ouvre une nouvelle fenêtre avec Google en adresse, et redirige la page initiale vers une page d'accueil et d'aide du portail.

    Mon soucis est que je dois avoir des problème de liens relatifs / absolus dans mon code, je me retrouve avec une url du genre :
    http://www.google.fr/pc/webportal/index.php
    Je retrouve mon arborescence de mon serveur :s
    Et tout de manière j'utilise la variable $_SERVER['HTTP_REFERER'], qui n'est pas du tout conseillée.


    Donc si vous avez des idées comment "choper au vol" l'url de l'utilisateur, pour ensuite le rediriger correctement après l'identification, je suis preneur

    En gros faudrait une page entre la redirection du serveur et mon index.php.
    Peut être quelque chose de ce genre je ne sais pas trop :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    session_start();
     
    if(!isset($_SESSION['origin_target']))
    {
        $_SESSION['origin_target'] = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
    }
     
    header('location: /index.php');


    Merci d'avance !

  2. #2
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    j'ai du mal a tout comprendre ... surtout le "portail captif internet"
    ya pas une loi contre ca ?


    si j'ai bien compris, tu veux utiliser l'URL que l'utilisateur a demandé en 1er ?
    si oui : pourquoi ne pas l'inscrire comme donnée de session ou dans un cookie ?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    Hehe, tout est fait dans les règles je te rassure ^^
    Son but est bien de "réguler" et faire payer l'accès internet, comme dans un cyber café en fait.

    Actuellement j'ai un soucis de variables en session, je ne comprends plus du tout...

    - Quand je tente d'accèder à un site, le serveur renvoie bien sur la page d'index dans mon /var/www
    - Dans ce fichier /var/www/index.php, j'ai un premier filtre d'ip qui redirige bien les PC connectés vers /var/www/pc/webportal/index.php

    - J'arrive donc dans ma porte d'entrée du portail captif. J'ai ultra simplifié ma page, ca donne ceci :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    session_start();
    $_SESSION['origin_target'] = 'http://'.$_SERVER['SERVER_NAME'];
     
    $url = "http://".$_SERVER['SERVER_ADDR']."/pc/webportal/intro.php";
    echo "<script type=\"text/javascript\">document.location.replace(\"".$url."\");</script>";
    Dans mon $_SERVER['SERVER_NAME'] j'ai bien le site voulu au départ (par exemple : www.google.fr), la redirection se passe bien vers ma page intro.php pour accueillir l'utilisateur.

    Le problème est que ma variable en session a pris comme valeur l'IP du serveur

    Avant redirection dans index.php :
    $_SESSION['origin_target'] => "http://www.google.fr"
    Après redirection dans intro.php :
    $_SESSION['origin_target'] => "http://192.168.0.1"

    C'est là ou je ne comprends vraiment pas ce qu'il se passe, je dois manquer un truc.

    A coté j'ai configuré mon fichier apache2.conf, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 404 /pc/webportal/index.php

    J'avoue que c'est bordélique dis comme ca, mais ca m'éclaircis un peu les choses de l'écrire également
    Par contre je n'ai jamais utilisé de cookie, mais bon, normalement la session devrait fonctionner !

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    Je viens de remarquer quelque chose.

    Quand je fais ceci :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $_SESSION['origin_target'] = 'http://'.$_SERVER['SERVER_NAME'];
    $url = "test.php";
    echo "<script type=\"text/javascript\">document.location.replace(\"".$url."\");</script>";
    Je récupère bien ma variable en session sur ma page test.php.

    Quand je fais ca :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $_SESSION['origin_target'] = 'http://'.$_SERVER['SERVER_NAME'];
    $url = "http://".$_SERVER['SERVER_ADDR']."/pc/webportal/test.php";
    echo "<script type=\"text/javascript\">document.location.replace(\"".$url."\");</script>";
    La variable en session n'existe plus quand j'arrive sur ma page test.php.


    Si quelqu'un a une explication...

  5. #5
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    concernant le serverName, que ce soit :
    http://www.google.fr
    ou
    http://209.85.135.103
    les 2 pointent vers la meme adresse, donc pas grave !


    par contre le 192.168.0.1 ressemble a une adresse reseau local ou a celle d'un routeur et surement pas a une des IP de google ... tu as verifié ?


    tu devrais utiliser header() pour faire les redirections plutôt que du JS

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    J'ai pris exemple du 192.168.0.1, c'était en fait l'IP de mon serveur, j'ai pas précisé désolé.
    J'ai testé avec la fonction header de PHP mais ca ne fonctionnait pas non plus (header déjà définit dans la page visée), ou j'ai du mal m'en servir, ce qui est fort possible ^^

    En gros ce que j'ai retenu, outres des problèmes bizzares (mon 2e message), je retiens qu'avec les redirections JS, quand on met une adresse en absolu, la session php se vide.

    Du coup j'ai fait un système pas très joli, mais en gros je passe mon "origin target" en POST, tout simplement. Et ce que je veux faire fonctionne, donc voila. Je vais pas m'éterniser non plus sur ce problème

    Merci pour l'aide quand même !

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

Discussions similaires

  1. [1.x] Identification en gardant l'url d'origine
    Par volfield dans le forum Symfony
    Réponses: 4
    Dernier message: 20/06/2011, 11h18
  2. recherche de portail captif sous windows
    Par ogenki dans le forum Réseau
    Réponses: 8
    Dernier message: 12/04/2011, 14h04
  3. Réponses: 1
    Dernier message: 05/07/2010, 16h14
  4. redirection différente selon l'url d'origine
    Par Creanet dans le forum Langage
    Réponses: 4
    Dernier message: 28/08/2009, 15h40
  5. Réponses: 4
    Dernier message: 16/11/2006, 16h52

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