Hey,
Voor een website maak ik gebruik van het principe dat de formuliervelden (gebruikersnaam en wachtwoord) op de inlogpagina random worden gegenereerd, waarbij deze random strings worden opgeslagen in een sessie. Hierdoor wordt het extern inloggen onmogelijk gemaakt (ten minste, dat probeer ik hiermee te bereiken).
Nu heb ik het probleem dat (volgens mij alleen) in Firefox het probleem ontstaat waarbij de (html)pagina soms uit de cache wordt gehaald. Hierdoor komen de veldnamen in de htmlpagina niet overeen met de veldnamen in de sessie. Het komt dan ook wel eens voor dat ik twee keer moet inloggen voordat ik daadwerkelijk ingelogd ben.
Als template engine gebruik ik smarty (waarbij caching is uitgeschakeld).
De code die ik gebruik op de inlogpagina is:
De volgende check gebruik ik om bij het verzenden van de gegevens uberhaupt te controleren of de variabelen in de $_POST array bestaan:
De functie generateFormFieldNames() genereert voor zowel de gebruikersnaam als wachtwoord een random string en zet deze in een array.
Caching staat voor zover ik kan zien overal uit. De antwoordheaders in firebug geven aan dat caching is uitgeschakeld.
Weet iemand wat ik tegen dit probleem kan doen of hoe ik het kan oplossen?
Alvast bedankt.
Voor een website maak ik gebruik van het principe dat de formuliervelden (gebruikersnaam en wachtwoord) op de inlogpagina random worden gegenereerd, waarbij deze random strings worden opgeslagen in een sessie. Hierdoor wordt het extern inloggen onmogelijk gemaakt (ten minste, dat probeer ik hiermee te bereiken).
Nu heb ik het probleem dat (volgens mij alleen) in Firefox het probleem ontstaat waarbij de (html)pagina soms uit de cache wordt gehaald. Hierdoor komen de veldnamen in de htmlpagina niet overeen met de veldnamen in de sessie. Het komt dan ook wel eens voor dat ik twee keer moet inloggen voordat ik daadwerkelijk ingelogd ben.
Als template engine gebruik ik smarty (waarbij caching is uitgeschakeld).
De code die ik gebruik op de inlogpagina is:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| <?php $length = 10; if(isset($_SESSION['login_form_fields']['username']) AND isset($_SESSION['login_form_fields']['password'])) $login_form_fields = $_SESSION['login_form_fields']; else { $login_form_fields = $oLogin->generateFormFieldNames($length); } $_SESSION['login_form_fields'] = $login_form_fields; $smarty->assign('login_form_fields', $login_form_fields); ?> |
De volgende check gebruik ik om bij het verzenden van de gegevens uberhaupt te controleren of de variabelen in de $_POST array bestaan:
PHP:
1
2
3
4
5
6
7
8
| <?php if($_SERVER['REQUEST_METHOD'] == 'POST') { if(!isset($_POST[$_SESSION['login_form_fields']['username']]) AND !isset($_POST[$_SESSION['login_form_fields']['password']])) $errors[] = 'Er is een fout opgetreden. Wij vragen u de pagina te verversen en het nogmaals te proberen.'; ... etc. ?> |
De functie generateFormFieldNames() genereert voor zowel de gebruikersnaam als wachtwoord een random string en zet deze in een array.
Caching staat voor zover ik kan zien overal uit. De antwoordheaders in firebug geven aan dat caching is uitgeschakeld.
Weet iemand wat ik tegen dit probleem kan doen of hoe ik het kan oplossen?
Alvast bedankt.
[ Voor 8% gewijzigd door radem205 op 17-10-2011 17:08 ]