[php] simpele login

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01 12:01
ik heb al een hele tijd een script op mijn pagina staan wat er voor zorgt dat er ingelogd moet worden. volgens mij heb ik het script ooit van php.net gehaald.

het script ziet er als volgt uit:
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
<?

if (!isset($PHP_AUTH_USER)) {

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified 
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1 
header("Cache-Control: post-check=0, pre-check=0", false); // HTTP/1.1 
header("Pragma: no-cache"); // HTTP/1.0
header('WWW-Authenticate: Basic realm="Secured Database Area"');
header('HTTP/1.0 401 Unauthorized');

echo 'Autorisatie vereist.';
exit;} 

else if (isset($PHP_AUTH_USER)) {

if (($PHP_AUTH_USER != "gast") || ($PHP_AUTH_PW != "abc")) {

header('WWW-Authenticate: Basic realm="Secured Database Area"');
header('HTTP/1.0 401 Unauthorized');

echo 'U heeft een foute inloggegevens ingevoerd';


exit;} 
} 
?>


nu wil ik een andere gebruiker toevoegen aan het script, en volgens mij zou dit heel makkelijk moeten kunnen, alleen wil het niet lukken.

wat ik vreemd vind aan het script is deze regel : if (($PHP_AUTH_USER != "gast") || ($PHP_AUTH_PW != "abc"))

je zou denken dat die || een && zou moeten zijn, maar als ik het daar in verander wordt er altijd toegang gegeven als de naam "gast" wordt ingevuld.

ziet iemand wat er mis is aan dit script, en hoe ik het aan kan passen?

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 21-09 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Dat klopt toch wat het script zegt?

Als $PHP_AUTH_USER ongelijk is aan gast OF $PHP_AUTH_PW ongelijk is aan abc. Beide condities moeten dus waar zijn om NIET de if-statement in te gaan.

[ Voor 26% gewijzigd door gorgi_19 op 23-02-2004 14:17 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Let op de !=. Zoals het er nu staat wordt er NIET ingelogd als username ongelijk is aan gast OF wachtwoord ongelijk aan abc.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Code voor het laatste if blokje kan worden:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
if ( !(
         ( ($PHP_AUTH_USER == "user1") && ($PHP_AUTH_PW == "pwuser1") ) ||
         ( ($PHP_AUTH_USER == "user2") && ($PHP_AUTH_PW == "pwuser2") )
      )
   ) {

header('WWW-Authenticate: Basic realm="Secured Database Area"');
header('HTTP/1.0 401 Unauthorized');

echo 'U heeft een foute inloggegevens ingevoerd';


exit;}


Dus als er niet een geldige combinatie van username en wachtwoord worden ingevoerd krijg je een foutmelding.

Acties:
  • 0 Henk 'm!

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01 12:01
jullie hebben gelijk :)
ik had niet goed genoeg gekeken naar de !=
door het zo te doen als bigbang wordt het een stuk overzichtelijker, bedankt!