[php] Wyświetlenie autoryzacji

Odpowiedz Nowy wątek
2007-03-16 03:21
Assan
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&gt;'";
}
?>

A oto kod Wylogowania:

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

Pozostało 580 znaków

2007-03-16 06:32
nav
0

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


utf-8 rlz! ٩(ಥ_ಥ)۶

Pozostało 580 znaków

2007-03-16 21:45
Assan
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

Pozostało 580 znaków

2007-03-16 22:47
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 ...


Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">

Pozostało 580 znaków

2007-03-17 01:05
Assan
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

Pozostało 580 znaków

2007-03-17 09:09
0

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

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

Nowe pomysły są inną kombinacją starych elementów. Nie ma nowych elementów. Są tylko nowe kombinacje.

Pozostało 580 znaków

2007-03-17 14:49
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


Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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