window.open () Открывает неправильный URL.Браузер запоминает его до выхода - PullRequest
0 голосов
/ 13 марта 2012

Когда я использую приведенный ниже код для открытия нового окна для создания нового человека, он работает только один раз:

<a class="special" href="#" onclick="window.open('http://www.myurl.blahblah/index_details.php?id=null&amp;page=1', 'personDetails', 'left=50, top=20, width=850, height=440, toolbar=no, scrollbars=no, statusbar=no');">New worker</a>

Этот index_details.php используется для отображения некоторых данных о человеке в зависимости от его / ее идентификатора,и когда я передаю ноль, он создает новый и перенаправляет с помощью функции заголовка к себе с новым идентификатором.Код выглядит нормально, но я вставляю его ниже:

<?php
require_once('start_session.php');
require_once('constant.data.php');
//**********************************************************************************//
$main = array();
$main_phrases = array(
                    'error' => iconv('windows-1250', 'utf-8', 'Error occur!')
                    );

$db = new DB();
//**********************************************************************************//

if ($_GET['id'] == "null")
    {
    $sql = 'INSERT INTO main_information (last_name, first_name, lastmod, lastentry) VALUES ("NEW","WORKER", CURRENT_DATE, CURRENT_DATE);';
    $result = $db->dbQuery($sql);
    $sql = 'SELECT MAX(id) AS lastId FROM main_information where last_name="NEW" and first_name="WORKER";';
    $result = $db->dbQuery($sql);
    $row = $db->dbFetchArray($result);
    $li = $row['lastId'];
    $sql = 'INSERT INTO additional_information (id_person, blacklist, medical_cert, application_ready, supervisor) VALUES ('.$li.',"N", "N", "N", "N");';
    $result = $db->dbQuery($sql);
    header('Location: ' . _MAIN_DOMAIN_ . 'index_details.php?id=' . $li . '&page=1');
    }
//**********************************************************************************//
if (isset($_FILES['face_photo']) && $_FILES['face_photo']['name'] != '' && $_GET['id'] != 'null' && $_GET['id'] != '')
    {
    $ext = substr($_FILES['face_photo']['name'], -4, 4);
    $fileName = 'photo' . $_GET['id'] . $ext;
    $uploadfile = SERVER_DIR . 'photo/' . $fileName;
    if (move_uploaded_file($_FILES['face_photo']['tmp_name'], $uploadfile)) 
        {
        $sql = 'UPDATE additional_information SET photo = "'.$fileName.'" WHERE id_person = '.intval($_GET['id']).';';
        if ($db->dbQuery($sql))
            header('Location: ' . _MAIN_DOMAIN_ . 'index_details.php?id=' . $_GET['id'] . '&page=1');
        }
    else    die('Uploaded file is incorrect!');
    }
//**********************************************************************************//
$smarty     = new Smarty;
$smarty->assign('main', $main);
$smarty->template_dir = SERVER_DIR.'tpl/';
$smarty->compile_dir = SERVER_DIR.'templates_c';
$smarty->cache_dir = SERVER_DIR.'cache';
$smarty->display('default_details.tpl');

?>

Моя проблема в том, что привязка из первого фрагмента работает только один раз.Когда я закрываю окно personDetails и хочу создать нового человека, оно открывает ранее созданное, а не новое.Проблема возникает в ie, chrome, FF, пока я не очищаю данные браузера (что выводит меня из системы).

Даже когда я вручную ввожу _ http://www.mydomain.com.pl/admin/index_details.php?id=null&page=1, он перенаправляет меня, например, на _ http://www.mydomain.com.pl/admin/index_details.php?id=1666&page=1, а не на _ http://www.mydomain.com.pl/admin/index_details.php?id=1667&page=1 (при условии, что я только что создал пользователя 1666).

Это CMS, написанная кем-то другим, которую я должен исправить.Я предполагаю, что это может быть что-то, хранящееся в сеансе, кэше, куки, ... Какие-нибудь инструменты / подсказки, как найти и исправить это?Я не веб-разработчик каждый день.

Мой клиент утверждает, что некоторое время назад он работал нормально, так что может быть что-то изменилось в PHP или javascript или во всех браузерах в последнее время?

1 Ответ

0 голосов
/ 14 марта 2012

Я наконец нашел ответ на свой вопрос.Добавление к index_details.php помогло:

header( "Expires: Mon, 20 Dec 1998 01:00:00 GMT" );
header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
header( "Cache-Control: no-cache, must-revalidate" );
header( "Pragma: no-cache" );

.

Сначала я подумал, что это не так, поскольку я видел эти заголовки в некоторых метатегах html, включенных в страницы.Запрос PHP отправить еще несколько заголовков перед заголовком ('Location: ...') заставляет браузер забыть о перенаправлении.

...