Misschien vage titel maar ik zal het proberen uit te leggen. Ik wil dat mensen op een pagina in moeten loggen en dan kunnen ze handelingen maken op de site. Ik heb even een voorbeeld gemaakt waarin ik het test.
De bezoeker komt op test1.php en moet daar inloggen:
Daar vult ie een wachtwoord in en gebruikersnaam en wordt dan naar test2.php gestuurd. de code van test2.php:
We zien daar dus als hij inlogt met mark en wachtwoord woei, dan wordt hij gestuurd naar een pagina met een link naar test3.php. hier zit dus het probleem. Ik wil namelijk niet dat alles van test3.php zichtbaar wordt als mensen er direct heenlinken, dus moet er gecontroleerd worden of de sessie nog aan het lopen is.
test3.php
Nu zit het zo dat als ik direct naar test3.php link ik gewoon de text "HOER A" krijg, ( als ik dus mijn browser gesloten heb en direct erheen link ) en dat is niet echt de bedoeling, hij zou dus moeten detecteren dat de session niet loopt, en moet dus weergeven "Dacht het niet he".
Als ik eerst inlog en dan naar test3.php link dan krijg ik ook "HOER A" te zien.
Doe ik nou iets verkeerd?
PS: Hetgene wat ik geprobeerd heb:
En verder nog een aantal van dat gepruts met ='en. Maar komt er elke keer op neer dat het niet werkt zoals ik het wil.
Te bezoeken op: test1.php, test2.php en test3.php
De bezoeker komt op test1.php en moet daar inloggen:
PHP:
1
2
3
4
5
6
7
8
9
| <html> <body> Welkom<br> <form action="test2.php" method="POST"> Username: <input type="text" name="user"><br> Password: <input type="password" name="pass"><br><br> <input type="submit" value="Login"> </body> </html> |
Daar vult ie een wachtwoord in en gebruikersnaam en wordt dan naar test2.php gestuurd. de code van test2.php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| <?session_start();?> <html> <body> <? $user1 = "mark"; $pass1 = "woei"; foreach ($_POST as $field => $value) { $user = $_POST[user]; $pass = $_POST[pass]; } if ( $user1 == $user and $pass1 == $pass ) { $_SESSION[ingelogd]="yep"; echo"Je bent ingelogd<br><br> <a href='test3.php'>Klik hier om naar de volgende pagina te gaan.</a>"; } else { echo"Wachtwoord is fout, probeer het opnieuw<br><br> <form action='test2.php' method='POST'> Username: <input type='text' name='user'><br> Password: <input type='password' name='pass'><br><br> <input type='submit' value='Login'>"; } ?> </body> </html> |
We zien daar dus als hij inlogt met mark en wachtwoord woei, dan wordt hij gestuurd naar een pagina met een link naar test3.php. hier zit dus het probleem. Ik wil namelijk niet dat alles van test3.php zichtbaar wordt als mensen er direct heenlinken, dus moet er gecontroleerd worden of de sessie nog aan het lopen is.
test3.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| <?session_start();?> <html> <body> <? if ( $_SESSION[ingelogd] = yep ) { echo"HOER A!"; } else { echo"Dacht het niet he"; } ?> </body> </html> |
Nu zit het zo dat als ik direct naar test3.php link ik gewoon de text "HOER A" krijg, ( als ik dus mijn browser gesloten heb en direct erheen link ) en dat is niet echt de bedoeling, hij zou dus moeten detecteren dat de session niet loopt, en moet dus weergeven "Dacht het niet he".
Als ik eerst inlog en dan naar test3.php link dan krijg ik ook "HOER A" te zien.
Doe ik nou iets verkeerd?
PS: Hetgene wat ik geprobeerd heb:
PHP:
1
2
| $_SESSION[ingelogd] == "yep" // in test2.php en $_SESSION[ingelogd] == yep // in test3.php |
En verder nog een aantal van dat gepruts met ='en. Maar komt er elke keer op neer dat het niet werkt zoals ik het wil.
Te bezoeken op: test1.php, test2.php en test3.php
[ Voor 32% gewijzigd door orange.x op 19-01-2005 12:13 ]