[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не передается переменная в Опере
sitebuilder
Переменная action передается на вторую страницу так:

<input id="agree" type="checkbox" onclick="location.replace('subs/?action=phone');">


Либо так:

<a href="subs/?action=phone">


У принимающей страницы код такой:

<?php

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

error_reporting(E_ALL);
ini_set('display_errors', 1);

define('SELF', dirname(__FILE__) . '/');
define('ROOT', realpath(SELF . '../') . '/');

if (isset($_GET['erotic']))
{
define('URL', '/erotic1/subs/?erotic=1');
}
else
{
define('URL', '/erotic1/subs/?work=1');
}

include SELF . 'lib/function.php';
include SELF . 'lib/config.php';
include SELF . 'lib/request.php';

session_set_cookie_params(365*24*60*60);
session_start();

if (get('action')) {
$_SESSION['action'] = get('action');
myredirect(URL);
}

$action = session('action', 'phone');
$ACTIONS = array('phone', 'code', 'delete', 'rules', 'finish', 'deleteok');

if (! $action || ! in_array($action, $ACTIONS)) {
die('Unknown action');
}

$logged = true;

if (! in_array($action, array('rules', 'delete')) && ! $logged) {
myredirect('/');
}

$innerContext = array();
$request = new Request($CNF);

if ($action === 'phone') {
if ($_POST) {
if (post('phone')) {
$phone = str_replace('+', '', post('phone'));
if (validate_phone($phone)) {
$_SESSION['phone'] = $phone;
$request->setPhone($phone);
$request->submit(Request::ACTION_CREATE);
if ($request->error()) {
$innerContext['error'] = $request->error();
} else {
myredirect(URL . '&action=code');
}
}
else {
$innerContext['error'] = '<br>Ошибка';
}
}
}
}
elseif ($action === 'code') {
if (! session('phone')) {
myredirect(URL . '&action=code');
}
$innerContext['phone'] = session('phone');
$innerContext['agreement'] = loadTemplate("mts_agreement");
if ($_POST) {
if (post('code')) {
$request->setPhone(session('phone'));
$request->setCode(post('code'));
$request->submit(Request::ACTION_APPROVE);
if ($request->error()) {
$innerContext['error'] = $request->error();
} else {
$_SESSION['ok'] = $_POST ['code'];
myredirect(URL . '&action=finish');
//целевое действие на Вашем сайте

}
}
else {
$innerContext['error'] = '<br><br>Ошибка';
}
}
}
elseif ($action === 'delete') {
if ($_POST) {
if (post('phone')) {
$phone = str_replace('+', '', post('phone'));
if (validate_phone($phone)) {
$request->setPhone($phone);
$request->submit(Request::ACTION_CANCEL);
if ($request->error()) {
$innerContext['error'] = $request->error();
} else {
myredirect(URL . '&action=deleteok');
}
}
else {
$innerContext['error'] = '<br>Ошибка';
}
}
}
}


$context['logged'] = $logged;
$context['content'] = loadTemplate($action, $innerContext);
echo loadTemplate('index', $context);
?>


При выполнении в IE и FF все проходит на "ура" и выполняется "?action=phone". А в Опере выполняется то, что запрограммировано строчками:

    if (! $action || ! in_array($action, $ACTIONS)) {
die('Unknown action');
}



Уже голову сломал. Ну не понимаю, почему только в Опере возникает облом.

Команда print_r($_GET); на принимающей странице показывает отсутствие переменной action. Тем не-менее, в остальных браузерах все выполняется отлично, а в Опере - нет.

HELP PLEASE!



Спустя 1 минута, 51 секунда (26.02.2012 - 20:25) Игорь_Vasinsky написал(а):
Цитата
if (get('action'))

Спустя 8 минут, 25 секунд (26.02.2012 - 20:33) johniek_comp написал(а):
а чего у тебя session_start() в середине программы?

Спустя 5 минут, 49 секунд (26.02.2012 - 20:39) sitebuilder написал(а):
Цитата
а чего у тебя session_start() в середине программы?


Такой скрипт изначально был. Не я его писал. Я его лишь адаптирую под свои нужды.

Цитата
if (get('action'))


Поясните пожалуйста.

Спустя 2 минуты, 30 секунд (26.02.2012 - 20:42) Игорь_Vasinsky написал(а):
Цитата
if (get('action'))


if ($_GET('action'))


session_start(); - так до неё вывода нет, пускай стоит на месте

Спустя 1 час, 17 минут, 5 секунд (26.02.2012 - 21:59) sitebuilder написал(а):
get у меня это функция:

function get($strNames)
{
return _request($strNames, $_GET);
}

p.s.: не дайте утонуть теме плиз, проблема то не решилась.

Спустя 2 минуты, 8 секунд (26.02.2012 - 22:01) Игорь_Vasinsky написал(а):
ну название страницы поставь перед знаком вопроса.

Спустя 8 минут, 34 секунды (26.02.2012 - 22:09) sitebuilder написал(а):
Цитата (Игорь_Vasinsky @ 26.02.2012 - 19:01)
ну название страницы поставь перед знаком вопроса.

Да нет, все то же самое. Тем более что у меня страницу то открывает в любом случае, но переменная action туда не передается. И такое ТОЛЬКО в Опере.

Провел эсперимент: взял страницу, куда должна передаться переменная, очистил от кода, оставил только: <? print_r($_GET); ?> - переменная успешно передалась.

Спустя 31 минута, 15 секунд (26.02.2012 - 22:41) killer8080 написал(а):
Цитата (sitebuilder @ 26.02.2012 - 21:09)
И такое ТОЛЬКО в Опере.

Чушь

Цитата (sitebuilder @ 26.02.2012 - 21:09)
Провел эсперимент: взял страницу, куда должна передаться переменная, очистил от кода, оставил только: <? print_r($_GET); ?> - переменная успешно передалась.

ну и причем здесь Опера?

Спустя 17 минут, 35 секунд (26.02.2012 - 22:58) sergeiss написал(а):
Проверь - включены ли у тебя куки в Опере? Сессии используют куки для передачи идентификатора сессии. Если куки будут отключены, то и сессии не будут работать.

Спустя 1 день, 11 часов, 8 минут, 14 секунд (28.02.2012 - 10:06) sitebuilder написал(а):
Цитата (sergeiss @ 26.02.2012 - 19:58)
Проверь - включены ли у тебя куки в Опере? Сессии используют куки для передачи идентификатора сессии. Если куки будут отключены, то и сессии не будут работать.

СПАСИБО!! Дело было именно в этом. Странно, но опция "не принимать" кукисы была включена по умолчанию. Но ведь куча сайтов в сети использует кукисы.

Есть ли возможность передать нужные переменные не используя кукисы?
Быстрый ответ:

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