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 :: Вопрос по роутеру

 PHP.SU

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


 Страниц (1): [1]   

> Без описания
Free_man
Отправлено: 01 Июня, 2012 - 11:18:53
Post Id



Новичок


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


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




Есть примерно такой код:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3.  
  4. /* Физический путь до скрипта */
  5.  
  6.         define('NVC_ROOT', str_replace('\\', '/', dirname(__FILE__)));
  7.  
  8. /* Функция вызова меню */
  9.  
  10.         function mainMenu($menu)
  11.       {
  12.                
  13.                 echo '<ul id="menu">';
  14.                
  15.                         foreach ($menu as $link=>$href)
  16.                        {
  17.                                 echo "<li><a href=\"$href\">", $link, '</a></li>';
  18.                         }
  19.                
  20.                 echo '</ul>';
  21.         }
  22.  
  23. /* Массив меню */
  24.  
  25. $menu = array(
  26.  
  27.                 "Главная"       => "index.php?id=home",
  28.                 "Page1"          => "index.php?id=page1",
  29.                 "Page2"          => "index.php?id=page2",
  30.                 "Page3"          => "index.php?id=page3",
  31.                 "Page4"          => "index.php?id=page4",
  32.                 "Page5"          => "index.php?id=page5");
  33.                
  34. mainMenu($menu); // Вызываем меню
  35.  
  36.  
  37. /* Роутер */
  38.                                                    
  39.                    
  40.    $id = strip_tags($_GET["id"]);
  41.        switch($id)
  42.        {
  43.             case "home":
  44.                 include N_ROOT . '/mainlinks/home.php'; break;
  45.                                
  46.             default:
  47.                 include N_ROOT . '/mainlinks/home.php';
  48.         }
  49.  
  50.  
  51. ?>
  52.  


Вопрос в том что главная страница будет - http://sitename/index.php?id=home . Но когда будут набирать адрес сайта то будут попадать просто на http://sitename/, которая и выдает ошибку "Undefined index: id".

Как сделать так что бы когда вводили адрес сайта сразу перенаправляло на http://sitename/index.php?id=home?

Спасибо.

(Отредактировано автором: 01 Июня, 2012 - 11:20:53)

 
 Top
vlom
Отправлено: 01 Июня, 2012 - 11:20:50
Post Id



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


Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010  
Откуда: Екатеринбург


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




в .htaccess пропиши
CODE (htmlphp):
скопировать код в буфер обмена
  1. Redirect 301 / /index.php?id=home?

(Добавление)
а лучше почитай вот этот урок от евгена http://forum.php.su/topic.php?fo...=62&topic=98
 
 Top
Free_man
Отправлено: 01 Июня, 2012 - 11:27:56
Post Id



Новичок


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


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




vlom пишет:
в .htaccess пропиши
CODE (htmlphp):
скопировать код в буфер обмена
Redirect 301 / /index.php?id=home?

(Добавление)
а лучше почитай вот этот урок от евгена http://forum.php.su/topic.php?fo...=62&topic=98


Нужно писать прямо так?Не чего не добавлять?Потому что выдает - Internal Server Error. Насчет урока. Я еще не дорос до MVC да и ООП пока только начал учить не давно.

*Стоит denwer.

(Отредактировано автором: 01 Июня, 2012 - 13:48:17)

 
 Top
Free_man
Отправлено: 01 Июня, 2012 - 14:29:28
Post Id



Новичок


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


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




Не знаю насколько это хорошо но решил проблему так:

Критика и помощь в исправлении приветствуются.


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. if(isset($_GET["id"]))
  4. {
  5.       $id = strip_tags($_GET["id"]);
  6. }
  7. else
  8. {
  9.       $id = 'home';
  10. }
  11.         switch($id)
  12.         {
  13.                 case "page1":
  14.                         include N_ROOT . '/mainlinks/page1.php';break;
  15.                 case "page2":
  16.                         include N_ROOT . '/mainlinks/page2.php';break; 
  17.                 case "page3":
  18.                         include N_ROOT . '/mainlinks/page3.php';break;
  19.                 case "page4":
  20.                         include N_ROOT . '/mainlinks/page4.php';break;
  21.                 case "page5":
  22.                         include N_ROOT . '/mainlinks/page5.php';break;         
  23.                 case "home":
  24.                 default:
  25.                         include N_ROOT . '/mainlinks/home.php';
  26.                         }
  27. }
  28. ?>

(Отредактировано автором: 01 Июня, 2012 - 14:36:26)

 
 Top
avtor.fox
Отправлено: 01 Июня, 2012 - 15:03:33
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


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




как-то так -

PHP:
скопировать код в буфер обмена
  1. $pg = explode("/", $_GET['q']);
  2. if(count($pg)==0){
  3. include 'index.php';
  4. }
  5. else{
  6. include $pg[0]."/index.php";
  7. }

$pg[0] в данном случае я предоставил в виде папки модуля.
$pg[1] параметр.

К примеру вызов новости с идентификатором 'test' будет вот с такой ссылкой -

http://site[dot]com/news/test

Сам модуль новостей будет примерно такого содержания -

PHP:
скопировать код в буфер обмена
  1. $pg = explode("/", $_GET['q']);
  2. $sql = mysql_query("SELECT * FROM `table` WHERE `collumn`='".$pg[1]."' LIMIT 1");


htaccess

CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. RewriteRule ^(.*) index.php?q=$1 [L]



Данный код очень сырой, дырявый, ненадёжный и приведён только в целях ознакомления. "Готовый" код для реализации единой точки входа можно найти на форуме с помощью поиска. Я бы посоветовал код от Eugen или DeepVarvar. От первого мне понравилась реализация, а от второго - простота Улыбка

P.S. Дико и странно. Человек который знает что такое роутер, пытается запихнуть варианты страниц в switch:case Улыбка
(Добавление)
А Ваш код я бы изменил вот так -

PHP:
скопировать код в буфер обмена
  1. function load_page($val){
  2.         if(file_exists('mainlinks/'.$val.'.php')){
  3.                 include 'mainlinks/'.$val.'.php';
  4.         }
  5.         else{
  6.                 exit('Файл не найден');
  7.         }
  8. }
  9. if($_GET["id"]){
  10.         $id = strip_tags($_GET["id"]);
  11.         load_page($id);
  12. }
  13. else{
  14.         load_page('home');
  15. }


Просто и топорно Улыбка
 
 Top
Free_man
Отправлено: 01 Июня, 2012 - 15:19:58
Post Id



Новичок


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


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




avtor.fox пишет:
P.S. Дико и странно. Человек который знает что такое роутер, пытается запихнуть варианты страниц в switch:case


Я еще не очень хорошо знаю php.Да я знаю что такое роутер и как примерно выглядит его реализация.Но я как бы так сказать его плохо понимаю.С MVC пока вообще не лажу.В данный момент понемногу разбираюсь с ООП.

Поэтому что бы не было больших проблем в дальнейшем решил делать навигацию через switch.

Дальше когда наберусь опыта планирую перевести сайт на MVC.Вот тогда и буду разбираться с полноценным роутером.

Спасибо в любом случае.

(Добавление)
avtor.fox пишет:
А Ваш код я бы изменил вот так -


Все равно получаю "Undefined index: id" при обычном запросе http://sitename, в строке


Все.Решил исправлением на
(Добавление)
avtor.fox пишет:
Данный код очень сырой, дырявый, ненадёжный и приведён только в целях ознакомления. "Готовый" код для реализации единой точки входа можно найти на форуме с помощью поиска. Я бы посоветовал код от Eugen или DeepVarvar. От первого мне понравилась реализация, а от второго - простота


Вроде DeepVarvar хорошо написал про ЧПУ и одну точку входа.Но я что то не как не могу осмыслить концепцию. Если не затруднит можно объяснить на пальцах?

(Отредактировано автором: 01 Июня, 2012 - 15:31:06)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB