Grimor
5.04.2009, 16:43:19
Witam, otóż napisałem skrypt logowania który przekierowuje osobę pod adres admin.php, tam znajdują się linki np admin.php?dzial=nazwadzialu, taki najprostszy sytem includowania plików. Jeśli zaś osoba nie jest zalogowana sprawdzanie czy istenieje sesja i przekierowuje go do pliku z logowaniem. Niestety działa to tylko przy wpisaniu linku w postaci admin.php?dzial=nazwadzialu. Gdy wejdę bezpośrednio w plik nazwadzialu.php plik sie normalnie otwiera i moge wykonać skrypt w nim zawarty. I tutaj rodzi się moje pytanie, czy istenieje sposób, który zabrania wykonywania skryptów poprzez bezpośrednie jego wywowalnie ? Wiem ze mogę tutaj w każdym pliku dodac sprawdzanie czy istenie sesja, chciałbym sie dowiedzieć czy istenie szybszy i bardzeij efektywny sposób.
Z góry dzięki za wszelką pomoc. Pozdrawiam.
Merko
5.04.2009, 16:53:05
W pliku nazwadzialu.php wpisz warunek logowania tzn if czy sesja istnieje np
Kod
if($_SESSION['login'] != ''){
//Treść pliku
}
else{
echo "<meta http-equiv=refresh content='0; url=index.php'>"; //przekierowanie
}
Lonas
5.04.2009, 16:53:20
Tworzysz sobie plik ktory sprawdza czy odpowiednie dane sa w sesji i jego includujesz w kazdym pliku gdzie ma byc wykonane sprawdzenie
TomASS
5.04.2009, 16:55:49
Lepiej zamiast tego:
<?php
echo "<meta http-equiv=refresh content='0; url=index.php'>"; //przekierowanie ?>
dać
<?php
header("Location: index.php"); ?>
Cytat
Wiem ze mogę tutaj w każdym pliku dodac sprawdzanie czy istenie sesja, chciałbym sie dowiedzieć czy istenie szybszy i bardzeij efektywny sposób.
A co jest w tym złego i małoefektywnego? Jeden if....
Merko
5.04.2009, 16:57:36
Albo jak koledzy mówią
Plik sprawdz.php:
Kod
if($_SESSION['login'] == ''){
header("Location: index.php"); //przekierowanie
exit();
}
plik nazwadzialu.php:
Kod
include "sprawdz.php";
ble ble ble tresc pliku
W tym przypadku zostanie urwany skrypt tam gdzie exit(); i przeładuje
Grimor
5.04.2009, 16:58:47
Ok, przyzam się ze to z lenistwa zapytałem

Nie chciało mi się dodawać do każdego pliku tego fragmentu.
Mój kod wygląda następująco.
Kod
if (!isset($_SESSION['logged'])) {
header("location: index.php");
}
Dzięki za wysztko.
Lonas
5.04.2009, 17:00:55
Ale lepiej stworz sobie osobny plik i jego includuj bo potem w razie jakiejkolwiek zmiany robisz to w jednym pliku a nie w kazdym w ktorym jest sprawdzenie