[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с $_GET массивом
Invis1ble
В массив $_GET тупо не хочет записываться
'page' => 'logout'
даже в ручном режиме, посредством ввода в URL...
Мозг уже кипит!!! Что я только не пробовал, начинаю уже верить в мистику dry.gif
Помогите, кто-нибудь! Думаю, что ответ лежит где-то на поверхности, но понять никак не могу...

P.S. остальные 'page' записываются нормально, только с 'logout' проблема...



Спустя 4 часа, 37 минут, 30 секунд (27.08.2010 - 06:41) twin написал(а):
Ты считаешь, что тут специаличты по полтергейсту и чревовещанию с телепатией за одно? smile.gif
Код показывай.

Спустя 3 часа, 5 минут, 39 секунд (27.08.2010 - 09:46) Dingo написал(а):
Invis1ble Интересная проблема, а ты попробуй заговорить $_GET. Конечно результат будет нулевой, но все равно, авось.

Спустя 7 минут, 23 секунды (27.08.2010 - 09:54) Basili4 написал(а):
Dingo
Это на $_GET порчу навели. Надо сначала её снять. Потомственный экстрасенс сниму порчу со всех суперглобальных массивов по фотографии. Излечу от нотисов, уведу от Попова. Сделаю оберег от Хакеров.

Спустя 3 часа, 41 минута, 45 секунд (27.08.2010 - 13:35) Invis1ble написал(а):
laugh.gif
public/index.php
<?php
try

{
if (!defined('FORUM'))
throw new Exception('Попытка взлома. Доступ запрещен.');
}
catch (Exception $exception)
{
echo $exception->getMessage();
}

session_start();

$page = isset($_GET['page']) ?
str_replace(array('.', '/'), '', $_GET['page']):
Base::App()->config['public']['default page'];

$logicFilePath = PUBLIC_DIR . 'logic' . DIR_SEPARATOR . $page . '.php';

if (file_exists($logicFilePath))
include ($logicFilePath);

$viewFilePath = PUBLIC_DIR . 'view' . DIR_SEPARATOR . $page . '.php';

ob_start();

if (file_exists($viewFilePath))
include ($viewFilePath);

$contents = ob_get_contents();

ob_end_clean();

View::Assign('contents', $contents);

$layoutFilePath = PUBLIC_DIR . 'layout.php';

if (file_exists($layoutFilePath))
include ($layoutFilePath);
else
echo $contents;
include ('./debug/debug.php'); define ('TRACE', true); dbg($_GET);
?>

public/logic/logout.php
<?php
try

{
if (!defined('FORUM'))
throw new Exception('Попытка взлома. Доступ запрещен.');
}
catch (Exception $exception)
{
echo $exception->getMessage();
}

unset($_SESSION['user']);

Base::Redirect(VIRTUAL_PATH);
?>

public/view/topic-list.php
<?php
try

{
if (!defined('FORUM'))
throw new Exception('Попытка взлома. Доступ запрещен.');
}
catch (Exception $exception)
{
echo $exception->getMessage();
}
?>
<h3>Привет, <?php echo isset($_SESSION['user']['nickname']) ? $_SESSION['user']['nickname'] : 'Неизвестный'; ?>!</h3>
<?php
if (!isset($_SESSION['user']['authorisation']))
{
?>
<a href="<?php echo VIRTUAL_PATH . '?page=authorisation'; ?>">Вход</a><br>
<?php
}
else
{
?>
<a href="<?php echo VIRTUAL_PATH . '?page=logout'; ?>">Выход</a><br>
<?php
}
?>
<a href="<?php echo VIRTUAL_PATH . '?page=registration'; ?>">Регистрация</a><br>
<
a href="<?php echo VIRTUAL_PATH . '?page=new-topic'; ?>">Новая тема</a><br>
<
h4>Список топиков</h4>
<
table align='center' width='100%' border=1>
<
tr>
<
td><b>тема</b></td>
<
td><b>создана</b></td>
<
td><b>просмотров</b></td>
<
td><b>ответов</b></td>
<
td><b>обновлена</b></td>
</
tr>
<?php
if (View::IsAssigned('topics'))
{
foreach ($topics as $topic)
{
?>
<tr>
<
td>
<
a href="<?php echo VIRTUAL_PATH . '?page=comment-list&id=' . $topic['id']; ?>"><?php echo htmlspecialchars($topic['name']); ?></a><br>
<?php echo htmlspecialchars($topic['description']); ?>
</td>
<
td>
<?php echo htmlspecialchars($topic['created_at']); ?><br>
<?php echo htmlspecialchars($topic['author']['nickname']); ?>
</td>
<
td><?php echo $topic['viewing_count']; ?></td>
<
td><?php echo $topic['comment_count']; ?></td>
<
td>
<?php echo htmlspecialchars($topic['updated_at']); ?><br>
<?php echo htmlspecialchars($topic['update_writer']['nickname']); ?>
</td>
</
tr>
<?php
}
}

?>
</table>
<?php
if (View::IsAssigned('pagination'))
echo View::Get('pagination')->Render();
?>


Вот... Все ссылки в topic-list.php работают нормально, кроме ссылки на "Выход", кстати заметил что все-равно как называется "page" - "logout" или "exit" например.

Спустя 4 минуты, 48 секунд (27.08.2010 - 13:40) Invis1ble написал(а):
После перехода по ссылке "Выход" массив $_GET в public/index.php оказывается пустой.. sad.gif

Спустя 23 минуты, 43 секунды (27.08.2010 - 14:04) Gradus написал(а):
танцы с бубном smile.gif
Base::Redirect(VIRTUAL_PATH);

шо это ? похоже на редирект smile.gif проверь какие заголовки отдаёт , поэтому может и сбрасывает

Спустя 8 минут, 7 секунд (27.08.2010 - 14:12) Invis1ble написал(а):
Gradus
это я конечный вариант logout.php показал. На самом деле я туда помещаю для проверки
<?php
exit();
?>

но оно не срабатывает...

Спустя 8 минут, 12 секунд (27.08.2010 - 14:20) linker написал(а):
Цитата
После перехода по ссылке "Выход" массив $_GET в public/index.php оказывается пустой..
Это естественно, каким же ему еще быть.
Base::Redirect(VIRTUAL_PATH);
замени на
header('Location: index.php?page=topic-list');
и увидишь как все чудесным образом заработало

Спустя 5 минут, 7 секунд (27.08.2010 - 14:25) Invis1ble написал(а):
linker
Я ж говорю, logout.php вообще не запускается, а Redirect в нем

Спустя 24 минуты, 52 секунды (27.08.2010 - 14:50) Invis1ble написал(а):
logout.php не инкдюдится в index.php

Цитата
$page = isset($_GET['page']) ?
str_replace(array('.', '/'), '', $_GET['page']):
Base::App()->config['public']['default page'];

$logicFilePath = PUBLIC_DIR . 'logic' . DIR_SEPARATOR . $page . '.php';

if (file_exists($logicFilePath))
include ($logicFilePath);


т.к. $_GET['page'] не задано, а инклюдится Base::App()->config['public']['default page'] , которое в свою очередь - topic-list.php

Спустя 1 час, 11 минут, 16 секунд (27.08.2010 - 16:01) Nord написал(а):
Вы проверьте, после какой строчки $_GET['page'] внезапно исчезает

P.S.

try {
if (!defined('FORUM'))
throw new Exception('Попытка взлома. Доступ запрещен.');
} catch (Exception $exception) {
echo $exception->getMessage();
}
session_start();

Странная защита от взлома. Если FORUM не определен, выводится сообщение "Попытка взлома", но скрипт продолжает работу и session_start() вызывает ошибку "Заголовки уже отправлены"

Спустя 21 минута, 20 секунд (27.08.2010 - 16:23) Invis1ble написал(а):
Nord
ну с защитой да, там exit(); после echo $exception->getMessage(); надо поставить...

a насчет "исчезновения" $_GET['page'] - исчезает сразу после нажатия на ссылку "Выход":
в главный index.php (на который ведет ссылка "Выход") вставляю например echo $_GET['page'] - Notice: Undefined index: page in C:\www\html\forum\index.php on line 2 sad.gif

Спустя 18 минут, 19 секунд (27.08.2010 - 16:41) Guest написал(а):
Цитата (Basili4 @ 27.08.2010 - 06:54)
Потомственный экстрасенс сниму порчу со всех суперглобальных массивов по фотографии. Излечу от нотисов, уведу от Попова. Сделаю оберег от Хакеров.

не по фотографии, а по сорцу biggrin.gif

а уводить от Попова к кому? к тебе?

Спустя 56 секунд (27.08.2010 - 16:42) Guest написал(а):
Invis1ble
а ты его передай авось не исчезнет

Спустя 15 минут, 28 секунд (27.08.2010 - 16:58) Invis1ble написал(а):
Guest
передаю, вводя ручками в адресную строку http://127.0.0.1/?page=logout
все равно НОТАЙС

Спустя 1 минута, 22 секунды (27.08.2010 - 16:59) Nord написал(а):
Цитата

a насчет "исчезновения" $_GET['page'] - исчезает сразу после нажатия на ссылку "Выход":
в главный index.php (на который ведет ссылка "Выход") вставляю например echo $_GET['page'] - Notice: Undefined index: page in C:\www\html\forum\index.php on line 2 

Может у вас действительно где-то просто редиректится, напишите в самом начале die($_GET['page']), чтобы дальше не шло

Правка: хотя, наверно тогда бы написало, что типа заголовки уже отправлены

Спустя 18 минут, 59 секунд (27.08.2010 - 17:18) Invis1ble написал(а):
интересно вот что:
если в строке набрать не http://127.0.0.1/forum/?page=logout , a http://127.0.0.1/forum/index.php?page=logout то все нормально, get-параметр передается. Вот .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 "C:/www/html/log/forum/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]

Спустя 1 час, 48 секунд (27.08.2010 - 18:19) Invis1ble написал(а):
короче я обнаружил источник проблемы:

у меня в натройках оперы стояло
Проверять, обновлялась ли на сервере сохраненная в кэш страница
Проверять документы: Никогда

я поставил "Всегда" и проблема решилась

токо я так и не понял какое это имеет отношение к $_GET массиву... Хрень какая-то... Убил на этот шит сутки...

Спустя 13 минут, 12 секунд (27.08.2010 - 18:32) Invis1ble написал(а):
Кто-нибудь может объяснить жалкому нубу мне, каким образом связан $_GET массив с кэшем в опере?

Спустя 2 часа, 20 минут, 47 секунд (27.08.2010 - 20:53) twin написал(а):
Цитата
а уводить от Попова к кому? к тебе?

Сюда для начала.

По теме - а почему ты грешишь на GET?
<?php
try

{
if (!defined('FORUM'))
throw new Exception('Попытка взлома. Доступ запрещен.');
}
catch (Exception $exception)
{
echo $exception->getMessage();
}

unset($_SESSION['user']);

Base::Redirect(VIRTUAL_PATH);

Тут ты удаляешь текущую переменную, а сессия остается.
В конец этого файла попорбуй затолкать
session_destroy();
мож чё и получится...

Спустя 2 часа, 44 минуты, 49 секунд (27.08.2010 - 23:37) Invis1ble написал(а):
twin
Задумки уничтожать сессию не было.
Характерная особенность - ссылка "Выход" срабатывала при первой авторизации, а потом при повторной авторизации ссылка "выход" не работала...
Проблема решена, как я уже написал в предыдущем посте, неожиданным образом...

Спустя 7 часов, 47 минут, 42 секунды (28.08.2010 - 07:25) Basili4 написал(а):
Guest
От Попова куда угодно, лишь бы начал думать что пишет

Спустя 6 часов, 46 минут, 52 секунды (28.08.2010 - 14:12) Invis1ble написал(а):
Basili4
да причем тут Попов, я его в глаза не видел. И перед тем как писать - 100 раз думаю. Вот лучше бы объяснили, почему после изменения указанной настройки в браузере проблема исчезла

Спустя 50 минут, 52 секунды (28.08.2010 - 15:03) Basili4 написал(а):
Invis1ble
Я могу это объяснить только "фазой луны"

Спустя 6 минут, 41 секунда (28.08.2010 - 15:10) Invis1ble написал(а):
Цитата
Я могу это объяснить только "фазой луны"

хорошее объяснение huh.gif
А если серьезно?


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

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