X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Проблема с разбиением на страницы
forest69
forest69
Topic Starter сообщение 16.1.2011, 19:12; Ответить: forest69
Сообщение #1


Всем добрый вечер
Тут вот возникла проблемка.
Есть постраничная навигация и есть такая структура:
1. Есть главная страничка в которую по нажатию пунктов меню инклудом вставляю нужные мне файлы.
2. Через условие, что если GET пустой, то инклужу файл news.php
3. А в файле news.php пытаюсь сделать постраничную навигацию новостей, но ничего не выходит. Например при нажатии на 2 страничку, он мне грузит файл 2.php

Я так понимаю, что в скрипте навигации, нужно как-то по хитрому прописать ссылки на странички, но вот как не соображу =/

Вот структура файла index.php:
[PHP]
<?php
include('php/variables.php');
include('php/base_menu.php'); //Файл меню
if($site_page=='SNTO'){header('Location: SNTO/');
exit;}
elseif($site_page=='students'){header('Location: students/');
exit;}
elseif($site_page=='main_directions'){header('Location: Sciense/');
exit;}
elseif($site_page=='library'){header('Location: library/');
exit;}
elseif($site_page=='tool'){header('Location: gallery/tool.php');
exit;}
elseif($site_page=='other'){header('Location: gallery/other.php');
exit;}
if($site_page=='') {
$site_page='news'; // определим если $_GET[page] пустая то выведем news
//Вывод навигации и строки в <title>
$title='Кафедра МТ2'; //Строка для <title>
$nav='Вы находитесь на официальном сайте кафедры "Инструментальная техника и технологии"';
}
else if($site_page=='search'){
$title='Кафедра МТ2'; //Строка для <title>
$nav='Вы находитесь на официальном сайте кафедры "Инструментальная техника и технологии"';
}
else{
foreach($pages as $main => $submenu){
foreach($submenu as $key => $value){
if($site_page==$key){
$nav='<a href="./index.php" target="_self">Главная</a> / '.$main.' / '.$value;
$title='Кафедра МТ2 - '.$value;
}
}
}
}
//Конец
include('header.inc');
include('nav.php');
include($site_page.'.php');

include('menu.php');
include('footer.inc');
?>
[/PHP]

Файл news.php
[PHP]
<!-- News -->
<?php
include('php/config.php');
//Постраничный вывод
// Переменная хранит число сообщений выводимых на станице
$num = 1;
// Извлекаем из URL текущую страницу
$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result = mysql_query("SELECT COUNT(*) FROM news");
$posts = mysql_result($result,0);
// Находим общее число страниц
$total = intval(($posts - 1) / $num) + 1;
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная к какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("SELECT head, main_text, date FROM news ORDER BY news_id DESC LIMIT $start, $num");
?>

<div id="news">
<p align="right"><a href="old_news.html" style="text-decoration:underline; color:#00F" target="_new">Архив новостей</a></p>
<br />
<?php

// В цикле переносим результаты запроса в массив $postrow
while(list($head, $main_text, $date) = mysql_fetch_row($result))
{
$news = "<div>\n
<h4>".$head."</h4>\n
".$main_text."\n
<p class='date'>Дата публикации: ".$date."</p>\n
</div>";
echo ($news);
}
// Конец вывода
?>
<div id="paging">
<div id="pages" align="center">
<?php
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href= index.php?page=1>Первая</a>
<a href= index.php?page='. ($page - 1) .'><</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' <a href= index.php?page='. ($page + 1) .'>></a>
<a href= index.php?page=' .$total. '>Последняя</a>';

// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0) $page2left = ' <a href= index.php?page='. ($page - 2) .'>'. ($page - 2) .'</a> ';
if($page - 1 > 0) $page1left = '<a href= index.php?page='. ($page - 1) .'>'. ($page - 1) .'</a> ';
if($page + 2 <= $total) $page2right = ' <a href= index.php?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' <a href= index.php?page='. ($page + 1) .'>'. ($page + 1) .'</a>';

// Вывод меню
echo $pervpage.$page2left.$page1left.'<a href= index.php?page='.$page.' class="current">'.$page.'</a>'.$page1right.$page2right.$nextpage;
?>
</div>
</div>
</div><!--End NEWS -->
[/PHP]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 16.1.2011, 19:32; Ответить: alexdrob
Сообщение #2


(forest69 @ 16.1.2011, 21:12) *
Например при нажатии на 2 страничку, он мне грузит файл 2.php


(forest69 @ 16.1.2011, 21:12) *
include($site_page.'.php');

ну видимо у вас это 2 присваивается переменной $site_page
вообще такой подход не безопасен, когда вы инклудите файл название которого передаётся в строке запроса.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
forest69
forest69
Topic Starter сообщение 16.1.2011, 19:50; Ответить: forest69
Сообщение #3


а как нужно тогда сделать, чтобы было безопасно?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 16.1.2011, 20:10; Ответить: alexdrob
Сообщение #4


ну хотя бы завести масси например из тех страниц что можно инклудить, типа:
[PHP]$pages_allow = array('main','news','forum','contact');
if (in_array($site_page,$pages_allow))
include "$site_page.php";
else
include "main.php";[/PHP]
или вообще названия им сменить, типа
[PHP]$pages_allow['main'] = 'main.inc.php';
$pages_allow['news'] = 'my_news.inc.php';
if (array_key_exists($site_page,$pages))
include $site_page;
else
include "main.php";[/PHP]

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Нужно ли закрывать ненужные страницы тегом noindex, follow?
8 noviktamw 2914 2.3.2024, 12:53
автор: toplinks
Открытая тема (нет новых ответов) Сверстать страницы из figma
нужно сделать страницы для веб приложения
1 bluestorm 1297 7.6.2022, 18:11
автор: doharddocode
Открытая тема (нет новых ответов) Подобрать группы и страницы и разместить ссылку
4 Lacomka 3412 21.2.2022, 8:43
автор: АлексейWEB
Открытая тема (нет новых ответов) Верстка и внедрение на сайт макета главной страницы
Требуется: с Figma на Laravel
2 ARsHi 1673 27.3.2021, 0:57
автор: Ogaelath
Открытая тема (нет новых ответов) Кто возьмется за продвижение сайта со второй страницы на первую в Гугле
и за сколько?
9 Mukanov 2274 24.8.2020, 3:34
автор: adamsadriane


 



RSS Текстовая версия Сейчас: 23.4.2024, 22:56
Дизайн