HTTP authenticatie met PHP

Status
Niet open voor verdere reacties.

larsojo

Gebruiker
Lid geworden
10 nov 2010
Berichten
213
Hallo allemaal,

Ik wil graag een pagina beveiligen en heb dit ook gegoogeld. Toen kwam ik bij deze code uit:
Code:
<?php
ob_start($end);
?>
<HTML>
<HEAD>
<TITLE>HTTP authenticatie met PHP</TITLE>
</HEAD>
<BODY>
<?php
$gebruikersnaam = "user"; //De gewenste gebruikernaam
$wachtwoord     = "pass"; //Het gewenste wachtwoord

//Hieronder niets aanpassen
if($_SERVER['PHP_AUTH_USER'] != $gebruikersnaam || $_SERVER['PHP_AUTH_PW'] != $wachtwoord)
{
  header("WWW-Authenticate: Basic realm=\"Beveiliging\"");
  header("HTTP/1.0 401 Unauthorized");
  echo "Je bent niet ingelogd! Probeer het <A HREF=\"javascript:location.reload();\">opnieuw</A>.";
  exit;
}
?>
<?php

?>
</BODY>
</HTML>
Het probleem is als ik eenmaal heb ingelogd kan ik niet meer uitloggen of opnieuw inloggen (Tenzij ik het wachtwoord wijzig). Ik had van iemand gehoord dat ik dan een session moet maken. Maar hij had het erg druk dus kon mij niet verder helpen.

Alvast bedankt,

Mvg Larsojo
 
Dat is normaal.
Een sessie maken met zoiets is een slechte oplossing.
 
PHP:
<?php 
if($_SESSION['http_logged'] != 1) { 
      $_SERVER['PHP_AUTH_USER'] = ''; 
      $_SERVER['PHP_AUTH_PW'] = ''; 
    } 

    if ($_SERVER['PHP_AUTH_USER'] != $your_username || $_SERVER['PHP_AUTH_PW'] != $your_password ) { 
      $_SESSION['http_logged'] = 1; 
      header('WWW-Authenticate: Basic realm="realm"'); 
      header('HTTP/1.0 401 Unauthorized'); 
      exit; 
    } else { 
      $_SESSION['http_logged'] = 0; 
    } 
?>
 
Maar ik wil graag elke keer dat ik op die pagina kom dat ik dan weer opnieuw moet inloggen
 
Die code werkt niet. Als ik op annuleren druk dan kom ik op de beveiligde pagina. En als ik de gegevens invoer die ik heb opgeslagen, dan accepteerd hij dat niet. Maar kan je een session maken voor dat? Ook al is het niet verstandig dat ik dat daarin verwerk.
 
Dat is nu eenmaal hoe HTTP authenticatie werkt:
Existing HTTP clients and user agents typically retain authentication information indefinitely. HTTP/1.1. does not provide a method for a server to direct clients to discard these cached credentials.

Er zijn wel methoden om uit te loggen (google maar eens op http authentication en logout), maar die zijn niet 100% betrouwbaar (werken niet in alle gevallen en in alle browsers). Voor wat jij wilt kan je beter een andere authenticatiemethode gebruiken.
 
@Supersnail Kan jij een session daarvoor maken? Want dat heb ik nodig...
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan