PHP ?!?

5 отговора 406 прегледа
#1

PHP ?!?

Здравейте, прегледах темата за "Предаване на данни чрез POST или GET използвайки единствено PHP код".

Писах вече за един мой проблем, все още нерешен, получих идеи, но на практика не успях да ги реализирам.

За да ви стане ясно какво точно искам, ще опиша по подробно това което правя.

Имам множество директории с файлове в тях.
В основната директория имам индексен файл, който е началната форма на страницата която правя.
ИСКАМ, ДА ЗАЩИТЯ ОСТАНАЛИ ФАЙЛОВЕ, ДА НЕ МОГАТ ДА БЪДАТ ЗАРЕЖДАНИ БЕЗ ПОТРЕБИТЕЛЯТ ДА Е МИНАЛ ПРЕЗ ИНДЕКСНИЯ ФАЙЛ КОЙТО Е В ОСНОВАТА.
Намерих няколко решения, но ми се струват непрофесионални.

Дадоха ми съвет да ползвам "header:location...." в началото на всеки един файл, който да ме препраща автоматично към индексния, ако дадено условие на отговаря на истината.
Така и не успях да го направя, дава ми грешки като ползвам "header".

Дайте ми съвет моля, как е най-удобно да направя това което искам
Смятате ли, че да пиша код в началото на всеки един файл, за да правя проверки е добър начин ?, защото аз за друг не се сещам.

Благодаря Ви.

Отговор
в отговор на Mimi #2

Re: PHP ?!?

В началото на индексния файл регистрираш сесийна променлива:

session_start();
$_SESSION['logged'] = true;

Пишеш следното нещо във файл и го кръщаваш примерно: login.inc.php

<?

session_start();
if (!$_SESSION['logged']) {
header("Location: index.php");
exit;
}
?>


В началото на всеки файл, който искаш да бъде защитен, пишеш следното:

require "login.inc.php";

Но да бъде в самото начало...да няма никакъв код преди това!

"If a man hasn't discovered something that he will die for, he isn't fit to live."
Отговор
в отговор на Dakota #3

Re: Но да бъде в самото начало...да няма никакъв к

> Но да бъде в самото начало...да няма никакъв код преди това!

zashto da niama kod predi tova??
tova e drug variant, dosta chesto polzvan v praktikata:

[login.php]

<?

// ...

session_start();

$username = $_POST["userid"];
$password = md5(md5($_POST["secret"]));

session_register('username');
session_register('password');

// ...

?>

[user.php]

<?

// ...

session_start();

$UserID = $_SESSION['username'];
$Password = $_SESSION['password'];

if ("$UserID" == "" || "$Password" == "") {

session_unset();
header("location: index.php");die();

} else {

// ...

?>

Отговор
в отговор на Mimi #4

Re: PHP ?!?

header() ти дава грешки, защото бровсера не може да приеме хеадери след като вече е почнал оутпута. Ако редирецтването те устроива, ето какво използвам аз:

function redirect($where)
{
echo "<script language=javascript type=text/javascript>
self.location.href='".$where."';
</script>";
}

и я извикваш като
redircect('index.php');

--
1000 кредита за всеки участник подарък
Отговор
в отговор на orange #5

дааа

Не видях изобщо човекът да иска username и password...така че това, което си написал е излишно. А и по този начин във всеки файл трябва да пише един и същи код...ако има 200 файла какво става?!

Трябва да бъде в началото, за да сработи header()-а.

"If a man hasn't discovered something that he will die for, he isn't fit to live."
Отговор
в отговор на Dakota #6

а ако не искаш да редиректваш...

<?
session_start();
if (!$_SESSION['logged']) {
// е тука може да предизвикаш грешка 404
// така юзера ще остане с впечатление
// че такъв файл няма....
// или
// може да си отпечаташ вежливо съобщение, че някой е сбъркал
// и трябва да ходи едикъде си
exit;
}
?>

[линк]
Отговор