Header current url

  • Beste,


    Voor planemania.nl wil ik een klein systeempje gaan maken, dat stel je voor de sessie is voorbij, maar je vraagt bijv. de pagina online.php aan, dat ie dan naar de login pagina verwijst, maar dat als je inlogd, je dan word doorverwezen naar online.php.


    Daar gebruik ik het volgende voor:

    PHP
    $good = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
    if(!isset($_SESSION['GEHEIM']) && !isset($_POST['login'])){
    header("Location: http://planemania.nl/login.php?a=".$good);
    }


    Maar, als ik nu http://nl1.planemania.nl/online.php aanvraag, dan linkt ie goed door naar de inlog pagina, maar dan geeft ie de URL index.php mee, en niet online.php.


    Ik heb al een uurtje op Google gezocht, zonder resultaat.


    Weet iemand wat ik verkeerd doe / waarom het niet werkt?


    B.v.d.


    Lars

  • Mag ik je erop wijzen dat dit basis vragen zijn. Heel misschien heeft de referrer er iets mee te maken.
    [offtopic]Begin nu al te denken dat jij niet instaat bent om andere mensen te helpen als je zelf al met zulke vragen komt aanzetten.[/offtopic]

  • $_SERVER['HTTP_REFERER'] werkt niet, omdat het niet word meegezonden.


    Daarom dacht ik dat dit misschien werkte, maar helaas :(


    Iemand anders een idee?


    Lars
    [offtopic]Ik heb planemania.nl ook helemaal zelf gescript, alleen van de functies die ik nooit gebruik (zoals dit, of .htaccess of coordinaten etc.) weet ik niet hoe dat moet. Als je iemand belachelijk wil maken doe je dat maar lekker over jezelf en dan wel op je eigen site.[/offtopic]

  • Niels,
    Wat bedoel je met een normaal voorbeeld?
    Ik ga script_name even proberen, maar volgens mij had ik dat al geprobeerd zonder succes.


    Lars

    Nieuwe reactie samengevoegd met originele reactie op 03.10.10 12:06:02:
    Nee werkt niet, maar toch bedankt.
    Dan krijg ik namelijk als URL:
    nl1.planemania.nl/source/index.php
    En dat zou toch iets van
    nl1.planemania.nl/source/online.php moeten zijn, en eigenlijk moet de source map ook nog weg (maar die kan ik wel strippen met explode(); etc)


    Lars

  • Lang leven sessies?


    Sla $_SERVER['REQUEST_URI'] op in een sessie...
    Redirect naar login.php
    Kijk of er een url in de sessie is opgeslagen om naar te redirecten...
    Redirect en verwijder die waarde uit de sessie...


    Je kunt zelfs nog $_POST in de sessie opslaan...

  • Darsstar, werkt niet :(
    Ik heb nu dit:

    PHP
    $_SESSION['referer'] = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
    if(!isset($_SESSION['SECRET']) && !isset($_POST['login'])){
    header("Location: http://planemania.nl/login.php");
    }


    (er zit een session_start(); boven)


    En in login.php dit:

    PHP
    <?php
    session_start();
    include "header.php";
    if($_SESSION['referer'] != ""){
    // Sessie gezet
    } else{
    // Sessie niet gezet
    }


    Maar werkt niet, ik krijg "Sessie niet gezet" terug..


    Lars

  • Het heeft waarschijnlijk te maken met dat je standaard verschillende sessies hebt per subdomein...
    Rewrite elke login.php op een ander subdomein naar login.php en het zou volgens mij moeten werken...

  • Ik heb dat cookies verhaal maar eens geprobeerd.
    Ik kwam tot zover:

    PHP
    if(!isset($_SESSION['suser']) && !isset($_POST['login'])){
    setcookie("referer", $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'], 60, "/", ".planemania.nl");
    header("Location: http://planemania.nl/login.php");
    }


    Maar ook hier word de cookie niet aangemaakt :(:(
    En het rewriten wil ik liever niet, want ik wil de hoofdsite gebruiken voor het inloggen etc. en de nl1.planemania.nl voor de ingame.


    Lars

  • Tis misschien een gekke vraag maar heb je toevallig dat bovenstaande script ergens in een header.php of hoe het ook moge heten staan. Want ik denk dat hij gewoon de waarde veranderd omdat hij op op een andere pagina ook wordt verwerkt tot iets anders.

  • Volgens mij niet.
    Ervoor staat alleen dit:

    PHP
    <?php
    $time_start = microtime(true);
    usleep(100);
    include "config.php";
    include "session.php";


    In de config word alleen een DB connectie gemaakt.
    In de session.php word alleen gecheckt of je bent ingelogd.
    Zo niet dan word er niks gedaan, er word nergens doorgelinkt, en er komt nergens het woordje index.php in voor..


    Lars

  • Dat staat boven dit:

    PHP
    $good = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; 
    if(!isset($_SESSION['GEHEIM']) && !isset($_POST['login'])){ 
    header("Location: http://planemania.nl/login.php?a=".$good); 
    }


    Dus in totaal:

    PHP
    <?php
    $time_start = microtime(true);
    usleep(100);
    include "config.php";
    include "session.php";
    $good = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; 
    if(!isset($_SESSION['GEHEIM']) && !isset($_POST['login'])){ 
    header("Location: http://planemania.nl/login.php?a=".$good); 
    }


    Lars

  • Probeer is met debuggen!
    door bijv. gewoon een echo te plaatsen met die variabelen!
    zo kom je sneller achter je fout want eigenlijk hoort het gewoon te werken.

    School
    Tweedejaars Informatica Student @ Hogeschool Rotterdam.


    Webtalen
    - PHP ( OOP )
    - SQL
    - JavaScript i.c.m. jQuery framework
    - (x)HTML
    - CSS
    - Actionscript
    - XML


    Programmeertalen
    - Java
    - C#
    - Ruby i.c.m. on Rails framework

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!