2012-03-13 9 views
0

までそれを覚えている:window.open()間違ったURLを開きます。私はそれが一度だけ動作する新しい人を作成するための新しいウィンドウを開くために、コードの下に使用した場合、ブラウザは、ログアウト

<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は、彼/彼女に応じて、一部の人の詳細データを表示するために使用されますidを渡し、nullを渡すと新しいものを作成し、ヘッダー関数を使用して新しいIDで自身にリダイレクトします。コードは大丈夫に見えますが、私は以下に貼り付けます。

<?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ウィンドウを閉じて新しい人物を作成したいときは、新しい人物ではなく前に作成した人物を開きます。 ブラウザのデータを消去するまで(ログアウトするまで)、クロム、FFで問題が発生します。私は手動で_HTTPを入力しても

://www.mydomain:?= 1 ID = nullを&ページでは、それは _HTTPに例えば、私をリダイレクト//www.mydomain.com.pl/admin/index_details.php。 com.pl/admin/index_details.php?id=1666 &ページ= 1でない _http://www.mydomain.com.pl/admin/index_details.php?id = 1667 &ページ= 1 (Iちょうどユーザ1666を作成した)。

これは私が修正する必要がある他の人が書いたCMSです。私はセッション、キャッシュ、クッキー内に格納されているかもしれないと思います...どのツール/手がかりを見つけて修正するか?私は毎日ウェブ開発者ではありません。

私のクライアントは、以前はうまく機能していたと主張しています。そのため、最近PHPやjavascript、またはすべてのブラウザで何か問題が起きた可能性があります。

+0

ここにindex_details.phpのコードを投稿するといいですか?ページがすでにnull値で訪問されていて、それが私たちが探しているものである場合に、以前に作成されたIDにリダイレクトするようにプログラムに指示する条件が存在する可能性があります。 –

答えて

0

私はついに私の質問に答えました。 は、このコードを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メタタグのヘッダーを見ているので、そうではないと思いました。ヘッダー( 'Location:...')の前に少数のヘッダーを送るようにPHPに依頼すると、ブラウザーはリダイレクトを忘れてしまいます。

関連する問題