-1

パブリック ビューで php ページをブロックします。ただし、他のページで使用することはできます。

こんにちは、私は ajax ライブ検索 (search.php) を含む Web サイトに取り組んでいます。search.php は別の php ページから呼び出してデータベースを検索します。問題なく動作します。問題は、search.php を入力できることです。 url で、データベースからのすべてのデータを表示します。私はそれをグーグルで試してみましたが、まだそれを解決する方法がはっきりしていません。パーミッションを変更することによって、.htaccessでも実行できることを読みました...問題を適切に修正する方法を知りたいだけです。ありがとう

4

4 に答える 4

1

別の $_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
}
于 2012-11-28T01:58:14.753 に答える
0

これを試して、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;
}
于 2012-11-28T01:56:55.440 に答える
0

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>' );
}
/*****************************************************************************/
于 2012-11-28T01:58:39.640 に答える
0

この問題を解決するには、非ランディング PHP ページをパブリック html フォルダーの外側 (多くの場合、パブリック html フォルダーのすぐ上の /php または /lib フォルダー) に配置します。これは、すべてのランディング ページに、インクルード パスを設定して /php フォルダーを含める何らかの形式のブートストラップが含まれていることを前提としています。

別の簡単な解決策は、ランディング php ファイルに値または定数を設定し、値が設定されていない場合はインクルードの実行を拒否することです。この方法では、php ファイルを直接実行できません。

index.php

<?php
define(VALID_REQUEST, 1);
include "include.php"
...

include.php

<?php
if (!defined(VALID_REQUEST)) { exit; }
...
于 2012-11-28T02:02:33.160 に答える