Создание PHP+MySQL сайта - Нужен совет и помощь

G2
На сайте с 27.10.2009
Offline
62
#11
Июнь:
но размещать его в открытом доступе я не планирую

Тогда можно посоветовать выложенные в общий доступ продукты, имеющие поддержку и документацию. Например, вот то что ТСу надо:

http://lumen.laravel.com/docs/routing#required-parameters

КакМаршрутник (http://goo.gl/forms/hMgaH0s9E5) — как маршрутник, но работает.
А1
На сайте с 13.07.2014
Offline
28
#12

Всем спасибо за помощь. Вот, что у меня получилось, код работает. Но я же не профи в этом деле и ошибки неизбежны )

Таблица в БД

id

cat - категория стати

url - урл страницы

desc - краткое описание стати

desc_title - анкор ссылки на странице "все стати"

title

meta_k

meta_d

text

data

Вывод всех статей https://site.ru/staty/



<?php
include('blogs/db.php');
$rezult=mysql_query("SELECT * FROM `staty`",$db);
if(!$rezult){
echo "zapros ne vipolneno";
exit();
}

if(mysql_num_rows($rezult) > 0){

$myrow=mysql_fetch_array($rezult);
}
else{
echo "v tablize net zapisi"; }
?>
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title> тайтл</title>
</head>

<body id="body">
<?php
do{
printf("
<a href='https://site.ru/staty/staty_cat.php?cat=%s&url=%s'>
%s
</a>

%s ",$myrow["cat"],$myrow["url"],$myrow["desc_title"],$myrow["desc"]);
}
while( $myrow = mysql_fetch_array($rezult) );
?>
</body>
</html>

Вывод сам стати https://site.ru/staty/staty_cat.php


<?php include('blogs/db.php');
if(isset($_GET['url']) AND isset($_GET['cat']) ) {
$url=$_GET['url'];
$sql = "SELECT * FROM `staty` WHERE url='$url' ";
$sql = mysql_query($sql,$db);
if (mysql_num_rows($sql) > 0) {
$myrow=mysql_fetch_assoc($sql);
}
if(mysql_num_rows($sql)==0){
header("HTTP/1.0 404 Not Found");
print "Страница, которую вы запрашиваете, не существует!";

}
}
?>

<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title><?php echo $myrow['title']?></title>
<meta name="description" content="<?php echo $myrow['met_d']?>">
<meta name="keywords" content="<?php echo $myrow['mata_k']?>">
</head>
<body id="body">

<?php echo $myrow['text']?>

</body>
</html>

Хотела настроить ЧПУ вот так

RewriteRule ^staty/([-a-zA-Z0-9_]+).php$ staty/post-cat.php?url=$1 [QSA,L]

Но почему то не работает.

И еще важный момент - Как уникализировать урлЫ? Можно например в конце добавить id?

Всему свое время...
Июнь
На сайте с 09.12.2015
Offline
19
#13
Аня1992:

Хотела настроить ЧПУ вот так
RewriteRule ^staty/([-a-zA-Z0-9_]+).php$ staty/post-cat.php?url=$1 [QSA,L]
Но почему то не работает.

Попробуйте черточку во множестве в конце написать. Также у вас staty/post-cat.php подпадает под маску, т.е. будет происходить зацикливание, если не добавите что-нибудь, препятствующее ему. Еще потом гляньте, как у меня это реализовано. Исходный адрес обрабатывается прямо в скрипте, без какого-либо предварительного преобразования в параметр.

И еще важный момент - Как уникализировать урлЫ? Можно например в конце добавить id?

Они так обычно и уникализируются, добавлением id в начало или в конец заключительной части пути. Можно объявить в базе данных само символьное имя ключевым или уникальным, как это сделано у меня. Тогда при создании сразу будет выводиться сообщение, что такое имя уже существует. Это вам на будущее. Чтобы это работало, нужно разделить добавление страницы на два этапа: сначала собственно добавление в базу данных, а потом уже заполнение большинства полей и сохранение, т.е. только если запись создана, переходите к ее редактированию.

G2
На сайте с 27.10.2009
Offline
62
#14

1. Роутинг, по хорошему, настраивается на единую точку входа, например таким правилом:


# Pass all requests not referring directly to files in the filesystem to
# index.php.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]

Дальше в индексе разбираем зашедший URL и вытягиваем интересную нам информацию: id, ресурс, и т.п.

2.

...WHERE url='$url' ...

НЕТ!!!1111

Как минимум так:


...WHERE url='mysql_real_escape_string($url)'...

Всегда весь пользовательский ввод экранируется.

Не совмещайте PHP и HTML в одном файле, пожалуйста.

Русского или транслита в коде тоже не надо.

Но за старание "5", продолжайте в том же духе и у вас все получится.

А1
На сайте с 13.07.2014
Offline
28
#15
Июнь:
Попробуйте черточку во множестве в конце написать..

:( Ой не понятно что вы имеете виду(в плане русского языка)

---------- Добавлено 14.12.2015 в 18:58 ----------

ghost28:
1. Роутинг, по хорошему, настраивается на единую точку входа, например таким правилом:


# Pass all requests not referring directly to files in the filesystem to
# index.php.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]


Дальше в индексе разбираем зашедший URL и вытягиваем интересную нам информацию: id, ресурс, и т.п.

2.

НЕТ!!!1111
Как минимум так:

...WHERE url='mysql_real_escape_string($url)'...

Всегда весь пользовательский ввод экранируется.

Не совмещайте PHP и HTML в одном файле, пожалуйста.

Русского или транслита в коде тоже не надо.

Но за старание "5", продолжайте в том же духе и у вас все получится.

Спасибо) Если исправить то, что вы сказали, код будет нормально работать без проблем?

L
На сайте с 10.02.2015
Online
261
#16

Странно, что еще ни один д"Артаньян не предложил написать на фреймворке. :)

А по остальному, что я хотел сказать, ghost28 уже все верно сказал.

Июнь
На сайте с 09.12.2015
Offline
19
#17
ghost28:
Роутинг, по хорошему, настраивается на единую точку входа, например таким правилом

Что у вас с файлом иконки, что для него отдельное условие пришлось писать?

Аня1992:
:( Ой не понятно что вы имеете виду(в плане русского языка)

[a-zA-Z0-9_-]

livetv:
Странно, что еще ни один д"Артаньян не предложил написать на фреймворке. :)

Я предложила свой каркас, но мне SeVlad сделал замечание. Решили отложить это на несколько дней, чтобы потом где-нибудь в тихом уголке... )))

VHS
На сайте с 28.09.2007
Offline
142
VHS
#18
Июнь:
Что у вас с файлом иконки, что для него отдельное условие пришлось писать?


[a-zA-Z0-9_-]

Я предложила свой каркас, но мне SeVlad сделал замечание. Решили отложить это на несколько дней, чтобы потом где-нибудь в тихом уголке... )))

Видимо кто-то не в курсе, что бывает с файлом фавикона ))) рекомендую потестить свои сайты с инструментами разработчика в любом современном браузере =)

SeVlad
На сайте с 03.11.2008
Offline
1609
#19
VHS:
Видимо кто-то не в курсе, что бывает с файлом фавикона )

Ты о чём?

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
G2
На сайте с 27.10.2009
Offline
62
#20
livetv:
Странно, что еще ни один д"Артаньян не предложил написать на фреймворке.

Я ссылку на Люмен дал ;) Но пока ТС начинает разбираться, не грех и самому потыкаться по граблям, опыта добавляет.

Июнь:
Что у вас с файлом иконки, что для него отдельное условие пришлось писать?

Это предотвращает сервинг 404й при ЧПУ через единую точку входа, при отсутствии фавикона (считая что скрипт умеет сервить 404 для не найденных путей). Если колхозить каждый путь через мод-реврайт смысла в таком правиле нет.

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