Не передается переменная в Опере

SB
На сайте с 06.11.2011
Offline
11
853

Возникла проблема с Оперой. Во всех других браузерах все работает без проблем.

Цель: сделать переход на страницу с передачей ей переменной:

<input type="checkbox" onclick="location.replace('http://bla-bla-bla.ru/?work=1');">

На страницу переходит, но переменную не передает. В остальных браузерах все отлично. Как исправить ситуацию?

-

Предлагаю выгодное приватное решение для конверта Вашего трафика. Принимается трафик с доров и белых проектов. Обращайтесь в личку.
webrock
На сайте с 05.04.2010
Offline
261
#1
Site Builder:
Возникла проблема с Оперой. Во всех других браузерах все работает без проблем.

Цель: сделать переход на страницу с передачей ей переменной:



На страницу переходит, но переменную не передает. В остальных браузерах все отлично. Как исправить ситуацию?

-

Справка --> Сообщить о проблеме ...

а в комментариях описать подробно о проблеме.

Полный аудит сайтов. (/ru/forum/765361)
SB
На сайте с 06.11.2011
Offline
11
#2
webrock:
Справка --> Сообщить о проблеме ...

а в комментариях описать подробно о проблеме.

Спасибо, но задача не в том, чтобы помочь Опере устранить данный баг (хотя это и весьма благородно), а сделать так, чтобы решить проблему именно сейчас путем нахождения альтернативного, но рабочего метода.

Пробовал вручную в адресной строке Оперы вбивать:

http://bla-bla-bla.ru/?work=1

Открывается

http://bla-bla-bla.ru/?work=1
но переменную не передает.
edogs software
На сайте с 15.12.2005
Offline
775
#3

Как безумный, дичайший, но вероятный вариант:)

Проверку переменной Вы производите как $work, а не как $_GET['work'] и при этом у Вас в опере зачем-то когда-то установлена печенька (cookie) с именем work и пустым значением. Поэтому когда php все пихает в глобальные, то согласно правилу GPC (get/post/cookie) - последний переменной в work оказывается $_COOKIE['work'].

В любом случае сделайте в скрипте print_r($_GET); и покажите результат здесь. Сомнительно что переменная правда не передается.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
SB
На сайте с 06.11.2011
Offline
11
#4
edogs:
В любом случае сделайте в скрипте print_r($_GET); и покажите результат здесь. Сомнительно что переменная правда не передается.

Хм, Результатом стало:

Array ( [work] => 1 )

Похоже переменная и правда передается. Но почему не читается? В остальных браузерах такой проблемы то нет. Принимается переменная через $_GET['work']

dkameleon
На сайте с 09.12.2005
Offline
386
#5
Site Builder:
На страницу переходит, но переменную не передает.

а в адресной строке переменная есть после перехода? не режет ли опера чего?

Дизайн интерьера (http://balabukha.com/)
SB
На сайте с 06.11.2011
Offline
11
#6
dkameleon:
а в адресной строке переменная есть после перехода? не режет ли опера чего?

Да, есть:

http://bla-bla-bla.ru/?work=1
V
На сайте с 27.04.2009
Offline
46
#7
Site Builder:
Хм, Результатом стало:

Array ( [work] => 1 )

Похоже переменная и правда передается. Но почему не читается? В остальных браузерах такой проблемы то нет. Принимается переменная через $_GET['work']

Попробуйте через $_REQUEST['work']

Мое детище, которое холю и лелею (http://quicktuts.ru/) Беспроводной интернет, антенны Yota (http://skylink.ws/Yota/) Профессиональный хостинг. Бесплатный домен. Безлимитный трафик. (http://goo.gl/MMvWNj)
dkameleon
На сайте с 09.12.2005
Offline
386
#8
Site Builder:
Да, есть:

сможете извлечь ПОЛНЫЙ запрос, вместе с заголовками из оперы и других браузеров?

SB
На сайте с 06.11.2011
Offline
11
#9

Ладно, выкладываю сам код:

Переменная 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');
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий