Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
Здравствуйте все! Изучаю PHP около года, но очень уж трудно он мне даётся, возможно я чего то очень важного не понимаю, поэтому и трудно даётся обучение. Проблема у меня в следующем. Делаю сайт, на который вход должен быть только через индексную страницу. Т.е если какая то страница запущена вручную, то чтобы происходил редирект на главную. Для этого на главной странице я создаю константу. define("A", "1"); На другой странице (она запускается при переходе по ссылке, т.е не инклюдится к главной), пишу if(!defined("A")) {редирект туда то; } Почему то при переходе по ссылке с главной страницы на эту, константа не определяется и происходит редирект. По идее константа не имеет области видимости, значит должна быть видна из любого файла, но почему то не хочет. Помогите пожалуйста разобраться почему так получается и как исправить положение. Заранее спасибо!
----- Написать код не проблема. Написать правильный код- это наука.
ALEN
Отправлено: 07 Марта, 2011 - 00:49:01
Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
не совсем понятно, что происходит, редирект или include
Евгений 777
Отправлено: 07 Марта, 2011 - 00:52:34
Гость
Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
Нет, нет. Никакого инклюда нет. Мне надо просто сделать так, чтобы на сайт можно было зайти через главную страницу, т.е если например страница noindex.php была запущена вручную через адресную строку, то чтобы скрипт выполнил редирект на главную страницу, без всяких инклюдов, чтобы просто произошло перенапрвление. Вот думал попробовать сделать это через константу, да почему то не получается. Я хотел создать её на главной странице, а на всех остальных проверять. Если она есть, значит пользователь перешёл на эту страницу через главную, а если её нет, то чтобы вместо запрошенной страницы загрузилась главная.
----- Написать код не проблема. Написать правильный код- это наука.
ALEN
Отправлено: 07 Марта, 2011 - 00:54:56
Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
htaccess + RewriteRule
Евгений 777
Отправлено: 07 Марта, 2011 - 00:55:57
Гость
Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
Т.е через константу никак нельзя что ли?
----- Написать код не проблема. Написать правильный код- это наука.
OrmaJever
Отправлено: 07 Марта, 2011 - 01:00:16
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
Евгений 777 пишет:
Для этого на главной странице я создаю константу. define("A", "1"); На другой странице (она запускается при переходе по ссылке, т.е не инклюдится к главной), пишу if(!defined("A")) {редирект туда то; } Почему то при переходе по ссылке с главной страницы на эту, константа не определяется и происходит редирект. По идее константа не имеет области видимости, значит должна быть видна из любого файла, но почему то не хочет.
Нет. Константа как и переменые видна только в том файле в котором определена (и в тех которые подключены) (Добавление)
А для такого примера нужны сесии http://php.su/articles/?cat=exam...les&page=070
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Евгений 777
Отправлено: 07 Марта, 2011 - 01:01:23
Гость
Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
Понятно. Я уже так и подумал. Спасибо, что разъяснили. Буду пробовать через сессию.
----- Написать код не проблема. Написать правильный код- это наука.
grefon
Отправлено: 07 Марта, 2011 - 01:04:50
Частый посетитель
Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010
Помог: 32 раз(а)
Что-то странное Вы хотите сделать
Как вариант можно поиграть с сессиями. То есть в index.php в самом начале Вы пишите:
----- ____________________________________________________________________
Ну как то так, наверное. http://grefon[dot]com
Евгений 777
Отправлено: 07 Марта, 2011 - 01:08:05
Гость
Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
Или я не совсем въехал, или Вы не правильно поняли, либо немного ошиблись Редирект будет происходить в том случае, если адресная строка будет index.php, или если будет сессия (судя по Вашим кодам). Мне наоборот надо, чтобы если был вход НЕ через главную, то отправить на неё. Я принцип понял, уже хотел так и сделать. Спасибо!
----- Написать код не проблема. Написать правильный код- это наука.
OrmaJever
Отправлено: 07 Марта, 2011 - 01:18:31
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
grefon написал правельно. Попробуйте этот код на практике тогда поймёте
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Евгений 777
Отправлено: 07 Марта, 2011 - 01:20:26
Гость
Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
Понятно. Извиняюсь если был не прав. А можете объяснить почему так? Ведь по идее получается, "если сессия есть, то делай редирект". Я видно даже этого не могу правильно понять
Уже пробовал. Как я и говорил, получается что если сессия есть, то происходит редирект.
----- ____________________________________________________________________
Ну как то так, наверное. http://grefon[dot]com
Евгений 777
Отправлено: 07 Марта, 2011 - 01:24:12
Гость
Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
Да, да я уже так и сделал. Благодарю ещё раз (Добавление)
Всё бы хорошо. Да вот только сессии тоже не то. Т.к стоит 1 раз запустить индексную, как потом можно сколько угодно раз заходить прямиком на эту страницу. Это уже не то что мне надо. Пробовал я и HTTP_REFERER, почему то он не присылает адрес страницы с которой пришли, указывает только лишь директорию размещения этой страницы, без её имени.
----- Написать код не проблема. Написать правильный код- это наука.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.