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
Форумы портала PHP.SU :: Версия для печати :: Переадресация и прочие вопросы с заголовком 404/410
Форумы портала PHP.SU » » Вопросы новичков » Переадресация и прочие вопросы с заголовком 404/410

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

1. winddancer - 05 Мая, 2016 - 14:55:41 - перейти к сообщению
День добрый. Назрел вопрос, который не могу решить сам. Думаю многим людям тоже будет интересно узнать ответ, особенно, если они делают собственный велосипед.

У меня имеется 3 таблицы из которых подгружается контент или url.
1. Страницы
2. Новости
3. Категории (от туда ссылки подгружаются).

Пытаюсь сделать проверку наличия $_GET['page'] = 'url' в этих таблицах.
В чем загвоздка.
Требуется как-то мне перебрать наличие хоть в одной, чтобы выдавался контент и отсутствие упоминания, чтобы переадресовывало на страницу 404. Как только я не переставлял if-else...не получается.

И по поводу 410. Сейчас используются данные заголовки или все рулят на 404?

Заранее благодарю за ответ. +100 к карме
2. kotyara1979 - 06 Мая, 2016 - 07:38:45 - перейти к сообщению
Приведите код, который обрабатывает эту задачу в нынешнем виде.
3. winddancer - 06 Мая, 2016 - 21:50:57 - перейти к сообщению
kotyara1979 пишет:
Приведите код, который обрабатывает эту задачу в нынешнем виде.


PHP:
скопировать код в буфер обмена
  1. if(($content_category_url != $display) && ($content_site_url != $display)) {
  2.                 header("Location: http://localhost/qwe/404");
  3.         }


Конечно могу скинуть и другие варианты моих попыток, но все они смешны)
4. kotyara1979 - 06 Мая, 2016 - 23:31:32 - перейти к сообщению
Этот фрагмент ни о чем не говорит. Как формируются переменные и что они из себя представляют?
5. winddancer - 06 Мая, 2016 - 23:42:44 - перейти к сообщению
kotyara1979 пишет:
Этот фрагмент ни о чем не говорит. Как формируются переменные и что они из себя представляют?


PHP:
скопировать код в буфер обмена
  1.  
  2. $display = $_GET['page'];
  3.  
  4. $connect_site = mysql_query ("SELECT * FROM `$menu_site` WHERE `url` = '$display'");
  5. $connect_cat = mysql_query ("SELECT * FROM `$category` WHERE `url` = '$display'");
  6. $content_site_array = mysql_fetch_array($connect_site);
  7. $content_category_array = mysql_fetch_array($connect_cat);
  8. $content_site_url                       = $content_site_array['url'];
  9. $content_category_url           = $content_category_array['url'];


Извлекаем на сайте переменную GET['page'], сравниваем ее с наличием в бд и если она не равна - врубаем переадресацию на 404.

Вроде все, или что-то еще?
6. Viper - 07 Мая, 2016 - 03:28:37 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. echo '<pre>';
  2. var_dump($content_category_url) . "\n";
  3. var_dump($content_site_url) . "\n";
  4. var_dump($display);
  5. echo '</pre>';

что показывает?
7. winddancer - 07 Мая, 2016 - 10:07:07 - перейти к сообщению
Viper пишет:
PHP:
скопировать код в буфер обмена
  1. echo '<pre>';
  2. var_dump($content_category_url) . "\n";
  3. var_dump($content_site_url) . "\n";
  4. var_dump($display);
  5. echo '</pre>';

что показывает?


Не принимаем в счет главную страницу.
Все страницы кроме страниц с новостями (не ту версию дал скрипта) дает переменную, и только в новостях отвечает нулем (Null)

Ниже + 2 строчки кода. Прошу простить за невнимательность.

PHP:
скопировать код в буфер обмена
  1.  
  2. $display = $_GET['page'];
  3.  
  4. $connect_site = mysql_query ("SELECT * FROM `$menu_site` WHERE `url` = '$display'");
  5. $connect_cat = mysql_query ("SELECT * FROM `$category` WHERE `url` = '$display'");
  6. $connect_news = mysql_query ("SELECT * FROM `$news_blog` WHERE `url` = '$display'");
  7. $content_site_array = mysql_fetch_array($connect_site);
  8. $content_category_array = mysql_fetch_array($connect_cat);
  9. $content_news_array = mysql_fetch_array($connect_news);
  10. $content_site_url                       = $content_site_array['url'];
  11. $content_category_url           = $content_category_array['url'];
  12. $content_news_url                       = $content_news_array['url'];
8. Viper - 07 Мая, 2016 - 10:44:26 - перейти к сообщению
winddancer пишет:
Не принимаем в счет главную страницу.
я просил результат, а не очередную порцию кода.

PHP:
скопировать код в буфер обмена
  1. if(($content_category_url != $display) && ($content_site_url != $display))
каким образом у вас одновременно могут быть одинаковые url для категории и для контента? Можете объяснить чудеса?
9. winddancer - 07 Мая, 2016 - 12:10:52 - перейти к сообщению
Viper пишет:
winddancer пишет:
Не принимаем в счет главную страницу.
я просил результат, а не очередную порцию кода.

PHP:
скопировать код в буфер обмена
  1. if(($content_category_url != $display) && ($content_site_url != $display))
каким образом у вас одновременно могут быть одинаковые url для категории и для контента? Можете объяснить чудеса?


Понимаю, что никаким чудом, поэтому сюда обратился. Не могу построить логику для 3-х переменных.

Результаты в строках:
1. String
2. Null
3. String

А в итоге должно быть if "нету ни в одной переменной" тогда header.....
10. Viper - 07 Мая, 2016 - 15:38:14 - перейти к сообщению
В общем так.
1. Отдавайте 404
2. if ($content_category_url != $display || $content_site_url != $display)
3. Для $display задайте значение по умолчанию + необходимые проверки.

PS! В следующий раз когда вас просят var_dump(var_export) или echo, приводите полностью вывод результата. Вот как есть, а то вы опять привели не то что нужно.
11. winddancer - 08 Мая, 2016 - 08:49:14 - перейти к сообщению
Viper пишет:
В общем так.
1. Отдавайте 404
2. if ($content_category_url != $display || $content_site_url != $display)
3. Для $display задайте значение по умолчанию + необходимые проверки.

PS! В следующий раз когда вас просят var_dump(var_export) или echo, приводите полностью вывод результата. Вот как есть, а то вы опять привели не то что нужно.


Благодарю. Буду делать. Закатив глазки
12. winddancer - 08 Мая, 2016 - 14:49:50 - перейти к сообщению
Viper пишет:
В общем так.
1. Отдавайте 404
2. if ($content_category_url != $display || $content_site_url != $display)
3. Для $display задайте значение по умолчанию + необходимые проверки.

PS! В следующий раз когда вас просят var_dump(var_export) или echo, приводите полностью вывод результата. Вот как есть, а то вы опять привели не то что нужно.


В итоге благодаря Вам получилось следующее.
PHP:
скопировать код в буфер обмена
  1. if(isset ($display)){
  2.         if($content_category_url != $display || $content_site_url != $display || $content_news_url != $display){
  3.                 if($content_category_url == $display && $content_site_url == $display){
  4.                         //header("HTTP/1.0 404 Not Found");
  5.                         include "page/404.php";
  6.                         echo '200';
  7.                 }
  8.                 else if($content_category_url == $display && $content_news_url == $display){
  9.                         //header("HTTP/1.0 404 Not Found");
  10.                         echo '200';
  11.                 }
  12.                 else{
  13.                         echo '404';
  14.                 }
  15.         }
  16. }


Спасибо большое.
Хотя теперь назрел вопрос. А как же тогда 410 втыкать? Выгрузку из бд делать с отдельным значением, мол было перенесено?
13. Viper - 08 Мая, 2016 - 15:05:12 - перейти к сообщению
забудьте про 410
404 или 302 для поисковиков.
14. winddancer - 08 Мая, 2016 - 15:20:16 - перейти к сообщению
Viper пишет:
забудьте про 410
404 или 302 для поисковиков.


Благодарю еще раз.
Отдельное благодарю за var_dump, как-то протупил. Теперь буду пользоваться всегда, когда будет дело с переменными)

 

Powered by ExBB FM 1.0 RC1