私は PHP に不慣れで、このページを開いてドキュメントを表示すると、insert ステートメントが 2 回実行されるという問題があるようです。ドキュメントはエラーなしで表示されます。データベースでは、2 番目の挿入は 1 秒後です。Google chrome のみ、このページのみで発生します。IEには問題はありません。確認するFirefoxはありません。
view_document.php
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . '/../includes/core.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/../includes/connect.php');
$webusername = $_SESSION['webname'];
if (isset($_GET['document']))
{
$ainumber = (int) $_GET['document'];
if (!ctype_digit($_GET['document']) || !preg_match('~^[0-9]+$~', $_GET['document']) || !is_numeric($_GET['document']))
{
$_SESSION = array();
session_destroy();
header('Location: login.php');
}
else
{
$stmt = $connect->prepare("SELECT s_filename, s_reference FROM dmsmain WHERE s_ainumber = ?") or die(mysqli_error());
$stmt->bind_param('s', $ainumber);
$stmt->execute();
$stmt->bind_result($filename, $reference);
$stmt->fetch();
$stmt->close();
$file = $_SERVER['DOCUMENT_ROOT'] . '/../dms/files/' . $filename . '.pdf';
if (file_exists($file))
{
header('Content-Type: application/pdf');
header('Content-Disposition: inline; filename=' . basename($file));
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
header('Accept-Ranges: bytes');
readfile($file);
$stmt = $connect->prepare("INSERT INTO dmslog (s_reference, s_userid, s_lastactivity, s_actiontype) VALUES (?, ?, ?, ?)") or die(mysqli_error());
date_default_timezone_set('Africa/Johannesburg');
$date = date('Y-m-d H:i:s');
$actiontype = 'DL';
$stmt->bind_param('ssss', $reference, $webusername, $date, $actiontype);
$stmt->execute();
$stmt->close();
}
else
{
$missing = "<b>File not found</b>";
}
exit(0); // Correct Place?
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="../CSS/dms.css" rel="stylesheet" type="text/css" />
<link href="../favicon.ico" rel="icon" type="image/x-icon" />
<title>Denso Document Manager - View Document</title>
</head>
<body>
<div id="container">
<div id="header">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="28%"><img src="../images/Logo.gif"/></td>
<td width="43%"><h2 style="color:#666" align="left">Denso SA Document Management System</h2></td>
<td width="3%"> </td>
<td width="25%" align="right"><?php echo "Welcome $webusername <input class=\"look\" type=\"button\" onclick=\"parent.location='logout.php'\" value=' Logout ' />" ?></td>
</tr>
</table>
<br />
<table bgcolor="#6699CC" height="30px" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="20%" align="center"><p style="color:#FFF"><b>Document Search</b></p></td>
<td width="20%" align="center"><p style="color:#FFF"><b>Add Document</b></p></td>
</tr>
</table>
</div>
<div id="content">
<?php echo $missing; ?>
<br />
<br />
</div>
<div id="footer">
<table width="100%" bgcolor="#6699CC">
<tr>
<td height="25px"></td>
</tr>
</table>
<table width="100%" bgcolor="#000000">
<tr>
<td height="25px"></td>
</tr>
</table>
</div>
</div>
</body>
</html>
私が想定している私のHTTPアクセスレコード
[15/Nov/2012:10:14:32 +0200] "POST /dms/search.php HTTP/1.1" 200 5783 "http://www.denso.co.za/dms/search.php" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11"
[15/Nov/2012:10:14:33 +0200] "GET /favicon.ico HTTP/1.1" 404 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11"
[15/Nov/2012:10:14:34 +0200] "GET /dms/view_document.php?document=8 HTTP/1.1" 200 2965 "http://www.denso.co.za/dms/search.php" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11"
[15/Nov/2012:10:14:35 +0200] "GET /favicon.ico HTTP/1.1" 404 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11"
<img src=''>
リンクを確認しましたが、問題はありません。
レコードは favicon.ico リクエストがあることを示しているので、空白の favicon を作成して public_html フォルダーに配置し、そのようにページにリンクしました<link href="../favicon.ico" rel="shortcut icon" type="image/x-icon" />
残念ながら、ステートメントがまだ 2 回実行されるため、これは機能しませんでした。アップロード ページが挿入クエリを使用し、1 回実行されるため、ファビコンの問題であるかどうかはわかりません。
誰かが私が間違っている場所を教えてくれたり、正しい方向に向けてくれたりしたら、とても感謝しています