Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

[PHP] session 2 maal waarde zetten voordat het werkt

Pagina: 1
Acties:

Vraag


  • michaelboon82
  • Registratie: december 2010
  • Laatst online: 09-05 15:33
Beste medetweakers,

Ik heb hier een hele simpele code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
session_start();
if (ISSET($_SESSION['akkoord']) && $_SESSION['akkoord'] == true){
    echo 'GELUKT!'; 
    session_destroy();
    die;
}
if (!EMPTY($_POST)){
    if ($_POST['pass'] == 'test'){
        $_SESSION['akkoord'] = true;
        echo '<meta http-equiv="refresh">';
    }else{
        echo 'FOUT';
    }
}
print_r($_SESSION);
?>
<form method="post">
    <input type="text" name="pass">
    <input type="submit">
</form>

Ik zou zeggen dat als je 'test' in het invulveld intypt dat je na de refresh gelijk 'GELUKT' krijgt in beeld. De variabele $_SESSION['test'] wordt netjes naar true gezet maar de $_SESSION['akkoord'] == true reageert daar niet op.

Typ je daarna nog een keer 'test' in het invoerveld refreshed de pagina weer en reageert $_SESSION['akkoord'] == true wel.

Hier staat de code online: https://metlichtgeschreven.nl/test.php

Als je de pagina weer opnieuw opent moet je weer 2x 'test' in het invoerveld typen.

Heeft iemand enig idee waarom er de 1e keer $_SESSION['akkoord'] == true niet reageert ???????
Ik snap er helemaal niets van :?

Alvast bedankt!

EDIT deze vraag is 2x gepost. Bij de 1e keer zei Chrome dat er onvelige code verstuurd werd waarna ik nogmaals de reactie in Edge heb geplaatst. Ik wist niet dat Chrome wel de post had geplaatst, sorry!

[Voor 8% gewijzigd door michaelboon82 op 19-01-2018 20:48]

Beste antwoord (via michaelboon82 op 19-01-2018 21:04)


  • orf
  • Registratie: augustus 2005
  • Laatst online: 01:01
Je set de session pas op regel 10, terwijl je al op regel 3 kijkt of het gelukt is. Het heeft dus te maken met de volgorde waarin je dingen doet.

Het stukje code wordt niet echt overzichtelijk van een die() en een meta refresh. Dat soort constructies zou ik zo veel mogelijk vermijden om een logische werking te krijgen.

Alle reacties


  • michaelboon82
  • Registratie: december 2010
  • Laatst online: 09-05 15:33
Maar als je een sessie waarde zet dan is die waarde toch weer beschikbaar na de refresh?
Print_r geeft in ieder geval aan dat de waarde gezet is.

De die; en refresh zijn even lelijke stukken code om snel het probleem te laten zien. Dit alles pas ik op een grotere schaal toe maar dit stukje heb ik even snel in elkaar geflanst. Excuses.


EDIT Het is opgelost, bedankt voor het meedenken!

EDIT2:
Het blijkt nu dat (soms) de session wordt vernieuwd (dus je verliest alle waardes) als je refreshed naar een direct adres.

Bijvoorbeeld:
- je logt in
- je sessie krijgt na controle een jemaginloggen = true toegewensen
- de pagina refreshed naar je persoonlijke pagina
- je sessie is leeg waardoor je niet je persoonlijke pagina in mag

Op het moment dat je refreshed naar bijvoorbeeld https://www.mijnpagina.nl/login/gebruiker verlies je je sessiegegevens.
Op het moment dat je refreshed naar bijvoorbeeld ../login/gebruiker behoud je je sessiegegevens.

[Voor 49% gewijzigd door michaelboon82 op 19-01-2018 23:29]



Apple iPhone SE (2020) Microsoft Xbox Series X LG CX Google Pixel 4a CES 2020 Samsung Galaxy S20 4G Sony PlayStation 5 Nintendo Switch Lite

'14 '15 '16 '17 2018

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2020 Hosting door True