Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Константы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Не могу разобраться с константами
Евгений 777
Отправлено: 07 Марта, 2011 - 00:17:54
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010  
Откуда: Мурманск


Помог: 0 раз(а)




Здравствуйте все! Изучаю PHP около года, но очень уж трудно он мне даётся, возможно я чего то очень важного не понимаю, поэтому и трудно даётся обучение. Проблема у меня в следующем. Делаю сайт, на который вход должен быть только через индексную страницу. Т.е если какая то страница запущена вручную, то чтобы происходил редирект на главную. Для этого на главной странице я создаю константу. define("A", "1"); На другой странице (она запускается при переходе по ссылке, т.е не инклюдится к главной), пишу if(!defined("A")) {редирект туда то; } Почему то при переходе по ссылке с главной страницы на эту, константа не определяется и происходит редирект. По идее константа не имеет области видимости, значит должна быть видна из любого файла, но почему то не хочет. Помогите пожалуйста разобраться почему так получается и как исправить положение. Заранее спасибо!


-----
Написать код не проблема. Написать правильный код- это наука.
 
 Top
ALEN
Отправлено: 07 Марта, 2011 - 00:49:01
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




не совсем понятно, что происходит, редирект или include
 
 Top
Евгений 777
Отправлено: 07 Марта, 2011 - 00:52:34
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010  
Откуда: Мурманск


Помог: 0 раз(а)




Нет, нет. Никакого инклюда нет. Мне надо просто сделать так, чтобы на сайт можно было зайти через главную страницу, т.е если например страница noindex.php была запущена вручную через адресную строку, то чтобы скрипт выполнил редирект на главную страницу, без всяких инклюдов, чтобы просто произошло перенапрвление. Вот думал попробовать сделать это через константу, да почему то не получается. Я хотел создать её на главной странице, а на всех остальных проверять. Если она есть, значит пользователь перешёл на эту страницу через главную, а если её нет, то чтобы вместо запрошенной страницы загрузилась главная.


-----
Написать код не проблема. Написать правильный код- это наука.
 
 Top
ALEN
Отправлено: 07 Марта, 2011 - 00:54:56
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




htaccess + RewriteRule
 
 Top
Евгений 777
Отправлено: 07 Марта, 2011 - 00:55:57
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010  
Откуда: Мурманск


Помог: 0 раз(а)




Т.е через константу никак нельзя что ли? Огорчение


-----
Написать код не проблема. Написать правильный код- это наука.
 
 Top
OrmaJever Модератор
Отправлено: 07 Марта, 2011 - 01:00:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Евгений 777 пишет:
Для этого на главной странице я создаю константу. define("A", "1"); На другой странице (она запускается при переходе по ссылке, т.е не инклюдится к главной), пишу if(!defined("A")) {редирект туда то; } Почему то при переходе по ссылке с главной страницы на эту, константа не определяется и происходит редирект. По идее константа не имеет области видимости, значит должна быть видна из любого файла, но почему то не хочет.

Нет. Константа как и переменые видна только в том файле в котором определена (и в тех которые подключены)
(Добавление)
А для такого примера нужны сесии
http://php.su/articles/?cat=exam...les&page=070


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Евгений 777
Отправлено: 07 Марта, 2011 - 01:01:23
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010  
Откуда: Мурманск


Помог: 0 раз(а)




Понятно. Я уже так и подумал. Спасибо, что разъяснили. Буду пробовать через сессию.


-----
Написать код не проблема. Написать правильный код- это наука.
 
 Top
grefon
Отправлено: 07 Марта, 2011 - 01:04:50
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Что-то странное Вы хотите сделать Улыбка

Как вариант можно поиграть с сессиями. То есть в index.php в самом начале Вы пишите:

А в noindex.php проверяете:
PHP:
скопировать код в буфер обмена
  1. if ($_SESSION['A'] == 1) { редирект }


В этом случае пользователю, чтобы увидеть страницу noindex.php нужно будет обязательно зайтьи на index.php, иначе редирект.

Еще как Вариант можно проверить через сервер:
PHP:
скопировать код в буфер обмена
  1. if ($_SERVER['HTTP_REFERER'] == "index.php") { редирект }


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
Евгений 777
Отправлено: 07 Марта, 2011 - 01:08:05
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010  
Откуда: Мурманск


Помог: 0 раз(а)




Или я не совсем въехал, или Вы не правильно поняли, либо немного ошиблись Улыбка Редирект будет происходить в том случае, если адресная строка будет index.php, или если будет сессия (судя по Вашим кодам). Мне наоборот надо, чтобы если был вход НЕ через главную, то отправить на неё. Я принцип понял, уже хотел так и сделать. Спасибо!


-----
Написать код не проблема. Написать правильный код- это наука.
 
 Top
OrmaJever Модератор
Отправлено: 07 Марта, 2011 - 01:18:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




grefon написал правельно. Попробуйте этот код на практике тогда поймёте Подмигивание


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Евгений 777
Отправлено: 07 Марта, 2011 - 01:20:26
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010  
Откуда: Мурманск


Помог: 0 раз(а)




Понятно. Извиняюсь если был не прав. А можете объяснить почему так? Ведь по идее получается, "если сессия есть, то делай редирект". Я видно даже этого не могу правильно понять Огорчение
Уже пробовал. Как я и говорил, получается что если сессия есть, то происходит редирект.

(Отредактировано автором: 07 Марта, 2011 - 01:22:43)



-----
Написать код не проблема. Написать правильный код- это наука.
 
 Top
grefon
Отправлено: 07 Марта, 2011 - 01:23:23
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Евгений 777, Вы правильно поняли, то я попутал. Вот так нужно:
PHP:
скопировать код в буфер обмена
  1. if (!$_SESSION['A']) { редирект }


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
Евгений 777
Отправлено: 07 Марта, 2011 - 01:24:12
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010  
Откуда: Мурманск


Помог: 0 раз(а)




Да, да я уже так и сделал. Благодарю ещё раз Подмигивание
(Добавление)
Всё бы хорошо. Да вот только сессии тоже не то. Т.к стоит 1 раз запустить индексную, как потом можно сколько угодно раз заходить прямиком на эту страницу. Это уже не то что мне надо. Пробовал я и HTTP_REFERER, почему то он не присылает адрес страницы с которой пришли, указывает только лишь директорию размещения этой страницы, без её имени.


-----
Написать код не проблема. Написать правильный код- это наука.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB