[php] login / redirect / GET / POST

Pagina: 1
Acties:

  • dirkpostma
  • Registratie: Juni 2001
  • Laatst online: 10-05 16:53
Ik heb momenteel een login-script die wel werkt, met cookies (voor de makkelijkheid). Indien iemand een FORM post mbv. GET of POST, maar zijn login is verlopen, dan wil ik dat er een login-schermpje vertoond wordt. Na het inloggen wil ik dat de FORM (inclusief gevulde velden) nog een keer wordt gepost (waarbij de user nu wel is ingelogd)

Nu wil graag het volgende "schoonheids"-foutje eruithalen:
Om de cookie te zetten genereer ik nu een HTML pagina met een die via die het formulier refreshed. Er staat dan eventjes: "U bent succesvol ingelogd.", en daarna wordt de form opnieuw gepost.

Niet werkende oplossingen:
1) header("Location: blabla.php/+querystring");
Hier wordt de cookie niet gezet

2) het is nodig om de FORM opnieuw te posten, dus ik kan niet iets doen waarbij de session-data in variabelen staat


Hoe kan ik dit voor elkaar krijgen? Ik wil wel de cookie zetten en de form posten, maar zonder de redirect pagina. Hoe kan ik dit realiseren?

  • KlaasB
  • Registratie: Juli 2000
  • Laatst online: 01-07-2024
Ik werk daarom met sessions, ik laat de gebruiker dan eerst inloggen, en zet dan expliciet de variabelen die ik ook in de session bij houdt. Nadat hij dan ingelogd is, krijgt hij/zij de mogelijkheid om een cookie te zetten, als ze dat willen.
Mijn header ziet er dan ongeveer zo uit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
// Start de sessie
 session_start();
 if (!$PHPSESSID) {
  session_register('gebruiker');
  session_register('wachtwoord');
 } else if ((!$gebruiker) || (!$wachtwoord)) {
  session_register('gebruiker');
  session_register('wachtwoord');
 }
 
 
 if ((!$gebruiker) OR (!$wachtwoord)) {
  $gebruiker = $HTTP_COOKIE_VARS["cookie1"];
  $wachtwoord = $HTTP_COOKIE_VARS["cookie2"]; }
?>

It's not a bug, it's a feature


  • dirkpostma
  • Registratie: Juni 2001
  • Laatst online: 10-05 16:53
Op woensdag 22 augustus 2001 23:33 schreef KlaasB het volgende:
Ik werk daarom met sessions, ik laat de gebruiker dan eerst inloggen, en zet dan expliciet de variabelen die ik ook in de session bij houdt. Nadat hij dan ingelogd is, krijgt
Mmm, ja op zich zou dat best ideaal zijn... Ga ik eens mee experimenteren...
PHP:
1
2
3
4
5
<?
 if ((!$gebruiker) OR (!$wachtwoord)) {
  $gebruiker = $HTTP_COOKIE_VARS["cookie1"];
  $wachtwoord = $HTTP_COOKIE_VARS["cookie2"]; }
?>
Je slaat het wachtwoord toch wel geencrypt op he? Anders zouden mensen door in de cookie file te kijken het wachtwoord kunnen lezen...

  • dirkpostma
  • Registratie: Juni 2001
  • Laatst online: 10-05 16:53
Ik zit nu dus met sessions te spelen, en heb een vraag over het volgende:

stel, je gaat ervan uit dat een gebruiker cookjes heeft en je doet daarom niet aan een sid meegeven in de url. Bij elke page roep je session_start() aan. Wat gebeurt er dan met cookie-loze users? Er wordt dan voor elke page die hij viewt een nieuwe session aangemaakt. Is dat oplosbaar zonder sid in de url?

  • KlaasB
  • Registratie: Juli 2000
  • Laatst online: 01-07-2024
De cookie-loze gebruiker heeft pech.

It's not a bug, it's a feature


  • dirkpostma
  • Registratie: Juni 2001
  • Laatst online: 10-05 16:53
Niet alleen de cookie-loze user heeft pech... Ook de webmaster met heeeeel veel server-side sessies heeft pech, immers, voor elke page die een cookie-loze user viewt, wordt een nieuwe sessie aangemaakt. Op zich kan de de gc timeout kort zetten, maar eigenlijk wil ik dat bij een user met cookie de sessie lang, zeg een jaar, gehandhaafd blijft. Dan kan ik dus niet de gc op 1 minuut zetten, maar moet deze op 1 jaar zetten... Ik zit dan dus opgescheept met enorm veel server-side sessie data.

Heeft iemand hiervoor een oplossing? Zelf zit ik te denken om eerst een cookie-detect uit te voeren voordat een nieuwe sessie wordt aangemaakt. Maar, om te detecteren of cookies aanstaan, moet je volgens mij altijd de header("Location: nogmwattes") doen (om het "mooi" te doen).

En om het nog mooier te maken, wil ik ook dat de gePOSTe en geGETte data niet verloren gaan bij de cookie-check. Heeft iemand hier ervaring mee?
Pagina: 1