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



 

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

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

2 страниц V   1 2 >
Открыть тему
Добавить ответ в эту тему
> убрать GET запрос с URL, Сделать ЧПУ ссылок
WoWeb
WoWeb
Topic Starter сообщение 27.10.2016, 21:06; Ответить: WoWeb
Сообщение #1


Здравствуйте, решил написать небольшой движок для вывода постов на php. Столкнулся со следующей проблемой:

У меня сейчас есть файл index.php, который при заходе на страницу /blog/ выдает список статей.

Ссылки формируются так - <a href="/blog/article.php?id=<?=$oneNews['seo_link'];?>"><?=$oneNews['title_h1'];?></a>

где:
article.php - страница вывода полной статьи
id - переменная содержащая seo ссылку

В HTML все выглядит так - <a href="/blog/article.php?id=link_my.html">Заголовок</a>

Хочу сделать что бы часть article.php?id= не отображалась, но передавала get запрос, в итоге что бы:
Было так - /blog/article.php?id=link_my.html
Стало так - /blog/link_my.html

Это можно сделать в htaccess или я изначально не правильно создал структуру php файлов?

Сообщение отредактировал WoWeb - 27.10.2016, 21:07


--------------------
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
IliaY
IliaY
сообщение 28.10.2016, 6:36; Ответить: IliaY
Сообщение #2


WoWeb,
Цитата
Это можно сделать в htaccess или я изначально не правильно создал структуру php файлов?

Да, можно :rolleyes:
Правило будет примерно такое:
Код
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^blog/([[a-zA-Z0-9]+)/? blog/article.php?id=$1 [L]
</IfModule>



IliaY,
или как в DLE реализовано
Код
RewriteRule ^([^/]+).html$ index.php?do=static&page=$1 [L]


page - это ваш id, как бы...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
WoWeb
WoWeb
Topic Starter сообщение 28.10.2016, 10:41; Ответить: WoWeb
Сообщение #3


IliaY,
В этом случае - RewriteRule ^blog/([[a-zA-Z0-9]+)/? blog/article.php?id=$1 [L]
Меня просто выбрасывает на blog/index.php

А мне нужно что бы при клике на ссылку - id передавался в article.php где будет из базы данных выводится текст полной статьи.

Сообщение отредактировал WoWeb - 28.10.2016, 10:43


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kumidzeke
Kumidzeke
сообщение 28.10.2016, 12:26; Ответить: Kumidzeke
Сообщение #4


Погуглите за роутинг. Что-то типо этого, но в вашем случае вместо action использовать id.

upd: пример выше подразумевает использование MVC. Его используете? Если нет, то советую.

Сообщение отредактировал Kumidzeke - 28.10.2016, 12:32


--------------------
Telegram — @za4me
Skype — Kumidzeke
Vk — vk.com/za4me
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
WoWeb
WoWeb
Topic Starter сообщение 28.10.2016, 13:05; Ответить: WoWeb
Сообщение #5


Kumidzeke,

Вот мой index.php:
Код
    <div id="content">
    <?php if($_GET['link'] != true){ ?>
        <?php
            include "adm/connect.php";            
            $sql = mysql_query("SELECT * FROM `blog` LIMIT 5") or die(mysql_error());            
            $newsData = array();            
            while($result = mysql_fetch_array($sql, MYSQL_ASSOC)){
                $newsData[] = $result;
            }  
            foreach($newsData as $oneNews):
        ?>        
        <article>
            <p><?=$oneNews['title'];?></p>
            <p><?=$oneNews['keywords'];?></p>
            <p><?=$oneNews['description'];?></p>
            <p><?=$oneNews['seo_link'];?></p>
            <br>
            <p><a href="index.php?link=<?=$oneNews['seo_link'];?>.html"><?=$oneNews['title_h1'];?></a></p>
            <p><?=$oneNews['text'];?></p>
            <p><?=$oneNews['date'];?></p>
            <p><?=$oneNews['autor'];?></p>
            <p><?=$oneNews['raiting'];?></p>
            <p>-------------------------</p>
        </article>
        <?php endforeach; ?>  
    <input id="show_more" count_show="5" count_add="5" type="button" value="Показать еще" />
    
    <?php } else{
        
            include("adm/connect.php");
            $result = mysql_query("SELECT * FROM blog WHERE seo_link = ".$_GET['link']."");
            echo $_GET['link'];
            
    }?>
    
    </div>


Сейчас ссылка генерируется следующим образом - <a href="index.php?link=<?=$oneNews['seo_link'];?>.html"><?=$oneNews['title_h1'];?></a> с помощью index.php?link= я передаю get переменную что бы далее используя ее получить текст полной статьи.

Но в html ссылки выглядят так - /blog/index.php?link=link_my.html где link_my.html - это get переменная.

Как мне сделать, что бы ссылка имела следующий вид /blog/link_my.html но передавала get параметр?

Сообщение отредактировал WoWeb - 28.10.2016, 13:07


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Alexandr_js
Alexandr_js
сообщение 28.10.2016, 14:04; Ответить: Alexandr_js
Сообщение #6


Не изобретайте велосипед, возьмите фремворк. Для начала освойте mvc

Очень плохо
Цитата(WoWeb @ 28.10.2016, 13:05) *
    $result = mysql_query("SELECT * FROM blog WHERE seo_link = ".$_GET['link']."");


Плохо
Цитата(WoWeb @ 28.10.2016, 13:05) *
include("adm/connect.php");


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

Сообщение отредактировал Alexandr_js - 28.10.2016, 14:08


--------------------
Забанен за мошенничество
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kumidzeke
Kumidzeke
сообщение 28.10.2016, 14:16; Ответить: Kumidzeke
Сообщение #7


Цитата(Alexandr_js @ 28.10.2016, 14:04) *
Не изобретайте велосипед, возьмите фремворк. Для начала освойте mvc

+1
и oop

Конец 2016 года, mysql для подключения к бд. Хотя в доке уже черти сколько написано о использовании mysqli или pdo.

Цитата(WoWeb @ 28.10.2016, 13:05) *
Сейчас ссылка генерируется следующим образом

Так генерируйте ссылку правильно, как вам необходимо в виде example.com/blog/id
А далее при переходе по этой url разберите ее, получите id и получите статью с этим id. Пример разбора url я уже вам привел выше (ссыль на github).

Цитата(WoWeb @ 27.10.2016, 21:06) *
изначально не правильно создал структуру php файлов?

Да.


--------------------
Telegram — @za4me
Skype — Kumidzeke
Vk — vk.com/za4me
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Alexandr_js
Alexandr_js
сообщение 28.10.2016, 14:41; Ответить: Alexandr_js
Сообщение #8


Цитата(Kumidzeke @ 28.10.2016, 14:16) *
Конец 2016 года, mysql для подключения к бд. Хотя в доке уже черти сколько написано о использовании mysqli или pdo.

Конец 2016 года до сих пор ставят гет запросы без фильтрации прямо в запрос mysql :huh:


--------------------
Забанен за мошенничество
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kumidzeke
Kumidzeke
сообщение 28.10.2016, 14:48; Ответить: Kumidzeke
Сообщение #9


Цитата(Alexandr_js @ 28.10.2016, 14:41) *
Конец 2016 года до сих пор ставят гет запросы без фильтрации прямо в запрос mysql

+

Вот что интересно, не надоело каждый раз писать "$_GET['link']"? :D

Еще небольшая придирка:


+ для читабельности лучше использовать альтернативный синтаксис (имхо).

Сообщение отредактировал Kumidzeke - 28.10.2016, 14:54


--------------------
Telegram — @za4me
Skype — Kumidzeke
Vk — vk.com/za4me
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
WoWeb
WoWeb
Topic Starter сообщение 28.10.2016, 15:01; Ответить: WoWeb
Сообщение #10


Kumidzeke, Не бейте ногами =) Я только начал изучать php, вот для тренировки пишу простенький движок для блога (добавление, редактирование, вывод данных) из базы данных, ну и вот и ЧПУ занимаюсь.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Добавить ответ в эту тему
Быстрый ответ
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Запрос на бесплатные полезности
7 Tia2 1973 23.3.2024, 11:27
автор: Alexand3r
Открытая тема (нет новых ответов) Куплю "вечные URL" с ваших сайтов с тематикой - Пластиковые Окна!
5 regem 8381 15.3.2020, 19:46
автор: Narsus797
Открытая тема (нет новых ответов) Куплю сайты, внутри темы подробный запрос
3 PticaKate 3652 12.11.2019, 16:22
автор: 0pium
Открытая тема (нет новых ответов) Get-Web.site - Качественная верстка сайтов
0 GetWeb 1514 29.7.2019, 20:08
автор: GetWeb
Открытая тема (нет новых ответов) Куплю места для размещения TXT+URL Строительная тематика.
7 regem 7642 28.3.2019, 18:31
автор: regem


 



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