Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запрет показа страницы, разрешить только... 
:(
    Опции темы
fleetboss
Дата 17.8.2009, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 30.7.2009

Репутация: нет
Всего: нет



Всем привет. У меня состоит сайт из много разных страниц. Как с помощью php/javascript/mysql поставить защиту от просмотра страницы из вне моего сайта? Тоесть чтобы нельзя было открыть допустим страницу http://mojsajt.ru/anketa.php чтобы можно было допустим зайти только с этой страницы http://mojsajt.ru/index.php

На некоторые я поставил "защиту" ввиде такой 
Код
<?php
if ($check_page!='1') { header ("Location: ../../e/404.php"); }

//или так

if ($check_page!='1') { echo "<script>location='404.php'</script>"; }

?>

Этот код для всех страниц не работает, так как файлы разные header. Есть страницы, которые не грузят какие-либо страницы перед своей. Т.е. хочу сказать что страница отдельная и проверку незнаю как поставить...

может можно как-то с .httaccess файлом?
PM MAIL   Вверх
Avrely
Дата 17.8.2009, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 15.3.2007

Репутация: нет
Всего: 2



Если вас устраивает тот вариант, что попав с http://vashsite.ru/index.php на http://vashsite.ru/page.php то можно использовать функцию $_SERVER['HTTP_REFERRER']

Если требуется чтобы после страницы http://vashsite.ru/page.php пользователь мог дальше серфить по вашему сайту, то стоит использовать сессии.
Пример
В начале файла page.php делаете проверку на сессию. Если сущетсвует - то все хорошо, отображаем контент. Если сессия отстутвует, то редиректом отправляем на index.php, где пользователю создается сессия.
PM MAIL ICQ MSN   Вверх
fleetboss
Дата 17.8.2009, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 30.7.2009

Репутация: нет
Всего: нет



а сессия работает как куки например на 5 минут? или если закрыл браузер то сессия стерается?

просто человек может зайти допустим на сайт, получить кукис/сессию а в новой вкладке вписать например http://mojsajt.ru/levajastranica.php в которой будут отображаться ошибки и прочяя информация о серверер, в какой директории сайт лежит и т.д.  smile 

п.с. счас попробую с функцией $_SERVER['HTTP_REFERRER']


Это сообщение отредактировал(а) fleetboss - 17.8.2009, 21:39
PM MAIL   Вверх
fleetboss
Дата 17.8.2009, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 30.7.2009

Репутация: нет
Всего: нет



Ну вот такой скрипт работает как положено
Код
if ($_SERVER['HTTP_REFERER'] == "") {  echo "<script>location='index.php'</script>"; }

только тут эту систему можно обойти если например создать у себя или в любом другом месте например ссылку на этот раздел сайта, то тогда будет 'HTTP_REFERER' и страница покажется ))

как удобнее и правельнее написать код, который будет разрешать например только с определеных страниц заходить на эту страницу?

Код
if (($_SERVER['HTTP_REFERER'] != "http://sajt.ru/index.php") || ($_SERVER['HTTP_REFERER'] != "http://sajt.ru/main.php") || ($_SERVER['HTTP_REFERER'] != "http://sajt.ru/main.php?get=anketa")) {  echo "<script>location='index.php'</script>"; }


Код
if (($_SERVER['HTTP_REFERER'] != "http://sajt.ru/index.php") or ($_SERVER['HTTP_REFERER'] != "http://sajt.ru/main.php") or ($_SERVER['HTTP_REFERER'] != "http://sajt.ru/main.php?get=anketa")) {  echo "<script>location='index.php'</script>"; }


Код
if ($_SERVER['HTTP_REFERER'] != "http://sajt.ru/*.php") {  echo "<script>location='index.php'</script>"; }


или как правельнее?


Это сообщение отредактировал(а) fleetboss - 17.8.2009, 22:03
PM MAIL   Вверх
Avrely
Дата 17.8.2009, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 15.3.2007

Репутация: нет
Всего: 2



Код

echo "<script>location='index.php'</script>";


Стоит заменить на 
Код

Header("Location: http://sajt.ru/index.php");


Код


if (($_SERVER['HTTP_REFERER'] != "http://sajt.ru/index.php") or ($_SERVER['HTTP_REFERER'] != "http://sajt.ru/main.php") or ($_SERVER['HTTP_REFERER'] != "http://sajt.ru/main.php?get=anketa")) {  Header("Location: http://sajt.ru/index.php"); }

PM MAIL ICQ MSN   Вверх
motorway
Дата 17.8.2009, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: 1
Всего: 0



А переход делается по ссылке? Если да, то можно передавать и код какой-нибудь в данных POST, а потом проверять его.
PM MAIL   Вверх
fleetboss
Дата 17.8.2009, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 30.7.2009

Репутация: нет
Всего: нет



че-то у меня не получается добавить несколько страниц...

or или || не работают


ну переходы делаются через <input onclick="windows.location=anketa.php"....>

Добавлено @ 22:52
Цитата(Avrely @ 17.8.2009,  22:36)
Код

echo "<script>location='index.php'</script>";


Стоит заменить на 
Код

Header("Location: http://sajt.ru/index.php");

А чем вам javascript не нравится? разница?

У меня просто уже есть шапка...
Если поставить header то выдавать ошибку будет

Код
Warning: Cannot modify header information - headers already sent by (output started at G:\AppServ\www\anketa.php:14) in G:\AppServ\www\anketa.php on line 32


Это сообщение отредактировал(а) fleetboss - 17.8.2009, 22:53
PM MAIL   Вверх
Avrely
Дата 17.8.2009, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 15.3.2007

Репутация: нет
Всего: 2



А вы поставьте Header выше шапки

Добавлено через 3 минуты и 28 секунд
Цитата

or или || не работают 


значит стоит вписать 
 
Код

print $_SERVER['HTTP_REFERER'];

и перейте с индексной страницы.  Посмотреть какой результат он дает.
PM MAIL ICQ MSN   Вверх
fleetboss
Дата 17.8.2009, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 30.7.2009

Репутация: нет
Всего: нет



Цитата(Avrely @ 17.8.2009,  23:49)
А вы поставьте Header выше шапки

Добавлено @ 23:52
Цитата

or или || не работают 

ну это понятно...

кр4 вроде всё путём, вот только мне теперь нужен отдельный код, который будет заменять форму анкеты. Например если вписать http://mojsajt.ru/levajastranica.php - чтобы он менял на http://mojsajt.ru  есть у кого такой скрипт? или как такое называется? чтобы я в гугле поискал

а вот сам скрипт, который проверяет страницу с которой был переход
Код
if(!(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) && stristr($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']))){ Header("Location: index.php"); }

если страница была чужая или пустая - делает редирект


Это сообщение отредактировал(а) fleetboss - 18.8.2009, 00:00
PM MAIL   Вверх
Avrely
Дата 18.8.2009, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 15.3.2007

Репутация: нет
Всего: 2



levajastranica.php   - это имеется ввиду несуществующая страница?
PM MAIL ICQ MSN   Вверх
fleetboss
Дата 18.8.2009, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 30.7.2009

Репутация: нет
Всего: нет



levajastranica.php - это страница, на которую нельзя заходить, на неё нужно чтобы заходили как положено через index.php

вот пример страница index.php

Код

<html>
.....
<table bla bla bla>
<?php include ("anketa"); ?>
<?php include ("levajastranica.php"); ?>
</html>


если открыть страницу levajastranica.php отдельно - там будет бордак и много чего лишнего будет показано (сайт большой (необходимы отдельные файлы, так как много где они нужны кусками а не большим кодом))

Это сообщение отредактировал(а) fleetboss - 18.8.2009, 00:34
PM MAIL   Вверх
Avrely
Дата 18.8.2009, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 15.3.2007

Репутация: нет
Всего: 2




index.php
Код

<?php

setcookie("sess", 1, time() + 1800);

//тут страница index.php

?>





OtherPage.php
Код

<?php

if($_COOKIE[sess] != 1)
{
Header(Location: http://VashSite.ru/index.php);
}


//тут страница 
?>




после закрытия браузера куки удаляются
time() + 60 означает, что куки действительны ещё 1800 секунд = 30 мин после первого захода на index.php
PM MAIL ICQ MSN   Вверх
fleetboss
Дата 18.8.2009, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 30.7.2009

Репутация: нет
Всего: нет



Да тоже вариант, спасибо smile
Но обойти систему тоже можно легко. Зашел на сайт, получил куки и лазь по остальным файлам, ищи дырки.
Поставить допустим на 3-5 минут - обычным пользователям будет не удобно постояно перезаходить.

Вот с $_SERVER['HTTP_REFERER'] мне больше понравилась работа. Только надо доработать код

Это сообщение отредактировал(а) fleetboss - 18.8.2009, 01:54
PM MAIL   Вверх
MoLeX
Дата 18.8.2009, 05:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Оо

Добавлено через 32 секунды
по всей видимости проблемы с проектированием


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 18.8.2009, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Я все не пойму, о каких дырках и бардаке речь.
Похоже, мы опять решаем несуществующую проблему.
Либо следуем на поводу чьей-то фантазии.

Можно конкретно услышать, что такого ужасного увидит человек, если зайдет на "леваястраница" не с индекса?
И еще один вопрос. Требуется ли индексация сайта поисковиками и адекватное положение сайта их поиске?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0594 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.