0

otherpage に含める必要がある php ページがありますが、直接は含めません。それを 1.php、もう一方のページを 2.php とします。

1.php

<?php
   if($_SERVER['REQUEST_URI'] == "/1.php"){
       header("Location:2.php");
   }
   else
   {
       //some code here
   }
?>

2.php

<?php
   include("1.php");
?>

これはうまく機能しlocalhost/1.php、リダイレクトされましlocalhost/2.php たが、1.php url の最後にlocalhost/1.php?somegetmethod=data入力することで、誰でもこのページにアクセスできることがわかりました。?something=somethinglocalhost/1.php で始まるすべての URL をリダイレクトできるコードの変更方法

4

5 に答える 5

2

このように部分文字列が特定の位置にあるかどうかを確認できます

if(strpos($_SERVER['REQUEST_URI'], "/1.php") === 0) {

これは(= が位置 0) でREQUEST_URI始まるかどうかをチェックします/1.php

于 2012-09-12T08:22:52.483 に答える
1

それを試してみてください:

if($_SERVER['SCRIPT_NAME'] == "/1.php")
于 2012-09-12T08:23:41.793 に答える
1

$_SERVER['PHP_SELF']の代わりに使用してください$_SERVER['REQUEST_URI']

于 2012-09-12T08:23:56.580 に答える
1

$_SERVER['REQUEST_URI']requetedページのURIが含まれています。あなたの場合は1.php?somegetmethod=data

次のようなコードを変更します。

if(strpos($_SERVER['REQUEST_URI'], "/1.php") === 0){
    header("Location:2.php");
}else{
    //some code here
}
于 2012-09-12T08:24:36.440 に答える
0

たとえば、MediaWiki、WordPress、および他の多くの同様のアプリケーションでよく目にするのは、次のとおりです。

1.php

if ( !defined( 'YOURAPPCONSTANT' ) ) {
  // You could choose to redirect here, but an exit would make just as much  
  // sense. Someone has deliberately chosen an incorrect url.
  echo "Cannot directly call this file.";
  exit( 1 );
}

2.php

define('YOURAPPCONSTANT', 'It is defined');
include('1.php');

そうすれば、2.php は、アクセスするために使用される URL に関係なく、アプリケーションのエントリになります。これははるかに安全で柔軟な方法であり、理由により頻繁に使用されると思います。

于 2012-09-12T08:29:33.430 に答える