Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Про ЧПУ и не только.. [4]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (9): « 1 2 3 [4] 5 6 7 8 9 »   

> Описание: Малюсенькая статейка.
DeepVarvar Супермодератор
Отправлено: 15 Ноября, 2011 - 18:23:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




50
(Добавление)
Еще успеете.
 
 Top
Estenny
Отправлено: 15 Ноября, 2011 - 18:25:40
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Нояб. 2011  
Откуда: Москва


Помог: 0 раз(а)




Фух, я нашел ошибку, почему у меня не получалось!

Тут получается, что первый параметр — это www, а второй — сам модуль! А я просто делал запрос на www!
 
 Top
sKaa
Отправлено: 15 Ноября, 2011 - 18:39:10
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


А я, что не доходчиво объяснял ?( Растерялся
 
 Top
Estenny
Отправлено: 15 Ноября, 2011 - 20:38:45
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Нояб. 2011  
Откуда: Москва


Помог: 0 раз(а)




Не хочет переходить на ссылки вида site.ru/name/1 или просто site.ru/name/. В чем может быть проблема?
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Ноября, 2011 - 20:50:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ну что значит не хочет? вар дамп ему и смотреть что там не так.. и сразу: error_reporting(E_ALL);
Пусть будет.
 
 Top
Estenny
Отправлено: 15 Ноября, 2011 - 20:59:12
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Нояб. 2011  
Откуда: Москва


Помог: 0 раз(а)




Ну просто он переходит на страницу, отображает информацию из БД, но не видит стилей, которые прописаны в name.php и скриптов! В дампе все нормально, как я и предполагал.
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Ноября, 2011 - 21:07:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Estenny пишет:
не видит стилей
Хы, а вот теперь их все надо указывать всегда от корня сайта, так же как и ссылки: /styles/main.css
Картинки и js идут туда же.
 
 Top
Estenny
Отправлено: 15 Ноября, 2011 - 21:16:30
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Нояб. 2011  
Откуда: Москва


Помог: 0 раз(а)




DeepVarvar, ага, все работает Улыбка .
Спасибо за помощь!
 
 Top
armancho7777777 Супермодератор
Отправлено: 04 Мая, 2012 - 11:01:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Ну, во первых, убираем лишние слеши что по краям с помощью trim:
PHP:
скопировать код в буфер обмена
  1.  
  2. $query_params = explode("/",trim($query_string, '/'));
  3.  
  4. $rout = array(
  5.         'home' => 'home.php',
  6.          'reg' => 'reg.php',
  7.        'page2' => 'page2.php'
  8.        );
  9.  
  10. $content = '';
  11.  
  12. $page = (count($query_params) > 0) ? array_pop($query_params) : 'home';
  13.  
  14. if(isset($rout[$page]))
  15. {
  16.   ob_start();
  17.   include $rout[$page];
  18.   $content = ob_get_contents();
  19.   break;
  20. }
  21.  
  22.  


И выводим контент в нужном месте разметки.
На пример:
PHP:
скопировать код в буфер обмена
  1. <div id='content'><?=$content?></div>

(Отредактировано автором: 04 Мая, 2012 - 11:41:22)

 
 Top
Free_man
Отправлено: 01 Июня, 2012 - 17:19:39
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2012  


Помог: 0 раз(а)




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

Скажем у меня есть index.php.К нему я подключаю шаблон своего сайта.Шапка,футер,меню не меняются.Меняется контент в зависимости от выбранного пункта меню.В одном например будут статьи которые выводятся из базы списком и при выборе статьи открывается полная статья которая например должна иметь адрес http://sitename/articles/122 .В другом пункте меню картинки и т.д. и т.п.

Как это реализовать с помощью концепции описанной в этой теме?

Самое умное до чего доехал это switch(ЧПУ как я понял придется прописывать в ручную для каждой URL). В общем как то так:

Есть функция вывода меню из масива

PHP:
скопировать код в буфер обмена
  1.  
  2. /* Функция вызова меню */
  3.  
  4.     function mainMenu($menu)
  5.     {
  6.         echo '<ul id="menu">';
  7.  
  8.             foreach ($menu as $link=>$href)
  9.             {
  10.                 echo "<li><a href=\"$href\">", $link, '</a></li>';
  11.             }
  12.        
  13.         echo '</ul>';
  14.     }
  15.  


Далее в index.php есть шаблон в котором есть массив меню, его вывод и его роутер(switch)который расположен в части контента и подключает разный контент из файлов в зависимости от GET параметра:

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. /* Массив и вызов меню */
  4.  
  5.     $menu = array(
  6.  
  7.                 "Главная"       => "index.php?id=home",
  8.                 "Страница1"     => "index.php?id=page1",
  9.                 "Страница2"     => "index.php?id=page2",
  10.                 "Страница3"     => "index.php?id=page3",
  11.                 "Страница4"     => "index.php?id=page4",
  12.                 "Страница5"     => "index.php?id=page5");
  13.                
  14.     mainMenu($menu);   
  15.  
  16. /* switch расположенный в части контента в шаблоне. N_ROOT - Физический путь до файла */
  17.  
  18. $id = isset($_GET['id']) ? strip_tags($_GET["id"]) : 'home';
  19.  
  20.         switch($id)
  21.         {
  22.             case "page1":
  23.                 include N_ROOT . '/mainlinks/page1.php'; break;
  24.                                        
  25.             case "page2":
  26.                 include N_ROOT . '/mainlinks/page2.php'; break;
  27.                                        
  28.             case "page3":
  29.                 include N_ROOT . '/mainlinks/page3.php'; break;
  30.                                        
  31.             case "page4":
  32.                 nclude N_ROOT . '/mainlinks/page4.php'; break;
  33.                                        
  34.             case "page5":
  35.                 include N_ROOT . '/mainlinks/page5.php'; break;
  36.                                                
  37.             case "home":
  38.             default:
  39.                 include N_ROOT . '/mainlinks/home.php';
  40.         }
  41.  
  42.  


Если у кого то есть нервы объяснить на пальцах.Буду очень признателен.
 
 Top
caballero
Отправлено: 01 Июня, 2012 - 18:10:21
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




а в чем проблемма собственно?
.htaccess перенаправляет все на index.php а тут берешь URI и разруливаешь обычным switch

хотя в данном куске кода можно просто

PHP:
скопировать код в буфер обмена
  1.     include N_ROOT . '/mainlinks/{$id}.php';


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Free_man
Отправлено: 01 Июня, 2012 - 18:13:44
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2012  


Помог: 0 раз(а)




caballero пишет:
а в чем проблемма собственно?
.htaccess перенаправляет все на index.php а тут берешь URI и разруливаешь обычным switch


Проблема в том что хочу сделать как описал DeepVarvar а не через switch.Но не могу вникнуть в то что он написал.
То есть нужна одна точка входа.Шаблон отделенный от index и главное ЧПУ которые не придется прописывать каждую в htaccess.

(Отредактировано автором: 01 Июня, 2012 - 18:16:33)

 
 Top
DeepVarvar Супермодератор
Отправлено: 03 Июня, 2012 - 14:59:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




А у меня написано что перед инклюдой идет проверка на существование файла.
И если его нет - показать 404.
Никаких свитчей не надо - проверил, если файл есть - подключаем и он отработает.
Если нет - значит в урлу хрень вписали - покажем 404.
В чем проблема то?
(я написал о том же о чем caballero только другими словами)
 
 Top
boichukvd
Отправлено: 20 Сентября, 2012 - 23:22:06
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Хотел бы связаться с автором данной заметки, возможность такая есть?
 
 Top
boichukvd
Отправлено: 21 Сентября, 2012 - 16:50:07
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




sKaa пишет:
site.ru/index.php?reg

Как сделать так чтобы выглядело site.ru/reg/
Можешь мне такое ответить плиз?
 
 Top
Страниц (9): « 1 2 3 [4] 5 6 7 8 9 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Обсуждение статей »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB