所以我有一个文件,用户永远不应该直接访问,但包含在另一个PHP文件中.如果直接调用该文件,它将生成HTTP状态404未找到,以欺骗可能的攻击者,使该文件不存在.但是,如果黑客可以判断404是由PHP生成的还是"自然"的话,那么标题的整个点就会丢失.那么有可能判断404是由服务器自然生成的(因为文件确实不存在)还是PHP代码?
PS:我知道这个问题可能看起来很奇怪哈哈
背景:我是CakePHP的新手.我有一个小的测试网站(目前主要是静态视图和联系表格),在我学习的时候可以玩.在localhost(Ubuntu上的Apache)上一切正常,所以我将它部署到共享主机帐户(由Lunarpages提供).我将/ cake文件夹移出了正常的目录结构(所以我可以将它用于多个应用程序)并且我相应地重新配置了我的webroot的index.php路径.
问题:
setFlash消息不会显示.甚至做一个除了之外什么都不做的简单视图$this->Session->setFlash('message');.我没有收到任何错误消息,闪存只是没有显示重定向不起作用.例如,在联系表单完成后我想$this->redirect( array( 'action' => 'success' ), null, true);但服务器会抛出错误:
警告(2):无法修改标题信息 - 已经发送的标题(输出从/routetoapp/config/routes.php:40开始)[CORE/cake/libs/controller/controller.php,第742行]
其他所有东西似乎都像在localhost上一样工作 - URL重写,组件加载,模型验证.我不知道我的问题是相关的还是单独的问题
到目前为止的疑难
Configure::write('Session.save', 'val');但两者都没有区别.我想我错过了一些简单的东西,但我是这个框架的新手,所以我不确定在哪里看.
可以使用哪些HTTP标头来确定浏览器是否启用了javascript?
我正在使用Winsocks 2.2编写一个使用Visual Studio 2010的C++网络游戏,并决定使用我的网络服务器存储游戏的活动服务器列表是个好主意.当服务器启动时,它将在我的Web服务器上注册,退出时取消注册; 当有人访问服务器列表时,服务器本身将尝试清理列表(这种行为我仍在设计不涉及服务器上的太多工作;但我想当游戏服务器试图添加自己时,我的php文件将使用fsockopen来检测它是否可以从外部网络实际访问服务器,如果没有,服务器将无法添加,直到它可以正确设置端口转发或以某种方式解决问题).
好的,经过一些研究,我想出了如何使用TCP连接从服务器获取某些东西来格式化HTTP服务器的专用消息.这就是我所拥有的:
if(FAIL == Connection::Get_Connection(&m_Connection, networkSettings.ServerListAddress, 80))
{
return FAIL;
}
m_Connection.SendMsg("GET /servers.php HTTP/1.1\r\nHost: cyclotron.leetnightshade.com\r\nUser-Agent: CycloTron\r\n\r\n");
Run Code Online (Sandbox Code Playgroud)
我期待回到格式正确的数据,我并没有完全得到.这是我得到的:
2f
Server Count:1
129.21.138.1,40000,Depth of Hell
0
Run Code Online (Sandbox Code Playgroud)
这是一些带有所有头信息的垃圾的另一个输出:
HTTP/1.1 200 OK
Date: Tue, 12 Apr 2011 23:23:11 GMT
Server: Apache
X-Powered-By: PHP/5.2.17
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=8254688ee345202bd177d57e4ba339b2; path=/
Set-Cookie: PHPSESSID=73eae89f61e7268f433af9bdfe299173; path=/
Set-Cookie: PHPSESSID=8fb5d6fd9f1023bb00290b4daa3c7952; path=/
Connection: close
Transfer-Encoding: chunked
Content-Type: text; charset=us-ascii
e
Server Count:1
21
129.21.138.1,40000,Depth of …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用PHP和MySql数据库显示多个图像,即使使用while循环我没有得到所有图像,我只得到一个,我的意思是表中的第一个.有什么问题 ?
我使用的是表ID_IMAGE (int, pk, auto increment)和myImage (blob)
$query = mysql_query("SELECT myImage FROM image");
while($data=mysql_fetch_array($query)) {
header('Content-type: image/jpg');
echo $data['myImage'];
}
Run Code Online (Sandbox Code Playgroud) 为什么这个重定向不起作用?
$menu = 'menu';
$item = 'item';
header('HTTP/1.1 303 See Other');
header("/{$menu}/{$item}/");
Run Code Online (Sandbox Code Playgroud) 试图在动态生成的图像上设置缓存响应头,我得到一个奇怪的错误:
ArgumentOutOfRangeException未被用户代码处理
指定的参数超出了有效值的范围.
参数名称:utcDate
我正在从数据缓存中读取文件的最后写入时间,然后调用
Response.Cache.SetLastModified(lastWriteTime.Value.ToUniversalTime());
Run Code Online (Sandbox Code Playgroud)
{2011-07-25 18:09:56}正如我所期望的那样,最后写入时间的值是......我不知道为什么会出错.
此方法的MSDN文档包含相当神秘的声明(我的重点):
Last-Modified HTTP标头时间标记文档,其DateTime值指示上次修改文档的时间.
如果违反了缓存限制性层次结构,则此方法将失败.
SetLastModified是在.NET Framework 3.5版中引入的.有关更多信息,请参阅.NET Framework版本和依赖项.
什么是缓存限制层次结构?我是否违反了一个?如果没有,为什么最后修改时间被拒绝?
使用.htaccess,我将PHP处理程序设置为我的所有.css和js,以便输出基于用户代理的代码:
AddHandler application/x-httpd-php .css .js
Run Code Online (Sandbox Code Playgroud)
例如:
<?PHP if ($CurrentBrowser == 'msie') { ?>
.bind('selectstart', function(event) { ... })
<?PHP } ?>
Run Code Online (Sandbox Code Playgroud)
所以,事实上,我的代码文件是动态创建的,但可以被认为是静态文件.这是因为,一旦他们第一次编译,浏览器就可以从缓存中取回它们并重复使用它们直到我更改它们的内容.这就是我使用指纹识别/版本控制和长时间过期的原因:
[INDEX.PHP]
<script type="application/javascript" src="<?PHP echo GetVersionedFile('/script.js'); ?>"></script>
<script type="application/javascript" src="/script.1316108341.js"></script>
[.HTACCESS]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule "^(.+)\.(\d+)\.(css|js)$" $1.$3 [L]
Run Code Online (Sandbox Code Playgroud)
问题是这些文件,即使我用适当的标头发送它们,也不会被任何浏览器缓存(我从来没有得到304代码,总是200).这是我的服务器响应的日志:
[CHROME]
Request URL:http://127.0.0.1:8888/script.1316108341.js
Request Method:GET
Status Code:200 OK
-----
Cache-Control:max-age=31536000, public
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:6150
Content-Type:application/javascript
Date:Thu, 15 Sep 2011 21:41:25 GMT
Expires:Fri, 14 Sep 2012 21:41:25 GMT
Keep-Alive:timeout=5, max=100
Server:Apache/2.2.17 (Win32) PHP/5.3.6
Vary:Accept-Encoding
X-Powered-By:PHP/5.3.6
[MOZILLA]
Request …Run Code Online (Sandbox Code Playgroud) 需要一些帮助来理解这两个重定向之间的区别是:
header( "HTTP/1.1 307 Temporary Redirect" );
header( "Location: http://www.someurl.com/" );
Run Code Online (Sandbox Code Playgroud)
要么
header( "Location: http://www.someurl.com/" );
Run Code Online (Sandbox Code Playgroud)
使用HTTP标头在第二种情况下会发生什么?默认情况下有任何设置,或者如果我想暂时重定向某些内容,那是错误的吗?
第二个是错的还是两者没有实际差异?如果我只使用"位置",则无法找到默认情况下发送的HTTP标头的任何文档.
提前致谢
http-headers ×10
php ×5
caching ×2
http ×2
.htaccess ×1
apache ×1
asp.net-mvc ×1
c++ ×1
cakephp ×1
cakephp-1.3 ×1
css ×1
html ×1
image ×1
javascript ×1
mysql ×1
redirect ×1
tcp ×1
winsock2 ×1
winsockets ×1