[PHP] WWW-Auth blijft vragen...

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BramT
  • Registratie: Oktober 2001
  • Laatst online: 16-09 10:01
Ik wil via een WWW-Authentication een username en password vragen. Het maakt niet uit wat er ingevoerd wordt, de checks komen later pas...

start.php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if ($op=="log")
{   header('WWW-Authenticate: Basic realm="CvZ"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'error....';
    exit;
} 

if (!isset($_SERVER['PHP_AUTH_USER'])) 
{
    echo "Welkom!<br><br><a href=start.php?op=log>Klik hier om in te loggen</a>";
} else
{
    echo "Welkom! Je bent ingelogd als <b>{$_SERVER['PHP_AUTH_USER']}</b>.";
    echo "<br><a href=start.php?op=log>Klik hier om onder een andere naam in te loggen</a>";
}


Het probleem is dat, zodra start?op-log wordt aangeroepen, er 3 keer om een username & password wordt gevraagd en daarna "error...." wordt gegeven. Alsof het opgegeven username & password fout is.... alleen er wordt hier niet eens gechecked... toch???

(PS. Een search op GoT leverde (weer) niks op (is er iets aan de hand met die zoekmachine?!?!)
(PS2. Het script is gebassed op een script wat o.a. hier staat, wat overigens wel gewoon werkt...)

You are the all-dancing, all-singing crap of the world - Jack


Acties:
  • 0 Henk 'm!

  • MikeN
  • Registratie: April 2001
  • Laatst online: 15-09 18:48
Nogal logisch. Je browser zal na het invoeren van username/password combo, wederom de pagina met ?op=log erbij aanvragen. Gevolg is dat hij weer een foutmelding geeft, en je weer moet proberen in te loggen.

Acties:
  • 0 Henk 'm!

  • BramT
  • Registratie: Oktober 2001
  • Laatst online: 16-09 10:01
... tuurlijk ja... zat er net nog wat documentatie op na te pluizen... :P

Het is wel de bedoeling dat pplz weer kunnen uitloggen (onder andere naam inloggen), hoe krijg je die $_SERVER['PHP_AUTH_USER'] weer 'unset'???

Lijkt alsof het met unset() de variable niet permanent wordt weggegooid... :(

[ Voor 21% gewijzigd door BramT op 02-01-2003 21:21 ]

You are the all-dancing, all-singing crap of the world - Jack


Acties:
  • 0 Henk 'm!

  • MikeN
  • Registratie: April 2001
  • Laatst online: 15-09 18:48
BramT schreef op 02 January 2003 @ 21:14:
... tuurlijk ja... zat er net nog wat documentatie op na te pluizen... :P

Het is wel de bedoeling dat pplz weer kunnen uitloggen (onder andere naam inloggen), hoe krijg je die $_SERVER['PHP_AUTH_USER'] weer 'unset'???
Door de browser af te sluiten. In principe.

Sommige browsers doen het ook al na een 401 te sturen, maar niet alle doen dat.

Acties:
  • 0 Henk 'm!

  • BramT
  • Registratie: Oktober 2001
  • Laatst online: 16-09 10:01
Na het aflsuiten van de browser (of uitvoeren van unset($_SERVER['PHP_AUTH_USER']);) geeft isset($_SERVER['PHP_AUTH_USER']) idd een false.

Maar nu het volgende "vreemde": als ik dan weer wil inloggen (start.php?op=log) krijg ik geen inlogvenstertje, maar weer gewoon de melding dat ik ben ingelogd met de naam waarmee ik als eerste was ingelogd. Het wordt dus blijkbaar (nog) ergens onthouden...

ik gebruik nu volgende code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if ($op=="logout")
{
    unset($_SERVER['PHP_AUTH_USER']);
}

if ($op=="log")
{   if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="CvZ"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'error....';
    exit; }
} 

if (!isset($_SERVER['PHP_AUTH_USER'])) 
{
    echo "Welkom!<br><br><a href=start.php?op=log>Klik hier om in te loggen</a>";
} else
{
    echo "Welkom! Je bent ingelogd als <b>{$_SERVER['PHP_AUTH_USER']}</b>.";
    echo "<br><br><a href=start.php?op=logout>Klik hier om onder een andere naam in te loggen</a>";
}

You are the all-dancing, all-singing crap of the world - Jack


Acties:
  • 0 Henk 'm!

Verwijderd

Volgens mij heeft dat niets te maken met je phpcode, maar meer met de browser waar je mee werkt. Hij onthoudt (cached zeg maar) volgens mij je username en wachtwoord, aangezien hij die elke keer meestuurd naar de server als er om een authenticatie wordt gevraagd. De enigste manier om die dus te verwijderen is je browser afsluiten.

Acties:
  • 0 Henk 'm!

  • PieterJ
  • Registratie: Juli 2000
  • Laatst online: 12:46
Ter info:

Van PHP.NET
Both Netscape Navigator and Internet Explorer will clear the local browser window's authentication cache for the realm upon receiving a server response of 401. This can effectively "log out" a user, forcing them to re-enter their username and password. Some people use this to "time out" logins, or provide a "log-out" button.

Acties:
  • 0 Henk 'm!

  • BramT
  • Registratie: Oktober 2001
  • Laatst online: 16-09 10:01
Okee... dan maar even de n00b uithangen... :P

hoe geef ik een 401 server response???

een header("HTTP/1.0 401"); is niet voldoen... ???

You are the all-dancing, all-singing crap of the world - Jack


Acties:
  • 0 Henk 'm!

  • MikeN
  • Registratie: April 2001
  • Laatst online: 15-09 18:48
BramT schreef op 02 januari 2003 @ 23:57:
Okee... dan maar even de n00b uithangen... :P

hoe geef ik een 401 server response???

een header("HTTP/1.0 401"); is niet voldoen... ???
Lees eens die eerste post van je :+
En dan vooral regelnr. 2 en 3 :+
Pagina: 1