[英]block php page in public view
在公共视图中阻止 php 页面。 但仍然可以被其他页面使用。
嗨,我正在一个网站上工作,它有 ajax 实时搜索(search.php),search.php 从另一个 php 页面调用以在数据库中搜索,它工作得很好,问题是可以输入 search.php在 url 中并显示数据库中的所有数据。 我尝试谷歌搜索它,仍然没有明确的想法如何解决它。 我读过它可以在 .htaccess 中完成,也可以通过更改权限来完成......我只是想了解如何正确解决问题。 谢谢
我将如何做到这一点将通过向表单添加另一个 $_POST 变量.. 类似于以下内容..
$.post('search.php', {search: 'search term', secret: 'ajax'}, function(r){
$(insert).html(r)
})
然后在帖子页面上..
if(isset($_POST['secret']) && $_POST['secret'] == 'ajax'){
// do your submitting..
} else {
// display some kind of error message since the secret post wasnt found
}
试试这个,确保把它放在 search.php 页面的顶部:D
if(basename(__FILE__) == basename($_SERVER['PHP_SELF'])) send_404();
function send_404()
{
header('HTTP/1.x 404 Not Found');
print '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">'."\n".
'<html><head>'."\n".
'<title>404 Not Found</title>'."\n".
'</head><body>'."\n".
'<h1>Not Found</h1>'."\n".
'<p>The requested URL '.
str_replace(strstr($_SERVER['REQUEST_URI'], '?'), '', $_SERVER['REQUEST_URI']).
' was not found on this server.</p>'."\n".
'</body></html>'."\n";
exit;
}
在 search.php 文件的第一行尝试类似的操作
/***************DO NOT ALLOW DIRECT ACCESS************************************/
if ( (strpos( strtolower( $_SERVER[ 'SCRIPT_NAME' ] ), strtolower( basename( __FILE__ ) ) ) ) !== FALSE ) { // NOT FALSE if the script's file name is found in the URL
header( 'HTTP/1.0 403 Forbidden' );
die( '<h2>Forbidden! Access to this page is forbidden.</h2>' );
}
/*****************************************************************************/
我通过让非登陆 PHP 页面位于公共 html 文件夹之外来解决这个问题,通常位于公共 html 文件夹正上方的 /php 或 /lib 文件夹中。 这种假设您的所有登录页面都包含某种形式的引导程序,用于设置您的包含路径以包含 /php 文件夹。
另一个简单的解决方案是让你的登陆 php 文件设置一个值或常量,如果没有设置值,你的包含拒绝执行 - 这样你就不能直接执行 php 文件。
索引.php
<?php
define(VALID_REQUEST, 1);
include "include.php"
...
包含.php
<?php
if (!defined(VALID_REQUEST)) { exit; }
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.