login  Naam:   Wachtwoord: 
Registreer je!
 Forum

zelfde pagina blijven na inloggen

Offline lau - 15/10/2005 23:45
Avatar van lauHTML interesse Je ziet wel eens op sommige site, dan zit je te surfen en wil je iets toevoegen in een forum bijvoorbeeld en kom je erachter dat je niet bent ingelogd en dus geen rechten hebt om iets toe te voegen. Vervolgens log je in en ben je na inloggen op de indexpagina.

Hoe zorg je ervoor dat je na inloggen gewoon op de pagina blijft waar je voor het inloggen gebleven was, dus eigenlijk dat er nix veranderd is, behalve dat je ingelogd bent en een (admin) control paneel hebt?

N.B.: ik heb dan over het inloggen waar je zeg maar links in zo'n menu kan inloggen, dus niet op een aparte inlog pagina zoals op SiMa). Zeg maar iets als phpfreakz.com (daar hebben ze zoiets wat ik wil )

7 antwoorden

Gesponsorde links
Offline cracker - 15/10/2005 23:47
Avatar van cracker Onbekend je vraagt gewoon de URL op met $_SERVER['REQUEST_URI'] en slaat die eerst op in een variabele na het inloggen redirect je de gebruiker naar de opgeslagen pagina.
De inhoud van alle velden moet je dan ook eerst opslaan want die gaan verloren als je de pagina herlaadt.
Offline Maarten - 15/10/2005 23:48
Avatar van Maarten Erelid Je hebt je form dus daar ergens staan in een blokje, dus je zet de loginverwerking ook in je indexpagina, je maakt de loginsessie aan, vernieuwt de pagina, en je zit nog steeds op dezelfde url, maar ingelogged 
Offline Lemon - 15/10/2005 23:56 (laatste wijziging 16/10/2005 00:06)
Avatar van Lemon PHP expert Maak in je Login form telkens een <input type="hidden" name="REDIRECT" value=".. de url waar je op dit moment inzit .." />

In je login script zet je dan als laatste:

header('location: '.$_POST['REDIRECT']);

en vwalla, je prob is gefixed.
Offline lau - 16/10/2005 00:16
Avatar van lau HTML interesse vreemd.. ik krijg het niet voor elkaar.. heb het geprobeerd met loginscript van FangorN (http://sitemasters.be/?pagina=scripts/scripts&cat=4&id=85), wel beetje bewerkt:

Ik heb dit (zonder die <? tags natuurlijk) toegevoegd na smaxidle, maar ga toch terug naar de index pagina 
  1. <?php
  2. echo '<script language="JavaScript" type="text/JavaScript">location.href="'.$_SERVER['REQUEST_URI'].'"</script>';
  3. ?>
Offline Rens - 16/10/2005 01:29 (laatste wijziging 16/10/2005 12:17)
Avatar van Rens Gouden medaille

Crew algemeen
$_SERVER['REQUEST_URI'] bevat de pagina waarop de gebruiker op dat moment zit.
Voorbeeldje:
Je zit op pagina forum/nieuw.php om een nieuw bericht te plaatsen, maar je bent niet ingelogd.
Dan word je naar leden/inloggen.php verstuurd om in te loggen.
Op die pagina staat je location.href... dingetje met $_SERVER['REQUEST_URI'].
Dan pakt PHP dus leden/inloggen.php omdat PHP nou net niet zo slim is dat hij weet dat je naar forum/nieuw.php verstuurd word...

Een oplossing:
Je verstuurd de gebruiker niet naar leden/inloggen.php maar naar leden/inloggen.php?redirect=forum/nieuw.php.
Je kijkt op leden/inloggen.php of er wel/niet een redirect geset is in de url.
Zo ja, een variabele setten met de waarde van $_GET['redirect'].
Zo nee, een variabele setten met de waarde leden/cpanel.php o.i.d.

Voorbeeldje:
  1. <?PHP
  2. if($_SERVER['REQUEST_METHOD'] == "POST")
  3. {
  4. if(IsSet($_GET['redirect']))
  5. {
  6. $sRedirect = $_GET['redirect'];
  7. } else
  8. {
  9. $sRedirect = "leden/cpanel.php";
  10. }
  11.  
  12. // ophalen van username + password
  13. // checken of ze in de database bestaan
  14.  
  15. if(MySQL_Num_Rows($rResult) == 1)
  16. {
  17. // gebruiker bestaat
  18. // dus we setten een sessie id (alleen voor voorbeeldje...)
  19. $_SESSION['id'] = MySQL_Result($rResult, 0, "id");
  20. echo '<script language="JavaScript" type="text/JavaScript">location.href="'.$sRedirect.'"</script>';
  21. } else
  22. {
  23. // error weergeven dat de gebruiker niet bestaat en zo.
  24. }
  25. } else
  26. {
  27. ?>
  28. formulier
  29. <?PHP
  30. }
  31. ?>


Je zou ook nog kunnen kijken of de pagina $_GET['redirect'] wel echt op je server staat voor extra veiligheid.

edit; @Proximus, inderdaad, foutje...
Bedankt voor het opmerken, zal het meteen aanpassen:) .
Offline Gerard - 16/10/2005 01:46
Avatar van Gerard Ouwe rakker if($_SERVER['REQUEST_URI'] == "POST")

?

REQUEST_METHOD? 
Offline Thomas - 16/10/2005 13:29 (laatste wijziging 16/10/2005 13:30)
Avatar van Thomas Moderator Je login wordt blijkbaar geinclude in elke pagina. Wat je dan in die login-include zou kunnen zetten:

  1. <?php
  2. // $niet_ingelogd is een statement dat controleert of je niet bent ingelogd
  3. if($niet_ingelogd) {
  4. if(isset($_POST['action']) && $_POST['action'] == "login") {
  5. // doe hier je login
  6. // ...
  7.  
  8. // ververs de pagina (i.v.m. cookies)
  9. header("Location: ".$_SERVER['REQUEST_URI']);
  10. }
  11. }
  12. ?>


Je login form:
  1. <?php
  2. if($niet_ingelogd) {
  3. // niet ingelogd
  4. ?>
  5. <form action="<?= $_SERVER['REQUEST_URI'] ?>" method="post">
  6. username <input type="text" name="user" /><br />
  7. password <input type="password" name="pass" /><br />
  8. ... wat je verder nog wilt invoeren ...
  9. <!-- voor het oppikken van een login-poging door PHP -->
  10. <input type="hidden" name="action" value="login" />
  11. <input type="submit" value="inloggen" />
  12. </form>
  13. <?php
  14. } else {
  15. // ingelogd
  16. ?>
  17. Ingelogd!
  18. <?php
  19. }
  20. ?>


Dit lijkt mij de eenvoudigste en netste methode, zonder META of JavaScript redirects.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.203s