Pagina alleen toegankelijk via andere pagina

Pagina: 1
Acties:

  • YoshiBignose
  • Registratie: April 2004
  • Laatst online: 01-12 21:44
Ik heb me rot gezocht op google maar weet niet welke termen ik moet gebruiken.

Wat ik wil hebben is dat ik een pagina heb (bijvoorbeeld test.php) en als mensen dat in hun webbrowser typen dat ze dan er niet op kunnen komen, maar als ze via start.php zijn gekomen dan werkt het wel. Een soort script dus waarbij test.php controleerd dat de site waar de bezoeker vandaan kwam start.php is.

Facts don't care about your feelings


  • Johnny
  • Registratie: December 2001
  • Laatst online: 10:09

Johnny

ondergewaardeerde internetguru

Er zijn twee manieren, de eerst is het controleren van de doorverwijzende pagina, die kan je vinden in de variable $_SERVER['HTTP_REFERER'] als die niet http://www.example.com/start.php is dan kun je de bezoeker weer terug sturen met header('Location: http://www.example.com/start.php');

Een andere manier is door het op te slaan in een sessie of cookie, het voordeel daarvan is dat je ook kan bijhouden of de pagina ooit is bezocht, en dus niet alleen direct daarvoor.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022

Reveller

Hopla!

php: contoleer $_SERVER['HTTP_REFERER'] ;)

edit:
Niet de eerste :+

[ Voor 30% gewijzigd door Reveller op 19-02-2007 20:51 ]

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 09-10 13:15
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
/* Pagina1.php */
session_start();
$_SESSION['pagina1'] = true;
echo 'Welkom op pagina1';
?>

<?
/*
  Pagina 2
*/
session_start();
if (!isSet($_SESSION['pagina1']) || !$_SESSION['pagina1']) 
{
 # Gebruiker heeft pagina1 niet bezocht
 header('Location: pagina1.php');
}
else
{
 # Gebruiker heeft pagina1 WEL bezocht!
 echo 'Hello world!';
}
?>

[ Voor 16% gewijzigd door Helmet op 19-02-2007 20:52 ]

Icons are overrated


  • YoshiBignose
  • Registratie: April 2004
  • Laatst online: 01-12 21:44
bedankt allemaal! :D

helmet, hoe werkt jouw methode dan precies? hoe lang wordt die zogenaamde session dan opgeslagen?

[ Voor 71% gewijzigd door YoshiBignose op 19-02-2007 20:55 ]

Facts don't care about your feelings


  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 09-10 13:15
YoshiBignose schreef op maandag 19 februari 2007 @ 20:53:
helmet, hoe werkt jouw methode dan precies? hoe lang wordt die zogenaamde session dan opgeslagen?
Een sessie kan eigenlijk gezien worden als een soort server-sided cookie, waarin een bulk informatie opgeslagen kan worden, het enige wat naar de client verstuurd wordt is een cookie (of als deze niet aanstaan/herkent worden een GET-waarde) met daarin een sessieId. Wat dit scriptje doet is een veldje "pagina1" opslaan in de sessie voor de betreffende gebruiker op pagina 2 wordt dan gekeken of dat veldje bestaat binnen de sessie (let wel op dat deze gestart moet worden met session_start(); en dat deze functie voor enige uitvoer gebruikt moet zijn)

Is het veldje er niet => ga naar pagina #1
Anders => Geef pagina #2 weer

Icons are overrated


  • YoshiBignose
  • Registratie: April 2004
  • Laatst online: 01-12 21:44
wat is de meest veilige manier? ik hoorde dat HTTP REFERER onbetrouwbaar was?

en waar moet ik die code precies plaatsen helmet?

Facts don't care about your feelings


  • Fuzzillogic
  • Registratie: November 2001
  • Laatst online: 01-07 22:34
Houd er rekening mee dat browsers meer en meer de cookies van andere domeinen dan die van de huidige pagina blokkeren, vanwege privacy. Hetzelfde geldt voor referrers, welke vaak door proxies worden weggegooid. De hier gebruikte technieken zijn dus met mate te gebruiken, tenzij je graag je bezoekers wilt pesten.

Zo heb ik zelf ook restricties op cookies gezet, omdat ik advertentiebedrijven geen inzicht wil geven in mijn surfgedrag (hebben ze niets mee te maken).

Verwijderd

YoshiBignose schreef op maandag 19 februari 2007 @ 21:06:
wat is de meest veilige manier? ik hoorde dat HTTP REFERER onbetrouwbaar was?

en waar moet ik die code precies plaatsen helmet?
Referers worden soms niet doorgegeven (zie boven), of door de persoon die een site bezoekt zelf aangepast (wat mogenlijk is, omdat de browser dit doorgeeft).

Dus een sessie is inderdaad veiliger :).

De php code van een sessie moeten altijd helemaal bovenaan de pagina, omdat je session_start(); altijd voor html-output moet plaatsen.
(het vullen van de sessie variabelen hoeven natuurlijk niet altijd bovenaan, maar in dit geval moet er eerst gecontroleerd worden of mensen toegang hebben, dus dan is bovenaan de pagina logisch ;) )

[ Voor 27% gewijzigd door Verwijderd op 19-02-2007 21:25 ]


  • YoshiBignose
  • Registratie: April 2004
  • Laatst online: 01-12 21:44
en waar het HELLO WORLD staat, moet ik daar dan de hele website in doen? of iets anders?

Facts don't care about your feelings


Verwijderd

Daar moet inderdaad de pagina komen te staan die je wilt laten zien als mensen via pagina 1 naar die pagina 2 zijn gegaan.
Pagina: 1