Ashus.ashus.net
Změna přihlašovacích údajů při autentizaci přes webserver - Printable Version

+- Ashus.ashus.net (https://ashus.ashus.net)
+-- Forum: My creations (https://ashus.ashus.net/forum-3.html)
+--- Forum: PHP scripts (https://ashus.ashus.net/forum-5.html)
+--- Thread: Změna přihlašovacích údajů při autentizaci přes webserver (/thread-149.html)



Změna přihlašovacích údajů při autentizaci přes webserver - Ashus - 25.6.2013

Pokud je nutné změnit přihlášeného uživatele pro větší množství systémů a používá se HTTP autentifikace pomocí webserveru (např. pomocí .htpasswd nebo LDAPu konfigurovaného v .htaccess), můžete provést reautentifikaci tímto způsobem, aniž byste zavírali prohlížeč nebo používali tlačítko zpět. Způsoby jako přesměrování na neexistujícího uživatele ve formátu http ://uživatel@server/ se ukázaly liché, protože prohlížeče v URL uživatele nechávají a pak se na údaje ptají na každé stránce. Redirect pomocí header taky není možný, protože pak prohlížeč nemá důvod čekat na nové údaje. Spolehlivě se pouze odhlásit nelze (omezení HTTP).

Celou složku/subdoménu máme zaheslovanou pomocí účtů v .htpasswd.

logout.php
PHP Code:
session_start();
if ((!isset(
$_SESSION['HTTP_REMOTE_USER'])) || ($_SESSION['HTTP_REMOTE_USER'] == $_SERVER['REMOTE_USER']))
 
   {
 
   header('WWW-Authenticate: Basic realm="Pokud neprovedete nove prihlaseni, zustane prihlasen \''.$_SERVER['REMOTE_USER'].'\'."');
 
   header('HTTP/1.1 401 Authorization Required');
 
   }

$_SESSION['HTTP_REMOTE_USER'] = $_SERVER['REMOTE_USER'];

echo 
'<meta http-equiv="refresh" content="0;URL=./">'