anoniem Geplaatst: 24 augustus 2004 Delen Geplaatst: 24 augustus 2004 jaja daar ben ik weer... ik ben bezig met een soort van een catalogus. Iedereen kan er vrolijk doorheen bladeren (+-500 artikelen). Maar zodra iemand ergens op wilt reageren/aanschaffen/wijzigen moet hij of zij inloggen.. op zich zal ik dat wel prima voor elkaar krijgen maar zodra de inlog-pagina akkoord gaat met de gegevens wordt de bezoeker door het inlogscript teruggestuurd naar index.php stel dat diegene nu bij catalogus.php?artikel=244 zat te snuffelen en dacht "daar wil ik op reageren!" dan gaat hij inloggen en jawel... terug naar index.php (snetver, waar stond dat artikel nou??) kan ik zijn huidige positie opslaan in een sessie variabele met php_self en die variabele gebruiken om hem terug te brengen waar hij was? of is hier een andere functie voor? Quote Link naar reactie
anoniem Geplaatst: 24 augustus 2004 Auteur Delen Geplaatst: 24 augustus 2004 Op het moment dat die gebruiker wordt doorverwezen naar jouw inlogpagina is voor je script een variabele beschikbaar die laat zien waar de gebruiker vandaan kwam, namelijk: $_SERVER["HTTP_REFERER"]; als je aan het einde van je inlogscript de volgende code gebruikt: header("Location:" . $_SERVER["HTTP_REFERER"]); gaat de bezoeker weer terug naar die pagina. Het is net als bij een formulier natuurlijk beter om eerst de waarde van $_SERVER["HTTP_REFERER"] te controleren en eventueel kun je het adres vasthousen in een session variabele als je bijvoorbeeld bij een verkeerde login de pagina nogmaals zou herladen (en dus de referer verandert) Quote Link naar reactie
anoniem Geplaatst: 24 augustus 2004 Auteur Delen Geplaatst: 24 augustus 2004 maar ik moet de variabele opslaan terwijl hij nog op de "oude" pagina kijkt... als ik het doe zoals jij bedoelt en hij komt van www.rotjeknor.nl (hahaha ff geklikt en hij bestaat ook nog!! :lol: :lol: , was niet de bedoeling)dan gaat hij daar naar terug.. met de manier waarop ik het wou proberen kan ik controleren of hij bij mijn eigen site vandaan kwam door if isset(oudepositie) else index.php toch? Quote Link naar reactie
anoniem Geplaatst: 25 augustus 2004 Auteur Delen Geplaatst: 25 augustus 2004 [quote:b681100809]maar ik moet de variabele opslaan terwijl hij nog op de "oude" pagina kijkt...[/quote:b681100809] dat is onmogelijk, maar op zich denk je wel juist. Idd, als iemand van rotjeknor.nl komt, dan zou die daar niet naar terug moeten, vandaar ook dat je de waarde van $_SERVER["HTTP_REFERER"] zou moeten controleren. Je zou kunnen controleren of de waarde ervan wel begint met het de url van je website. Maar in ieder geval, 'jouw techniek' en 'mijn techniek' zijn hetzelfde, maar $_SERVER["HTTP_REFERER"] is dus de variable die je moet hebben om te zien waar iemand vandaan komt. Quote Link naar reactie
anoniem Geplaatst: 26 augustus 2004 Auteur Delen Geplaatst: 26 augustus 2004 toch loop ik te worstelen met referer.. ten 1 ste heb ik op php.net gelezen dat hij niet betrouwbaar is maar het belangrijkste is het volgende.. mijn login.php is selfredirecting.. dus als iemand een verkeerd wachtwoord invoerd komt hij weer in login.php terecht.. net zolang tot hij het opgeeft of het goede wachtwoord intikt. bij de eerste poging kan de referer netjes index.php zijn maar bij de tweede poging is het login.php.... daar gaat mijn idee... ik kan toch de link naar login.php in een include zetten met daar ongeveer in: if !isSet $_SESSION['user'] { $_SESSION['redirect'] = $PHP_SELF; echo "u moet eerst inloggen"; link naar inloggen } else Hallo gebruiker en dan bij de login de variabele $_session['redirect'] gebruiken voor de functie HEADER? Quote Link naar reactie
anoniem Geplaatst: 27 augustus 2004 Auteur Delen Geplaatst: 27 augustus 2004 Als ik het geod begrijp wil je du siemadn laten registreren/inloggen en als dat is gebeurd, wil je de gebruiker weer naar het juiste artikel/pagina sturen. Ik zag dat je gebuik maar van een artikel_ID. Deze zou ik meesturen naar de login en bij de redirect weer meegeven aan de index.php. Misschien moet je in de index.php wel iets doen als een artikelnummer gevuld of leeg is. Quote Link naar reactie
anoniem Geplaatst: 27 augustus 2004 Auteur Delen Geplaatst: 27 augustus 2004 [quote:3efbf7ef3c="maIRnaairruJ"]Het is net als bij een formulier natuurlijk beter om eerst de waarde van $_SERVER["HTTP_REFERER"] te controleren en eventueel kun je het adres vasthousen in een session variabele als je bijvoorbeeld bij een verkeerde login de pagina nogmaals zou herladen (en dus de referer verandert)[/quote:3efbf7ef3c] Je hebt alle stukjes van de puzzel bij elkaar. Je weet nu van sessie variabelen, je weet hoe je het adres moet uitlezen waar iemand vandaan kwam (de id is ook een idee, maar dat werkt niet meer zodra iemand niet vanaf een pagina komt met artikelen, zoals bijv. een contact pagina). Dus de eerste keer in het loginscript zet je die referrer in een sessie variabele en de volgende keren gebruik je die waarde. bijv: [code:1:3efbf7ef3c] if(empty($_SESSION['referer'])) $_SESSION['referer'] = $_SERVER["HTTP_REFERER"]; ... // login correct $loc = $_SESSION['referer']; $_SESSION['referer'] = ''; header("Location:" . $loc); // login niet goed header('Location:login.php');[/code:1:3efbf7ef3c] Ook als je de ID zou gebruiken zou het zo gaan, alleen is $_SERVER["HTTP_REFERER"] dan die ID Quote Link naar reactie
anoniem Geplaatst: 27 augustus 2004 Auteur Delen Geplaatst: 27 augustus 2004 doe het als phpBB ... als er niet ingelogd is, stuur dan naar de inlogpagina en geef de url/pagina mee in de URI die de gebruiker wilde openen. Is dat geen idee? Quote Link naar reactie
anoniem Geplaatst: 27 augustus 2004 Auteur Delen Geplaatst: 27 augustus 2004 ik dacht dat ze dat deden met de phpself daar kwam mijn idee dus ook vandaan Quote Link naar reactie
anoniem Geplaatst: 27 augustus 2004 Auteur Delen Geplaatst: 27 augustus 2004 @MAIR Dit werkt inderdaad goed, maar ik las op php.net dat sommige browsers die servervariabele niet ondersteunen... Quote Link naar reactie
anoniem Geplaatst: 27 augustus 2004 Auteur Delen Geplaatst: 27 augustus 2004 [quote:f0be342169="maIRnaairruJ"] [code:1:f0be342169] // login correct $loc = $_SESSION['referer']; $_SESSION['referer'] = ''; header("Location:" . $loc); ######--> Location tussen " en de .$loc // login niet goed header('Location:login.php'); #######--> nu de hele inhoud tussen ' (enkel)[/code:1:f0be342169] [/quote:f0be342169] Hee! dit valt me nu pas op! waarom is dit? waarin werkt dit niet? [code:1:f0be342169]header('Location: $loc');[/code:1:f0be342169] of [code:1:f0be342169]header('Location:' $loc);[/code:1:f0be342169] Sorry voor de misschien idiote vragen hoor maar soms wordt ik gek van die enkele en dubbele aanhalingstekens. ook die . bij .$loc snap ik niet... $loc werkt toch ook? alvast wederom bedankt! Quote Link naar reactie
anoniem Geplaatst: 29 augustus 2004 Auteur Delen Geplaatst: 29 augustus 2004 Ja hoor! ik gebruik nu de $_SERVER["HTTP_REFERER"] en degene waarvoor ik de site maak, kijkt met IE5 naar de vooruitgang en $_SERVER["HTTP_REFERER"] wordt niet gevuld!?!? Wat ik ook doe om de $_SERVER["HTTP_REFERER"] weer te geven... Bij hem blijft ie leeg?? hoe kan dat? Quote Link naar reactie
anoniem Geplaatst: 7 september 2004 Auteur Delen Geplaatst: 7 september 2004 Heel simpel, zoals je zelf al zei: (Bron: http://nl.php.net/reserved.variables) 'HTTP_REFERER' The address of the page (if any) which referred the user agent to the current page. This is set by the user agent. Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted. Oftewel gebruik dit niet, maar bijv. het volgende: login.php ----------- <?php error_reporting(E_ALL); // dit zorgt voor redirect initialisatie voor gebruik :) if(isset($_GET['redirect']) && $_GET['redirect'] != '') { $redirect = htmlentities(stripslashes(trim($_GET['redirect']))); }else{ $redirect = ''; } // check of de surfer op de knop heeft gedrukt if(isset($_POST['login_submit'])) { // check login if(login == correct) { // gebruik hier je eigen manier om je login te checken echo 'Ingelogd! Klik <a href="'.$redirect.'">hier</a>'; }else{ echo 'Niet Ingelogd! Klik <a href="./login.php?redirect='.$redirect.'">hier</a> om te herkansen'; } }else{ ?> <form name="login_form" action="./login.php?redirect=<?=$redirect?>" method="post"> <input type="text" name="login_username" value="Username"></input><br /> <input type="password" name="login_password" value="Password"></input><br /><br /> <input type="submit" name="login_submit" value="Login"></input> </form> <?php } ?> catalogue.php ---------------- <?php echo 'Klik <a href="./login.php?redirect='.$_SERVER['PHP_SELF'].'">hier</a> om in te loggen'; ?> Dat zou in principe moeten werken (niet gechecked overigens, type fouten voorbehouden :D) Quote Link naar reactie
anoniem Geplaatst: 7 september 2004 Auteur Delen Geplaatst: 7 september 2004 zoiets had ik ook inmiddels in elkaar geflanst.. maar ik dacht dat dat niet netjes was.. maar goed, het werkt! Bedankt! Quote Link naar reactie
anoniem Geplaatst: 7 september 2004 Auteur Delen Geplaatst: 7 september 2004 Geen probleem. Das ff het eerste wat me te binne sprong, ik weet niet of het nog netter kan ;) Quote Link naar reactie
anoniem Geplaatst: 29 september 2004 Auteur Delen Geplaatst: 29 september 2004 het topic is al redelijk oud maar is van mezelf :wink: Klopt het dat $_SERVER['HTTP_REFERER']; wordt geblokkeerd door firewalls? Met name bij Symantec Int. Security wordt hij niet aangemaakt... Is er een manier om dit te omzeilen? (de reden dat ik hier op doorga is omdat ik de redirect niet in de url wil hebben. In mijn ogen te gevoelig voor user-input :x ) Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen