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

Форум PHP

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

 

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

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

тема: Добавление к адресу параметра
 
 автор: Z3RO   (09.05.2011 в 22:29)   письмо автору
 
 

Вобщем у меня берется из базы адрес и к нему в конец нужно добавить параметр his=1. Для это я использую следующий код:

// Адрес страницы
$page = $his['page'];
if(substr_count($his, '?') > 0)
{
$len = strlen($page) - 1;
if($page{$len} == '?')
$way = $home . $page . 'his=1';
else
$way = $home . $page . '&his=1';
}
else
{
$way = $home . $page . '?his=1';
}

Но код работает не коректно. Если ему передать значение /news/?id=2, то на выходе мы получаем http://site.ru/news/?id=2?his=1 вместо http://site.ru/news/?id=2&his=1

  Ответить  
 
 автор: cheops   (09.05.2011 в 22:58)   письмо автору
 
   для: Z3RO   (09.05.2011 в 22:29)
 

>if($page{$len} == '?')
Довольно странная строка (какова её логика?) и с $his тоже не очень понятно, вы используете его то как ассоциативный массив, то как строку. Что находится в этой переменной?

  Ответить  
 
 автор: Z3RO   (09.05.2011 в 23:01)   письмо автору
 
   для: cheops   (09.05.2011 в 22:58)
 

Ну по сути строка
if($page{$len} == '?') -- http://php.su/functions/?substr (первый листинг)
проверяет какой символ находится в конце строки и если это вопросительный знак, то исполняет код далее.
Вот полный код для разбора
$r = $_SERVER['HTTP_REFERER'];
$his = mysql_fetch_array(mysql_query("SELECT * FROM `history` WHERE `user` = $user_id ORDER BY `date` DESC LIMIT 1;"));
$page = $his['page'];
if(substr_count($his, '?') > 0)
{
$len = strlen($page) - 1;
if($page{$len} == '?')
$way = $home . $page . 'his=1';
else
$way = $home . $page . '&his=1';
}
else
{
$way = $home . $page . '?his=1';
}
header("Location: " . $way . "");

  Ответить  
 
 автор: Z3RO   (09.05.2011 в 23:08)   письмо автору
 
   для: Z3RO   (09.05.2011 в 23:01)
 

Судя из результата, то ошибка здесь:
if(substr_count($his, '?') > 0)

  Ответить  
 
 автор: Z3RO   (09.05.2011 в 23:09)   письмо автору
 
   для: Z3RO   (09.05.2011 в 23:08)
 

Вот это я лоханулся, я переменные перепутал. Извиняюсь за потраченое зря время.

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

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