[php][js]Refresh na login

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op een site die ik aan het maken ben maak ik gebruik van een login systeem dat overal in de site aangesproken kan worden.

Alleen is de header altijd variabel en kan verschillen van elkaar.

Hoe kan ik zorgen dat na de log-in procedure je altijd terug gestuurd word naar de pagina waar je vandaan kwam?

javascript=history.back(-1) heeft hierbij geen nut omdat hij na het inloggen dan weer terug gaat naar login.php

bvd,

Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Nu online
Dan doe je history.back(-2) ?

Of je onthoud met php waar hij twee pagina's geleden was.

Acties:
  • 0 Henk 'm!

Verwijderd

je referer afvangen en een header("location:".referer); versturen naar het adres van de referer?

[edit]
toevoeging: bij de eerste keer dat je login.php wordt benaderd de referer in een session opslaan zodat wanneer er goed is ingelogd naar de referer kan worden gesprongen...

@ddc: wat als je een keertje verkeerd inlogd?

[ Voor 57% gewijzigd door Verwijderd op 21-04-2004 15:28 ]


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Je zet in het inlog-form een hidden field met de waarde van de URL waar je vandaan kwam, op de pagina naar je het form dan verwerkt haal je die URL op en stop je in een:
Header("Location: " . $url);

Zoiets zou moeten werken, al zullen er misschien nog wel andere manieren zijn. :)

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Ik ga er van uit dat je headers al verstuurd zijn. Dan zou je dus zoiets doen
code:
1
2
3
4
5
echo TXT <<<
<script type="text/javascript">
document.location={$URL};
</script>
TXT;

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@PrisonerOfPain

headers worden toch automatisch verstuurd na een form?

edit:
Sorry als dit een N00bvraag was

Acties:
  • 0 Henk 'm!

  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
Verwijderd schreef op 21 april 2004 @ 15:26:
je referer afvangen en een header("location:".referer); versturen naar het adres van de referer?

[edit]
toevoeging: bij de eerste keer dat je login.php wordt benaderd de referer in een session opslaan zodat wanneer er goed is ingelogd naar de referer kan worden gesprongen...

@ddc: wat als je een keertje verkeerd inlogd?
Dat is inderdaad een prima oplossing, die gebruikte ik ook altijd :)
Totdat iemand een tool gebruikt die je referrer blank laat ..
In zo'n situatie post ik nu een hidden form field mee, die de waarde van document.location meekrijgt, waarnaar weer is te redirecten.
Hou er dus wel even rekening mee dat een referer niet standaard aanwezig hoeft te zijn ..

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

PhoeniX- schreef op 21 april 2004 @ 15:48:
[...]
Dat is inderdaad een prima oplossing, die gebruikte ik ook altijd :)
Totdat iemand een tool gebruikt die je referrer blank laat ..
In zo'n situatie post ik nu een hidden form field mee, die de waarde van document.location meekrijgt, waarnaar weer is te redirecten.
Hou er dus wel even rekening mee dat een referer niet standaard aanwezig hoeft te zijn ..
Het HTTP protocol stelt dat conforming clients altijd een HTTP-referer veld zouden moeten meegeven indien er niet vanuit de adresbalk of een quicklink/favorite naar een adres wordt gesurfed. Dit is een van de beroemde 'should' gevallen in protocollen.... en het leuke van 'should' tegenover 'may' is dat je een client die een 'should' failed mag mishandelen :) Oftewel ik zou bij gebrek aan een referer gewoon doorsturen naar de rootpagina van je site.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Ik zou zo iemand niet eens laten inloggen, als ik in een bastard-bui ben tijdens het coden. })

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

Verwijderd

Firewalls willen zulke dingen nog weleens blokken en als referer krijg je iets in de trend van 'BlockedReferer' (zo ff uit mn hoofd getyped); je zou dus altijd moeten controleren of de referer daadwerkelijk een url en of die binnen jouw domein is...

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Verwijderd schreef op 21 april 2004 @ 15:46:
@PrisonerOfPain

headers worden toch automatisch verstuurd na een form?

edit:
Sorry als dit een N00bvraag was
Een form submit is een http header ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mijn action is in de form: login.php

Als ik het goed begrijp pakt hij dmv die referer die login.php als header wanneer ik inlog op een "beveiligde" site. en zal dus niet terug gaan?

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Eenmaal op de 'login.php' zal je referer de URL van je formulier zijn, je zult dus op een andere manier (dmv sessies of een hidden field ofzo) de referer van de pagina voor het login-formulier moeten doorgeven aan je 'login.php'.

[ Voor 26% gewijzigd door OkkE op 21-04-2004 16:42 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

Verwijderd

En je moet er voor zorgen dat je deze waarde vast blijft houden op die login.php pagina aangezien er een refresh kan komen op die pagina zodra er een verkeerde inloggegevens gebruikt worden...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Probleem opgelost,
code:
1
2
3
<?
 $LastPage = $_SERVER['REQUEST_URI'];
?>


Dit heb ik in login.php gezet.

Ik maakte ook de fout dat ik de header opvroeg nadat er gesubmit was.
Nu kan je overal een willekeurige redirect doen naar waar je vandaan kwam.

Acties:
  • 0 Henk 'm!

Verwijderd

En als je een keer fout inlogt ben je waarschijnlijk de pagina kwijt waar je vandaan kwam... heb je dat al getest?

edit:
ik dacht dat request_uri je huidige pagina geeft...

[ Voor 23% gewijzigd door Verwijderd op 22-04-2004 16:19 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb dit getest en dit werkt na een foute login. hij refresht dan de login opnieuw en na het WEL goed inloggen gaat ie toch door.


'REQUEST_URI'

The URI which was given in order to access this page; for instance, '/index.html'.

Bron: PHP.net

[ Voor 34% gewijzigd door Verwijderd op 22-04-2004 16:25 ]


Acties:
  • 0 Henk 'm!

Verwijderd

zat ik er toch naast... :X

Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Je kan tock ook gewoon $_SERVER['HTTP_REFERER'] gebruiker in login afhandeling.

Het enige probleem is dat sommige browser het toestaand deze niet meet te sturen

Acties:
  • 0 Henk 'm!

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

REQUEST_URI geeft dus de URI van de huidige pagina, niet van de referer, je moet dus HTTP_REFERER gebruiken.

There's no place like 127.0.0.1


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@Mathack

Vertel mij dan eens waarom het werkt?

Ook als ik $LastPost echo geeft hij de goede URL.

[ Voor 36% gewijzigd door Verwijderd op 22-04-2004 17:12 ]

Pagina: 1