|
|
|
| Вобщем у меня есть следующая функция:
function error($n, $url=''){
global $home;
global $absolutpath;
if($url == '')
$url = $absolutpath;
if(substr_count($url, '?') > 0)
$end = '&error=' . $n;
else
$end = '?error=' . $n;
$out = $home . $url . $end;
$result = header("Location: " . $out . "");
return $result;
}
|
Почему при передаче $url = '/guestbook/?admclub';
Функция переадресовывает на просто /guestbook | |
|
|
|
|
|
|
|
для: Z3RO
(03.05.2011 в 18:21)
| | $home -- адрес сайта (http://site.ru)
$absolutpath -- путь к текущей страницы от корневой директории | |
|
|
|
|
|
|
|
для: Z3RO
(03.05.2011 в 18:21)
| | Действительно страннно, у меня функция, после минимальной модификации (убрал header), возвращает http://site.ru/guestbook/?admclub&error=1
<?php
function error($n, $url=''){
global $home;
global $absolutpath;
if($url == '')
$url = $absolutpath;
if(substr_count($url, '?') > 0)
$end = '&error=' . $n;
else
$end = '?error=' . $n;
$out = $home . $url . $end;
$result = "Location: " . $out;
return $result;
}
$home = "http://site.ru";
$url = '/guestbook/?admclub';
echo error(1, $url);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(03.05.2011 в 18:45)
| | Вот проблемное обращение к функции:
$type = (isset($_GET['admclub']) ? '2' : '1');
$t = ($type == 2 ? '?admclub' : '');
echo error('15', '/guestbook/index.php' . $t .'');
|
| |
|
|
|
|
|
|
|
для: Z3RO
(03.05.2011 в 18:55)
| | Помогите пожалуйста если кто знает как исправить проблему... | |
|
|
|
|
|
|
|
для: Z3RO
(03.05.2011 в 19:52)
| | Скорее всего дело не в этой функции. Возьмите следующий скрипт и обратитесь к нему задав GET-параметр ?admclub. Что он возвращает?
<?php
function error($n, $url=''){
global $home;
global $absolutpath;
if($url == '')
$url = $absolutpath;
if(substr_count($url, '?') > 0)
$end = '&error=' . $n;
else
$end = '?error=' . $n;
$out = $home . $url . $end;
$result = "Location: " . $out;
return $result;
}
$home = "http://site.ru";
$type = (isset($_GET['admclub']) ? '2' : '1');
$t = ($type == 2 ? '?admclub' : '');
echo error('15', '/guestbook/index.php' . $t .'');
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(03.05.2011 в 20:13)
| | Выводит ошибку
EntityRef: expecting ';'
При изменении 7 строки на
$end = '&error=' . $n;
Возвращает строку
Location: http://site/guestbook/index.php?admclub&error=1 | |
|
|
|
|
|
|
|
для: Z3RO
(03.05.2011 в 20:21)
| | Вам такой URL и нужен? | |
|
|
|
|
|
|
|
для: cheops
(03.05.2011 в 20:28)
| | Да, но функция перекидывает на /guestbook/index.php?
Может скинуть вам весь код? | |
|
|
|
|
|
|
|
для: Z3RO
(03.05.2011 в 20:29)
| | Значит где-то теряется параметр admclub, нужно его проверять до вызова функции. | |
|
|
|
|
|
|
|
для: cheops
(03.05.2011 в 20:33)
| | Может больший кусок кода скажет вам больше?
// Уничтожение сообщений из базы после устарения
mysql_query("DELETE FROM `guestbook` WHERE (`del` < $time - $fulldel) AND (`del` != '');");
// Проверка режима(обычный/админ-клуб)
$type = (isset($_GET['admclub']) ? '2' : '1');
$t = ($type == 2 ? '?admclub' : '');
if($type == 2)
echo error('1');
// Если режим админклуба, делаем проверку на права доступа
if($type == 1 || ($type == 2 && $rights >= 1))
{
// Добавление новых сообщений
if(($user_id && $_POST['text']) || (!$user_id && $_POST['text'] && $_POST['name']))
{
$text = escstr($_POST['text']);
$name = escstr($_POST['name']);
$type = $_POST['type'];
// Проверка на существование сообщения
$prov = mysql_num_rows(mysql_query("SELECT * FROM `guestbook` WHERE `text` = '" . $text . "' AND `from` = '" . $user_id . "';"));
if(!$prov)
{
// Проверка на флуд
$timeprov = mysql_num_rows(mysql_query("SELECT * FROM `guestbook` WHERE `date` >= $time - 5 AND `from` = $user_id;"));
if(!$timeprov)
{
if($user_id)
$req = mysql_query("INSERT INTO `guestbook` VALUES(0, '" . $user_id . "', '', '" . $text . "', '" . $time . "', '', '" . $type . "', '" . $user_ip . "', '" . $agn . "', '');");
else
$req = mysql_query("INSERT INTO `guestbook` VALUES(0, '', '" . $name . "', '" . $text . "', '" . $time . "', '', '1', '" . $user_ip . "', '" . $agn . "', '');");
if($req)
{
mysql_query("UPDATE `users` SET `guestbook` = `guestbook`+1 WHERE `id` = $user_id;");
if($type == 2)
header("Location: " . $home . "/guestbook/?admclub");
else
header("Location: " . $home . "/guestbook");
}
// Вывод ошибок
else
echo error('4');
}
else
//////////////////////
// ПРОБЛЕМНЫЙ УЧАСТОК 1
//////////////////////
echo error('15', '/guestbook/index.php' . $t .'');
}
else
//////////////////////
// ПРОБЛЕМНЫЙ УЧАСТОК 2
//////////////////////
echo error('14', '/guestbook/index.php' . $t .'');
}
else{
// Переключатель режимов
if($rights >= 1)
{
if($type == 1)
echo '<div class="zag">Гостевая | <a href="?admclub">Админ-клуб</a></div>';
else
echo '<div class="alarm"><a href="?">Гостевая</a> | Админ-клуб</div>';
}
|
| |
|
|
|
|
|
|
|
для: Z3RO
(03.05.2011 в 20:41)
| | Вот перед этим проблемным участком напишите
<?php
echo "t = ".$t;
exit();
?>
| Каково состояние переменной $t? | |
|
|
|
|
|
|
|
для: cheops
(03.05.2011 в 20:45)
| | Да, вы правы. Проблема с $t значение $t = NULL; | |
|
|
|
|
|
|
|
для: Z3RO
(03.05.2011 в 20:53)
| | Нашел где ошибка.
Если
$t = ($type == 2 ? '?admclub' : '');
заменить на
$t = '?admclub';, то всё ОК.
Спасибо за помощь. | |
|
|
|
|
|
|
|
для: Z3RO
(03.05.2011 в 20:55)
| | Тогда независимо от того, есть установлен параметр $_GET['admclub'] или нет, он будет передаваться. У вас достаточно хитрая и запутанная система проверки существования ?admclub. Хотя на мой взгляд вроде бы рабочая, странно, что у вас параметр admclub теряется (если он, конечно, изначально передается скрипту). | |
|
|
|
|
|
|
|
для: cheops
(03.05.2011 в 20:58)
| | Изначально он передаётся, поскольку переключатель режимов работает без ошибок. | |
|
|
|