Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: ЧПУ и $_GET переменные
 
 автор: antf   (30.11.2008 в 10:55)   письмо автору
 
 

Здравствуйте.

1. Пользователь вводит url типа http://mysite.com/mypage
2. Файл index.php находит реальный url страницы mypage: index.php?page=12
3. А теперь вопрос: как я могу использовать конструкцию if($_GET['page'] == 12)? При таком url переменная $_GET['page'] ведь не будет создана?

  Ответить  
 
 автор: sl1p   (30.11.2008 в 11:14)   письмо автору
 
   для: antf   (30.11.2008 в 10:55)
 

каким интересно боком он её находит:)
если вы както умудряетесь в htaccess переделать на mypage на ?page=12
такой ГЕТ будет создан.

  Ответить  
 
 автор: antf   (30.11.2008 в 11:30)   письмо автору
 
   для: sl1p   (30.11.2008 в 11:14)
 

>каким интересно боком он её находит:)

1. В .htaccess пишем:


RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]


2. А в самом index.php

<?php
//отделяем чпу-параметры от поддиректории, в которую сайт установлен
$get_vars str_replace($gl_subdir''$_SERVER['REQUEST_URI']);
//отделяем чпу-параметры от $_GET-переменных
$question_pos strpos($get_vars'?');
if(!
$question_pos$question_pos strlen($get_vars);
   
$get_vars substr($get_vars0$question_pos);
  
//выбираем настроящий url  из базы
 
$url db_select_one("SELECT url FROM {$gl_db_prefix}url WHERE url = '{$get_vars}'");
?>

  Ответить  
 
 автор: antf   (30.11.2008 в 11:36)   письмо автору
 
   для: antf   (30.11.2008 в 11:30)
 

Можно обойтись без $_GET-переменных и вместо столбца url, создать столбец params. Там будет хранится сериализованный ассоциативный массив. Он будет содержать имена переменных, которые необходимо создать и их значения.

<?php
//отделяем чпу-параметры от поддиректории, в которую сайт установлен
$get_vars str_replace($gl_subdir''$_SERVER['REQUEST_URI']);
//отделяем чпу-параметры от $_GET-переменных
$question_pos strpos($get_vars'?');
if(!
$question_pos$question_pos strlen($get_vars);
   
$get_vars substr($get_vars0$question_pos); 
//выбираем массив с именами переменных и из значениями
$vars_to_create unserialize(db_select_one("SELECT params FROM {$gl_db_prefix}url WHERE url = '{$get_vars}'"));
//создаем переменные, присваиваем значения
  
if(is_array($vars_to_create))
  {

       foreach(
$vars_to_create as $key => $value)
         $
$key $value;
  }
?>


Минусы
* Снижает читабельность.
* Мне весь Ortus и модули к нему придется переписывать :(

  Ответить  
 
 автор: sl1p   (30.11.2008 в 13:39)   письмо автору
 
   для: antf   (30.11.2008 в 11:36)
 

я если честно не спалил зачем юзается request_uri если можно дёргать напрямую гет параметры?

RewriteRule ^(.*)/?$ index.php?page=$1 [L]

domen/lala/

echo $_GET['page']; //lala

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования