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

12
~L
На сайте с 14.08.2006
Offline
12
1092

Сорри что сумбурно обьясняю...

Значит так...

Есть файл articles.php

Нужно сделать так, чтоб при запросе articles.php инклудился файл articles/articles.txt

При запросе articles.php?articles=1 инклудился файл articles/1.txt

При запросе articles.php?articles=2 инклудился файл articles/2.txt

При запросе articles.php?articles=bla инклудился файл articles/bla.txt

Тоесть если идет запрос с параметром, то скрип ищет .txt файл с названием параметра - если он есть - инклудит, если нет - редирект на articles.php

Нужно так, чтоб какой параметр, из такой же папки инклудил, т.е.

articles.php?articles=1 инклудился файл articles/1.txt

articles.php?id=1 инклудился файл id/1.txt

articles.php?bla=1 инклудился файл bla/1.txt

Если не существует - опять же редирект на articles.php

А еще... в инклудящийся файл нужно поместить переменную $title с титлом для страницы - тоесть если в .txt файле есть переменная $title то для страницы нужно поставить этот титл, если нет - то дефолтный...

Самое главное, чтоб можно было ЧПУ сделать потом...

http://www.site.ru/articles/1/

на

http://www.site.ru/articles.php?articles=1

Попытались с другом сделать...

Вот что получилось:


<?php
$page = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], '=') + 1);
if($page == basename($_SERVER['PHP_SELF'])) $page = 'articles';

$path = 'articles/'.$page.'.txt';
$path2 = 'articles/articles.txt';
if($page == 'articles') {
include($path2);
} elseif(!file_exists($path)) {
header('Location: /articles.php');
} else {
echo('<a href="/articles.php">Статьи</a><br><br>');
include($path);
}
?>

<title>
<?php
if(!isset($title)) {echo 'Дефолтный титл';} else {print "$title";}
?>
</title>

Но получается так, что какой запрос не введи:

articles.php?articles=1

articles.php?bla=1

articles.php?bbb=1

все равно инклудился файл articles/1.txt

И самое главное - ЧПУ в таком случае не работает - тупо перебрасывает на articles.php

Вот такие вот пироги... ©

Что делать - прямо не знаю...

Заранее спасибо всем, кто откликнется...

Хостинг (http://www.dihost.info) | Регистрация доменов (http://www.didomains.info) Ссылки на 50 Турсайтах оптом (/ru/forum/105796) | Статьи на 50 Турсайтах оптом (/ru/forum/106433)
qRoof
На сайте с 12.09.2006
Offline
6
#1

Могу посоветовать сделать что-то типа:

articles.php?folder=articles&id=1

Тогда и работать будет все и ЧПУ можно будет без проблем сделать.

$folder = htmlspecialchars($_GET['folder']);

$id = htmlspecialchars($_GET['id']);
if(file_exists($folder.'/'.$id.'.txt')) include ($folder.'/'.$id.'.txt');
else {
Header('Location: articles.php');
}
Америка, которую нам не показывают | JC | J. CMS
~L
На сайте с 14.08.2006
Offline
12
#2
qRoof:
Могу посоветовать сделать что-то типа:
articles.php?folder=articles&id=1
Тогда и работать будет все и ЧПУ можно будет без проблем сделать.

С параметрами работает, но когда запрашивается articles.php - идет вечный рефреш...

qRoof
На сайте с 12.09.2006
Offline
6
#3
~F/L/I/N/T~:
С параметрами работает, но кагда запрашивается articles.php - идет вечный рефреш...

if(isset($_GET['folder']) == true && isset($_GET['id']) == true) {

$folder = htmlspecialchars($_GET['folder']);
$id = htmlspecialchars($_GET['id']);
if(file_exists($folder.'/'.$id.'.txt')) include ($folder.'/'.$id.'.txt');
else {
Header('Location: articles.php');
}
}
~L
На сайте с 14.08.2006
Offline
12
#4

Ачтобы при articles.php инклудил articles/articles.txt

Так?


<?php
if(isset($_GET['folder']) == true && isset($_GET['id']) == true) {
$folder = htmlspecialchars($_GET['folder']);
$id = htmlspecialchars($_GET['id']);
if(file_exists($folder.'/'.$id.'.txt')) include ($folder.'/'.$id.'.txt');
else {
Header('Location: articles.php');
}
}
else {
include ('articles/articles.txt');
}
?>
qRoof
На сайте с 12.09.2006
Offline
6
#5

Да.

-сиволы-

~L
На сайте с 14.08.2006
Offline
12
#6


RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)(/?)+$ /articles.php?folder=$1&id=$2 [L]

Реврайт вроде работает, только как прописать, чтоб пути для картинок, файлов и т.д. не реврайтились?

qRoof
На сайте с 12.09.2006
Offline
6
#7

В пути картинок надо ставить слеш и указывать абсолютный путь.

Пример:

<img src='/site/images/1.jpg' />

~L
На сайте с 14.08.2006
Offline
12
#8

Не... я где то видел тоже в .htaccess прописываешь исключения - что не реврайтить...

Zlo_606ep
На сайте с 14.12.2006
Offline
129
#9

Предлагаю реврайтить только определйнные файлы

RewriteRule ^(.*)(/|\.htm)$ /articles.php

~L
На сайте с 14.08.2006
Offline
12
#10

Нашел:

RewriteCond %{REQUEST_FILENAME} !\.(css)|(swf)|(jpg)|(png)|(gif)|(pcx)$

qRoof, огромное спасибо за помощь!

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий