Skocz do zawartości

Zabezpieczenie stron hasłem


michalk

Rekomendowane odpowiedzi

Witam!

Chciałbym zabezpieczyć swoje pliki nakładając na nie hasło. Szukałem już w internecie na ten temat trochę informacji i zgodnie z tym co znalazłem zmodernizowałem pliki. Wyglądają one teraz tak:

Skrypt logowania - nazwij go np. logowanie.php.

-------------------------------------

CODE

<?php
session_start(); //rozpoczęcie sesji
include "haslo.php";
//skrypt :)
$pass = $_POST[pass];
if ($pass)
{
if ($pass==$haslo)
{
$_SESSION[haslo] = $haslo;
header ("Location: plik.php"); //podajesz adres, na który po zalogowaniu skrypt przekierowuje
}
else
{
echo 'Podałeś niepoprawne hasło. :(';
}
}
else
{
echo '
<form method=post>
Podaj hasło: <INPUT TYPE="PASSWORD" NAME="pass" VALUE="'.$pass.'">
<INPUT TYPE="SUBMIT" VALUE="Zaloguj">
</FORM>
';
}
$action = $_GET[action];
if ($action=="logout")
{
session_destroy();
header("Location: adres.php"); //podajesz adres, na który po wylogowaniu skrypt przekierowuje
}
?>

Plik haslo.php (zawiera hasło dostępu):

-------------------------------------

CODE

<?php
$haslo = "123456"; //hasło dostępu
?>

Przykładowy plik z zabezpieczoną treścią:

CODE

<?php
//pliki
session_start();
include "haslo.php";
if ($_SESSION[haslo])
{
if (!($_SESSION[haslo] == $haslo))
{
header ("Location: logowanie.php");
}
}
else
{
header ("Location: logowanie.php");
}
//odtąd wstawiasz treść strony.
?>

treść stronytreść stronytreść stronytreść stronytreść stronytreść stronytreść stronytreść stronytreść stronytreść strony

Wszystko fajnie. Wchodzę na strone x przekierowuje mnie na strone logowania, loguje sie i wracam do strony x. Kiedy chce przejsc do strony y znowu prosi mnie o podanie hasla i tym samym nie moge sie zalogowac w ogole do podstron.

Proszę o pomoc

Odnośnik do komentarza
Udostępnij na innych stronach

A utrzymujesz sesje na każdej stronie?

session_start();

[edit]

hasła i loginu nie powinno się przetrzymywać w jawnej formie

hasło przetrzymujesz w postaci zahaszowanej i potem przy sprawdzeniu porównujesz dwa hasze.

https://pl.php.net/manual/pl/function.md5.php

.

Odnośnik do komentarza
Udostępnij na innych stronach

Na każdej stronie serwisu musi się znajdować ta funkcja

session_start();

i to w dodatku na samym poczatku kodu ktory jest wysyłany do przegladarki. Jeżeli nie masz możliwości umieszczenia jej na początku, to można wtedy użyć funkcji buforowania wyjścia: ob_start();

.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli

session_start();

jest za to odpowiedzialne to mam to na każdej stronie i wygląda na to, że on mi jej nie przedłuża;/. Wchodze na strone: www.xxx.pl/xx/index.php ->przekierowuje mnie na www.xxx.pl/xx/admin.php -> loguje się i jestem na www.xxx.pl/xx/index.php -> Chce przejsc do kolejnej strony w PA i wchodze na www.xxx.pl/xx/yy/index.php i znowu do poczatku mnie wysyla. Moze to przez zmiane katalogu mam taki problem?

Odnośnik do komentarza
Udostępnij na innych stronach

Sprawdz czy wszedzie masz tak (wszystkie zmienne tablicowe)

$_POST['pass']

$_SESSION['haslo']

Bo w tym przykładzie wszystkie masz tak

$_POST[pass]

$_SESSION[haslo]

I jeżeli session_start(); znajduje się wszedzie na początku kodu np w pliku index.php to usuń zdublowane wpisy tej funkcji w kodzie np w pliku: logowanie

Przed funkcją session_start(); nie może zostać wysłane do przeglądarki żaden tekst ani kod, itp.

Może masz pliki w UTF-8 i występuje problem z tzw. BOM ?

.

Odnośnik do komentarza
Udostępnij na innych stronach

Ludzie bardziej skomplikować się nie da ?, ludzie a gdzie poziomy dostępu użytkownika i inne rzeczy.

kawałek formularza logowania

<?php
$login='xxxxxxxx';
$pass='xxxxxxx';
session_start();
if ($_POST['login']==$login AND $_POST['haslo']==$haslo){
 $_SESSION['login']=true;
 header('location: gdzie_ma_skoczy_po_logine.php');
 exit();
};
?>
Tutuaj formularz logowania

Tutaj zabezpieczony fragment skryptu

<?php
session_start();
if ($_SESSION['login']!=true){
 header('location: formularz do logowania.php');
 exit();
 };

dalsza cześć  
?>

Wylogowywanie

<?php
session_start();
$_SESSION['login']=false;
header('location: formularz do logowania.php');
?>

Aplikacje internetowe, systemy wspomagające SEO, programy pod Windows i Linux, info na https://shad.net.pl - dopisz się do Katalogu Firm

Odnośnik do komentarza
Udostępnij na innych stronach

Zrobilem tak jak piszesz i podpialem do tego formularz ale cos jest nie tak. Od razu przekierowuje do pliku nastepnego(bez potrzeby wpisania niczego). Moze jeszcze napisac do tego odpowiedni formularz bo mysle ze tutaj jest problem teraz

Odnośnik do komentarza
Udostępnij na innych stronach

Wydaje mi się że sesja wogule nie zostaje przekazywana do następnej strony.

Sprawdzałeś sobie czy sesja wogule istnieje. Czy do zmiennej sesyjnej 'haslo' zostało cokolwiek przypisane? Podejrzewam że wklejasz jakeiś kody nie mając pojęcia jak mają działać.

Wklej to na początku pliku index.php i pochodź po stronie. Na drugiej z kolei stronie powinna się wyświetlić godzina przypisana do jednej zmiennej sesyjnej.

session_start();
if(isset($_SESSION))
foreach($_SESSION as $a => $b)
	echo '<br />$_SESSION['.$a.'] = '.$b;
else
echo '<br />brak zmiennych sesyjnych';


if(!isset($_SESSION['test']))
$_SESSION['test']=date('G:i', time());

.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności