Jump to content
  • 0

Неправильный ввод в адресной строке браузера


people2010
 Share

Question

У меня есть пункт меню который ссылается на страницу http://sitik.ru/videolessons/1.php?page=1

Скажите как сделать,чтоб если пользователь неправильно ввёл ссылку в браузере его пренаправило на страницу http://sitik.ru/videolessons/1.php?page=1

У меня в коде есть такая проверка.

if(empty($page)){
die('<p style="color:red; font-size:24px;">Ошибка! Неверный URL адресс!</p>');
}

но это выводит текст ошибки, а мне нужно чтоб не выводило текст ошибки, а чтоб переадресовывало на страницу именно:

http://sitik.ru/videolessons/1.php?page=1

если не правильно набрана ссылка в браузере.

Пробую так:

<?php
$page = $_GET['page'];
if(empty($page)){
$URL='../videolessons/1.php?page'>
header("Location:$URL");
exit();
}

Выдаёт ошибку что не определённая переменная.Как правильно написать?

Notice: Undefined variable: URL in z:\home\sitik.ru\www\blocks\kontent.php on line 14

[Денвер: показать возможную причину ошибки]

Warning: Cannot modify header information - headers already sent by (output started at z:\home\sitik.ru\www\videolessons\1.php:16) in z:\home\sitik.ru\www\blocks\kontent.php on line 14

Link to comment
Share on other sites

20 answers to this question

Recommended Posts

  • 0

У меня есть меню, с первого пункта меню я ссылаюсь на страницу: http://sitik.ru/videolessons/1.php?page=1

Всё нормально, только вот сделать переадрессацию ,если ввёл например:

http://sitik.ru/videolessons/1.php?page=

или

http://sitik.ru/videolessons/1.php?page

или

http://sitik.ru/videolessons/1.php?pag

Как так сделать?

Вот код страницы, на которую идёт ссылка,этот файл потом подключается,в индекс.пхп,это файл контента.

<div id="center">
<?php
include '../blocks/database.php'; /*Соединяемся с Базой Данных*/
?>

<div class="zagolovok">Видеокурсы по заработку в Интернет </div> <br />

<?php
//Число постов выводящих на странице
$num = 3;
$page = $_GET['page'];
if(empty($page)){
$URL='../videolessons/1.php?page'>
header("Location:$URL");
exit();
//die('<p style="color:red; font-size:24px;">Ошибка! Неверный URL адресс!</p>');
}

$result = mysql_query("select COUNT(*) FROM lessons",$connect);
$posts = mysql_result($result,0);
//Находим общее количество страниц
$chislo_str = intval(($posts-1)/$num)+1;
$page = intval($page);
//empty($page) Если переменной не существует или ее значение равно нулю
if(empty($page) or $page<0) $page = 1;
if($page > $chislo_str) $page = $chislo_str;
// Если ввести $page=7 тогда 7*3-3=18
//с 18 поста будет выводится пост 18,19,20 на странице №7
$start = $page * $num - $num;
$result = mysql_query("SELECT * FROM lessons LIMIT $start, $num",$connect);
// В цикле переносим результаты запроса в массив $postrow
while ( $postrow[] = mysql_fetch_array($result));


//Вывод постов
for($i = 0; $i < $num; $i++)
{
if(isset($postrow[$i]['id'])) echo $postrow[$i]['id'].' '.$postrow[$i]['text'].'<br/>';
}


//————————————————
// Стрелка назад
if($page>1)
$nazad= '<a class="knopka_nazad1" href= ./1.php?page='.($page-1).'>Назад</a>';
else $nazad= '<span class="knopka_nazad2">Назад</span>';

//Стрелка вперед
if($page<$chislo_str)
$vpered = '<a class="knopka_vpered1" href= ../videolessons/1.php?page='.($page + 1).'>Вперёд</a>';
else $vpered= '<span class="knopka_vpered2">Вперёд</span>';

// Вывод меню
$expand_to = 4; // сколько страниц должно показываться слева и справа от текущей

// начало и конец "соседних" страниц
$a = $page - $expand_to; if ($a < 1) $a = 1;
$b = $page + $expand_to; if ($b > $chislo_str) $b = $chislo_str;

if ($a > 1) // надо ли показывать отдельно ссылку на первую и "..."
{
$navigation[] = "<a href=\"./1.php?page=1\">1</a>";
if ($a > 2) $navigation[] = "...";
}

// генерируем ссылки на "соседние" страницы
for ($i = $a; $i <= $b; $i++)
$navigation[] = ($page == $i) ? '<span class="tek_str">'.$i.'</span>' : "<a class='str_nav' href=\"./1.php?page=$i\">$i</a>";

if ($b < $chislo_str) // надо ли показывать отдельно "..." и ссылку на последнюю
{
if ($b < $chislo_str - 1) $navigation[] = '...';
$navigation[] = "<a href=\"./1.php?page=$chislo_str\">$chislo_str</a>";
}

// выводим готовую навигацию
echo $nazad.' '.implode(' ', $navigation).' '.$vpered;
?>

<!—————————————————————————->
</div> <!-- Закрываем контент-->

Edited by people2010
Link to comment
Share on other sites

  • 0

Вот так вроде сработало.

@$page = $_GET['page'];
if(empty($page)){
$page = 1;

Ещё вопрос, как написать, просто когда пользователь вводит в адресной строке:

http://sitik.ru/papka/

он попадает каталог файлов, как сделать чтоб не попадал, не могу понять как написать,чтоб перебросило его на /videolessons/1.php?page=1'>

Link to comment
Share on other sites

  • 0

Как сделать пере направление с каталога на страницу, чтоб пользователь не попадал на каталог мой,не получается.

Я имею ввиду чтоб не попадал на http://sitik.ru/videolessons

а попадал на http://sitik.ru/videolessons/1.php?page=1

Link to comment
Share on other sites

  • 0
Как сделать пере направление с каталога на страницу, чтоб пользователь не попадал на каталог мой,не получается.

Я имею ввиду чтоб не попадал на http://sitik.ru/videolessons

а попадал на http://sitik.ru/videolessons/1.php?page=1

Ищи в Гугле по ключевым словам "mod_rewrite перенаправление".

Link to comment
Share on other sites

  • 0

people2010 а это смотря какие цели вы преследуете и что будет на странице: http://sitik.ru/videolessons/1.php?page=1

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

а вы его сразу переадресуете не туда куда ему надо было...

в конкретно вашем случае это будет выглядеть примерно так:

RewriteEngine on
RewriteBase /

### Запрет доступа ко всем файлам .php в папке videolessons ###
RewriteRule ^videolessons/([A-Za-z]+).php$ error.php

Link to comment
Share on other sites

  • 0

Так делать нельзя ни в коем случае. Я счиатаю, что один адрес==одна страница или ошибка 404. Не надо делать никаких редиректов — это крайне нехорошо. Хотите запретить доступ к папке — делайте запрет через .htaccess, а еще лучше, сразу в конфиге сервера, но никак не через редиректы.

Link to comment
Share on other sites

  • 0

Ну вот смотрите, приходит вам ссылка, вы её копируете и вставляете в адресную строку. Бывает, что «недоскопировали» или «зацепили» лишний символ. Такой страницы не существует, следовательно, надо увидеть страницу 404. Если я вижу 404, то я, в первую очередь, проверю правильно ли я ввёл ссылку. Ну или скажу приславшему, что ссылка битая. А вот в случае, если мне приходит ссылка «посмотри, там козырная видяха», а я там вижку какую-то другую страницу без всякой видяхи или, что еще хуже, с некозырной видяхой, то я сразу же начинаю негодовать. Отсюда следует вывод: если страницы нет (что равносильно тому, что адрес неправильный), то 404, без исключений.

Link to comment
Share on other sites

  • 0

Рус, это я не тебе ответил, а топикстартеру, прости за недопонимание :). А так да, ты прав, можно и так делать. Я делаю что-то вроде

if(!$get=$page->get($id)) $main->throw404();

Функция throw404 отправляет заголовок «404 Not Found», показывает шаблон страницы-ошибки и делает полный die(). Как-то так.

Link to comment
Share on other sites

  • 0

Создал файл,навзал его .htacess в тотале комнадере и написал внутри него.

ErrorDocument 404 /videolessons/1.php?page=1

Ввожу в браузере:

http://sitik.ru/вавава

Никакой переадресации не вижу, от файла .htacces на страницу http://sitik.ru/videolessons/1.php?page=1

Файл мой с названием .htacces находится в каталоге www.

Link to comment
Share on other sites

  • 0
Создал файл,навзал его .htacess в тотале комнадере и написал внутри него.

ErrorDocument 404 /videolessons/1.php?page=1

Ввожу в браузере:

http://sitik.ru/вавава

Никакой переадресации не вижу, от файла .htacces на страницу http://sitik.ru/videolessons/1.php?page=1

Файл мой с названием .htacces находится в каталоге www.

ошибочный урл должен ссылаться на конкретный файл с данной ошибкой назовите его например 404.php и дайте на него ссылку:

ErrorDocument 404 http://sitik.ru/404.php

а в самом файле сделайте так:

<? 
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='1; URL=http://".$_SERVER['HTTP_HOST']."/videolessons/1.php?page=1'></HEAD></HTML>";
?>
<html>
<head>
<title>.404</title>
<style type="text/css"><!--
.style1 {font-size: 100px;font-weight: bold;}
--></style>
</head>
<body>
<center><span class="style1"><font color="#009900">.404</font></span></center>
</body>
</html>

Edited by rus
Link to comment
Share on other sites

  • 0
А зачем было всё в echo совать? Достаточно сделать <?=$_SERVER['HTTP_HOST']?>

И второе: зачем два <html></html> в документе?

насчет двух html согласен, очепятался :)

а на счет <META HTTP-EQUIV='Refresh' CONTENT='1; URL=http://".$_SERVER['HTTP_HOST']."/videolessons/1.php?page=1'> это ж должно быть в хедере, а как его без эхо выводить?

Edited by rus
Link to comment
Share on other sites

  • 0

Спасибо,сработало вроде.

Что даёт это, и из-за чего получается сразу перенаправление на мою страницу из-за строки .$_SERVER['HTTP_HOST'] или

из-за файл хтацес?

Edited by people2010
Link to comment
Share on other sites

  • 0

файл htaccess обрабатывает ошибку 404 not found, то есть нет страницы и перенаправляет на файл с данной ошибкой (просто красиво оформленной), а уже с этой страницы идет перенаправление 'Refresh' CONTENT='1; (где 1 это кол-во секунд после которых произойдет перенаправление) на вашу страницу.

P.S. скажите, а зачем с любой ошибочной страницы перенаправлять именно в данный раздел? Он у вас как главная страница идет?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy