[PHP] Correcte WWW-Authenticate uitvoeren

Pagina: 1
Acties:

  • Flake
  • Registratie: Februari 2001
  • Laatst online: 01-11-2024
Ik gebruik momenteel (kort samengevat) het volgende scriptje om een WWW-Authenticate te doen:
PHP:
1
<?// Importeren databaselogininclude "database.inc";// IP adres loggen$ip = getenv("REMOTE_ADDR");// Beginnen aan WWW-Authenticateif (!isset($PHP_AUTH_USER)) {  Header("WWW-Authenticate: Basic Realm=\"Password required\"");  Header("HTTP/1.0 401 Unauthorized");// Onderstaand bij rammen op cancel  echo "Smerige slet, niet op cancel rammen!!";  exit;  } else {// Wat je ziet bij goed login/pass  mysql_connect($databaseip,$databaselogin,$databasepassword) or die ("Error 01: All your database are belong to us");  mysql_select_db("website") or die ("Error 02: Database is verdwenen");  $sql = "SELECT id FROM logins WHERE username='$PHP_AUTH_USER' and password='$PHP_AUTH_PW'";  $result = "mysql_query($sql) or die ("Error #03: Resultaten zijn pleite");  $num = mysql_numrows($result);  $row = mysql_fetch_array($result);  if ($num == 1) {// Wachtwoord en login zijn goed  echo "Blaat blaat, welkom op de site.";  exit;// Bij verkeerd l/p } else { echo "Ej kerel, jouw wachtwoord klopt niet!"; exit;}?>

Het nadeel van dit script is dat je maar één keer een WWW-Authenticate popup krijgt. En als je die vereerd hebt ingevoerd mag je weer een nieuwe sessie gaan beginnen omdat $PHP_AUTH_USER dan niet leeg is.

Hoe kan ik dit script dusdanig aanpassen dat je 3x een loginscherm krijgt bij een fout password, en dat je dan niet weer een nieuwe sessie hoeft te beginnen?

Verwijderd

In plaats van
PHP:
1
<?echo "Ej kerel, jouw wachtwoord klopt niet!"; exit;}?>

zou je natuurlijk kunnen doen:
PHP:
1
<?Header("WWW-Authenticate: Basic Realm=\"Password required\"");  Header("HTTP/1.0 401 Unauthorized");?>

Lijkt me dat dat een heleboel oplost ?

  • Flake
  • Registratie: Februari 2001
  • Laatst online: 01-11-2024
Ik denk het niet, want dan werkt volgens mij de site van boven naar beneden. M.A.W.: Dan vul je voor de tweede keer een wachtwoord in, maar deze wordt dan altijd bevestigd en krijg je weer een lege pagina.

Maar ik wil het wel ff testen, moment

/edit: Je hebt gelijk, het werkt :). Bedankt hæ!

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 10-08 15:15
// Importeren databaselogininclude "database.inc";
include "database.inc"
Tip:
Gooi geen te includen files in directories toegangkelijk via de webserver, want tenzij je toegang tot database.inc weigert kan iemand zo de inhoud ervan lezen en potentieel misbruiken. Vooral een nogal voor de hand liggende naam als "database.inc" is nogal makkelijk te raden.

Een standaard directory-structuur is meestal:

\jouwdirectory\HTML
(waarbij alleen de HTML-directory en subdirectories toegankelijk is vanaf het web)

Zet dan je hoofdscript in \jouwdirectory\HTML en plaats de te includen files in \jouwdirectory (je kan ze dan includen met include "..\hoehetteincludenbetandookheet.inc").

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


  • Flake
  • Registratie: Februari 2001
  • Laatst online: 01-11-2024
Hij staat ook niet op een plek waar die toegankelijk is voor de webserver, maar dit is slechts om een lang verhaal kort te houden :)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zaterdag 30 maart 2002 11:33 schreef SONiCB00M het volgende:
Maar ik wil het wel ff testen, moment
En toch is bovenstaande de oplossing :)

Hoe je ervoor kan zorgen dat iemand bijv. slechts 3x kan inloggen is weer wat lastiger, dat kan niet zo lekker met php ben ik bang.


Maar het wordt in principe dit:
if(niet goed)
header("nieuwe login");
else
doe_iets();

  • Flake
  • Registratie: Februari 2001
  • Laatst online: 01-11-2024
OK bedankt voor de hulp.
Weet iemand ook hoe je iemand ook kan uitloggen op deze manier, dus zonder de sessie van IE te beëindigen?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zaterdag 30 maart 2002 11:42 schreef SONiCB00M het volgende:
OK bedankt voor de hulp.
Weet iemand ook hoe je iemand ook kan uitloggen op deze manier, dus zonder de sessie van IE te beëindigen?
't Is mij nog nooit gelukt, dus als je een manier vindt :)

phpmyadmin doet het door de 'vorige user mee te geven' aan de login console en dan te weigeren als de user die dan inlogt hetzelfde is als de vorige.
Pagina: 1