[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подскажите пожалуйста. С админки формирую ссылки,
kent666
Всем привет!
Подскажите пожалуйста. С админки формирую ссылки, а они неправильно работают.
т.е.
формирую с test/admin/
ссылку на exit/
а он формирует test/exit/ вместо test/admin/exit/
Хотя в .htaccess все есть



Спустя 1 час, 21 минута, 50 секунд (18.03.2011 - 20:28) Trianon написал(а):
в адресной строке у Вас что находится?

Спустя 42 минуты, 23 секунды (18.03.2011 - 21:10) kent666 написал(а):
В адресной строке у меня находится переменная route
т.е. я формирую ссылку из админки
ПО идее должно получится
test/admin/route, а получается просто test/route

уже переносил define('IRB_HOST', 'http://'. $_SERVER['HTTP_HOST'] .'/'); с конфига который находится в корневом каталоге в index.php каталога /admin
У меня ссылки формируются по такому принципу
?php

/**
* Function of formation of GET-parametres
* Функция формирования GET-параметров
*/

function href()
{
global $GET; // Объявляем массив $GET, сформированный ранее, глобальным
$tmp = $GET; //Переписываем переменную, что бы не влиять на глобальный массив
$href = '';
$arg = func_get_args(); // Получаем массив аргументов переданных в функцию href(тут_вот)

if($arg[0] == 'host') // Это для того, что бы сделать ссылку без параметров
return IRB_HOST;

foreach($arg as $var) // Перебираем полученные аргументы
{
$param = explode('=', $var); // Разделяем имя переменной и значение (page=gallery, например)

// Если в массиве $GET ($tmp) есть ключ, полученный выше (в данном случае 'page')

if(array_key_exists($param[0], $tmp))
$tmp[$param[0]] = $param[1]; // То этому ключу присваиваем полученное значение
else
die('The variable <b>'. $param[0] .'</b> is not defined'); // Иначе...
}

$cnt = array_flip(array_keys($tmp)); // обрезаем те параметры, которые не передавались в аргумент
$tmp = array_slice($tmp, 0, $cnt[$param[0]] + 1);

foreach($tmp as $var => $val) // Теперь поочередно вставляем значения из $GET ($tmp) в ссылку
if(IRB_REWRITE == 'on')
$href .= '/'. $val; // Если реврайт включен, через слэш
elseif(!empty($val))
$href .= '&'. $var .'='. $val; // Если нет = обычные GET параметры


if(IRB_REWRITE == 'on')
return IRB_HOST . trim($href, '/');
else
return
IRB_HOST .'?'. trim($href, '&');
}



Спустя 8 минут, 26 секунд (18.03.2011 - 21:19) Trianon написал(а):
В адресной строке браузера у Вас не переменная находится, а URL.
Его, начиная от символов http и до последнего знака, я и попросил процитировать.
А если база отсчета путей изменена тегом HTML - то новое значение этой базы.

Спустя 19 минут, 16 секунд (18.03.2011 - 21:38) kent666 написал(а):
ну я условно назвал переменной route
фактически у меня http://www.test/admin/exit такой URL должен получится, а получается http://www.test/exit
Проблема в константе IRB_HOST
я ее багил и она с URL http://www.test/admin/ определяется как http://www.test/


Вопрос почему?
в .htaccess я прописал

AddDefaultCharset UTF-8
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
php_flag register_globals Off
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
Options -Indexes

# php_value error_reporting 2047
# php_value error_log "Z:/home/my-site.ua/www/log/error.log"
# php_flag log_errors on
# php_flag display_errors off

RewriteEngine on

RewriteRule ^admin/(.*)$ admin/index.php?route=$1 [L,QSA]

RewriteCond %{REQUEST_URI} !^/admin

RewriteCond %{REQUEST_URI} !^/favicon.ico
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

Спустя 15 часов, 48 минут, 26 секунд (19.03.2011 - 13:26) twin написал(а):
kent666
Всё очень просто. Вопрос в невнимательности. Там есть вот такие строчки:
Цитата
Еще один момент. Так как скрипт может находиться и не в корневой директории, а идти, допустим, как дополнение к уже готовому сайту, нужно определить пути. Мы сделали это константой IRB_HOST , которую нужно определить в конфиге. Если скрипт не в корне, нужно добавить полный путь:


/** 
* Establishes a path to a script root for HTTP
* Устанавливает путь до корневой директории скрипта
* по протоколу HTTP
*/

define('IRB_HOST', 'http://'. $_SERVER['HTTP_HOST'] .'/site/');

/**
* Establishes a physical path to a root directory of a script
* Устанавливает физический путь до корневой директории скрипта
*/

define('IRB_ROOT', str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']) .'/site/');

Спустя 3 минуты, 44 секунды (19.03.2011 - 13:30) twin написал(а):
Либо если нужна админка, то это пропущено:
Цитата
2. Появилась новая константа - IRB_ADMIN. Она нужна для того, что бы различить обычные ссылки и ссылки на модули админ-панели. Для этого изменим функцию формирования ссылок href():

/**  
* The administrator-panel identifier
* Идентификатор админ-панели
*/

define('IRB_ADMIN', true);

Спустя 1 день, 20 часов, 39 минут, 55 секунд (21.03.2011 - 10:10) kent666 написал(а):
Да. Я понял. Просто недосмотрел. ))))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.