[php] Wyświetlenie autoryzacji

0

Witam :-) . Przepraszam za pismo ale jestem zmeczony ;-) Moj problem dotyczy okienka autoryzacji w panelu administracyjnym. Okienko to uruchamia sie tylko jeden raz po odpaleniu pzregladarki i wejsciu do panelu admisnistarcyjnego, wychodzac z panelu i myszkowaniu po innych linkach i powrocie do linku z panelem adminsitracyjnym przy ktorym powinno sie wysweitlic okienko autoryzacji , niestety sie nie wyswietla i kazdy pzrez to mzoe meic dostep do panelu admisniatrcyjnego. Ponowne wyswietleniwe okienka autoryzacji jest wtedy gdy zamkne pzregladarke i uruchomie ja jeszcze raz. Klikajac na link z panelem administracyjnym okienko sie pojawia. Postanowilem ze zrobie wylogowanie do tego okienka ze jak klikne wyloguj to strona automatycznie wyjdzie z panelu adminsitarcyjnego i przejdzie do strony startowej. KLikajac na panel adminsitracyjny ze strony startowej chcialbym zeby za kazdym razem keidy sie wyloguje z panelu administarcjnego okienko autoryzacji sie pojawialo. Jesli mozecie proszepomozcie mi z tym kodem wylogowania takz zeby to chodzilo tak jak napisalem wyzej. Pozdrawiam i czekam na odpowiedzi.

Oto kod autoryzacji:

<?php $autoryzacja = FALSE; if ( (isset($_SERVER['PHP_AUTH_USER']) AND isset($_SERVER['PHP_AUTH_PW'])) ) { if ( ($_SERVER['PHP_AUTH_USER'] == 'auto') AND ($_SERVER['PHP_AUTH_PW'] == 'marka') ) { $autoryzacja = TRUE; } } if($autoryzacja) { session_start(); $_SESSION['up'] = 2; // jesli administrator include('paneladmin.php'); } else { header('WWW-Authenticate: Basic realm="ADMINISTRACJA"'); header('HTTP/1.0 401 Unauthorized'); echo " <script>window.location='http://localhost/anuluj.php'</script>'"; } ?>

A oto kod Wylogowania:

<?php session_start(); $_SESSION = array(); session_destroy(); header ("Location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/index.php"); exit(); ?>
0

session_unregister('up') ?
$_SESSION['up'] = 0 ? Nie jestem pewny, które zadziała.

0

Czesc. Dzięki za pomoc ale żadne nie chce iść, może ja cos nie tak robie to co napisales wstawiam do pliku z wylogowaniem. Jesli masz jeszcze jakies pomysly to daj znac. Jeszcze raz dzieki. Pozdrawiam

0

to przeglądarka trzyma te informacje w sobie aż do jej zamknięcia i tego nie zmienisz
skasuje te dane bo uzna je za nie ważne gdy dostanie nagłówek

HTTP/1.0 401 Unauthorized

czyli musisz dodać ten sam fragment kodu do kodu wylogowywania
tylko nie wiem czy to nie spowoduje wyświetlania okienka logowania od razu ...

0

Cześć. Tak niestety spowodowało to wyświetlenie okienka autoryzacji od razu, nie wiem już co zrobić z tym okienkiem żeby wyskakiwało jak kliknę na panel administracyjny ehhhh :(. Pozdro

0

Spróbuj jeszcze przed zniszczeniem sesji usunąć ciasteczko sesyjne:

if (isset($_COOKIE[session_name()]))
   setcookie(session_name(), '', time()-42000, '/');
0

nie, sesja tu nie ma nic do gadania
niestety nie da się odróżnić pierwszego zalogowania od każdego przejścia, więc proponuję żeby na wpisanie loginu i hasła dać np 3 minuty
i rozdzielić dla wygody na 3 skrypty:

admin.php:

<?php
session_start();
$_SESSION['time'] = 0;

if(!empty($_SESSION['logged'])){
  include('paneladmin.php');
} else {
  $_SESSION['referer'] = $_SERVER['REQUEST_URI'];
  Header('Location: login.php'); // powinna być ścieżka bezwzględna z hostem itp !
  Die();
}

?>

login.php

<?php
session_start();

$time = isset($_SESSION['time']) ? $_SESSION['time'] : 0;

if($time >= time() - 180 &&
    isset($_SERVER['PHP_AUTH_USER']) &&
    isset($_SERVER['PHP_AUTH_PW'])){

  $t = Array(
    'login' => $_SERVER['PHP_AUTH_USER'],
    'pass' => $_SERVER['PHP_AUTH_PW']
  );

  // sprawdzenie danych - można ewentualnie w ten sposób, no ale ...
  $t['logged'] = $t['login'] == 'auto' && $t['pass'] == 'marka';

  $_SESSION = $t + $_SESSION;

  if($t['logged']){
    $_SESSION['time'] = 0;
      $uri = empty($_SESSION['referer']) ?
        (empty($_SERVER['HTTP_REFERER']) ? false : $_SERVER['HTTP_REFERER']) :
        $_SESSION['referer'];
      if($uri !== false)
        Header('Location: ' . $uri); else
          echo '<script> history.back(-1) </script>';
    
    $_SESSION['referer'] = '';
    Die();
  }
}

$_SESSION['time'] = time();
header('WWW-Authenticate: Basic realm="ADMINISTRACJA"');
header('HTTP/1.0 401 Unauthorized');
?>

logout.php:

<?php
session_start();
session_destroy();
header('Location:  http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/index.php');
Die();

?>

teraz wszystko powinno zależeć już tylko od sesji i możesz korzystać z rad z powyższym postów

1 użytkowników online, w tym zalogowanych: 0, gości: 1