簡體   English   中英

在公共視圖中阻止 php 頁面

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM