English 中文(简体)
我如何适当拦截了440个PHP错误?
原标题:How do I intercept a 404 error in PHP properly?

基本上,我所做的是,利用ErrorDocument在接驳时拦截了404份文件,并把它放在空洞。 php.SedFile 然后将档案名称从圆顶中排出,然后在我sql数据库中搜索,获取数据并应用适当的头盔。

在我的发展中环境中(最新的LAMP服务器在乌旁边运行),所有东西似乎都行得通,但该网站正在GoDaddy接待,头盔返回似乎有一些问题。 我认为,GoDaddy返回了404人,然后发送了数据。

结果是,当我正确点击以这种方式处理的一个环节时,我可以拯救As,而所有东西都会奏效。 如果档案是图像,它就没有问题。 但是,如果我只是点击这个环节,而这是一个要下载而不是放在浏览器上的文件,那么我就在所有浏览器上都拿到“不是创始错误”。 共有404个错误,无论档案是否成功转让。 我的法典如下:

$folder = explode( "/" , $_SERVER["REQUEST_URI"] );
$pageName = $folder[sizeof($folder)-1];

$sql = "SELECT data, mimeType, OCTET_LENGTH(data) AS size FROM tblFiles WHERE fileName =  ".$pageName."  AND active=1;";

$result = mysql_query("$sql") or die();

$data = mysql_fetch_array($result);

header("HTTP/1.0 200 OK");
header("Content-Type: ".$data[ mimeType ]);
header("Content-Length: ".$data[ size ]);

echo $data[ data ];

以及htaccess案:

ErrorDocument 404 /FILES/dbFiles/getFile.php

现在,这是在《国际会计准则》/dbFiles的全文查阅档案。 我不知道GoDaddy是否指望在那里会遇到更多的困难,但似乎像在我自己的服务器上写的那样工作。

I ve tried numerous combinations of header info with no positive effect.

我的法典显然行之有效,但我似乎无法阻止404人发生。

Thanks! -Jer

最佳回答

查阅

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ getFile.php?file=$0 [QSA,L]

这将把所有尚未存在的URLs引导到getFile.php 则不产生404份。 如果文字在贵国数据库中找不到内容,则确保d/m>404。

Inside your PHP file, use:

if(@$_GET[ file ]) {

    //Your code here.  Use $_GET[ file ] instead of $_SERVER["REQUEST_URI"]

} else {
    //Weird.  This file was directly accessed.
    die();
}
问题回答

Oh man, nice Solutions. 我的情况是这样:当有人要求,js 档案确实存在时,我从另一个名录中将javascript内容纳入主流,而javascript的实际内容只是重的,而现状是404。

为了我的目的,这是帮助的,希望它也有助于其他人:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) route/index.php [L,QSA]




相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...

热门标签