web-dev-qa-db-ja.com

PHP include()with GET attributes(include file.php?q = 1)

サーバーにあるphpファイルをGET属性を追加してinclude()したいと思います。しかし、それはうまくいきません:

include('search.php?q=1');

それが与えるエラー:

PHP Warning:  include(): Failed opening './search.php?q=1' for inclusion

'search.php'ファイルを開いてGET属性を送信する代わりに、文字通り 'search.php?q = 1'という名前のファイルを開こうとするようです。

* GET属性を指定しなくても機能することに注意してください。

include('search.php');
21
anonymous

あなたはこれをしたくありません:GETパラメータを渡せるようにするにはhttpリクエストをしなければなりません。 PHPこの方法で呼び出すスクリプトは、別のPHPプロセスで実行されます。

最適な方法は、ファイルをローカルに含めることです。

include('search.php');

そして、パラメータを手動でそれに渡すには、例えば.

$q = "1";
include('search.php');  // expects `$q` parameter

または、もっときれいに、あなたが持っているものは何でもsearch.php関数またはクラスに、パラメーターを指定して呼び出すことができます。

include('search.php');  // defines function my_search($q)  
my_search(1);       
28
Pekka

簡単ソリューションは、ファイルを含める前にGET値を設定することです。

$_GET['q'] = 1;
include('search.php);
19
Haza

$ _GET変数を書き換えてみてください。

$oldget=$_GET;
$_GET=array('q'=>'1');
include('search.php');
$_GET=$oldget;
2
Dador

うまくいきます!ありがとうございました

「include」ステートメントの前に変数を設定します

$q=1;
include("search.php");
2
zero cool

実際には、$_GET配列は少し汚れており、必要ありません。 includeステートメントの前に、ページに変数を設定するだけです。

$q=1;
include("search.php");

このように、$q変数はインクルードされたページで表示され、(当然)インクルードページで異なる設定ができます。

2
Matteo-SoftNet

おそらく他のオプションですが、独自の制限がありますが、divへのAJAXインジェクションの使用。これを行う最も簡単な方法は、jQueryを使用することです。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js" type="text/javascript"></script>
<script>$('#box').load('search.php?q=1');</script>

<div ID="box"></div>
1

私のように、これを「インクルード」リンクに永続的に含める必要がある場合は、jQueryで実行できます。

私が最近使用した解決策は次のとおりです。

最初に、インクルードされるファイルによって生成されるdivの場所を宣言します。

<div id="imgdiv"> </div>

次に、jQuery呼び出しを追加して設定しますが、GET変数をPHPで挿入します。

<script>                
window.onload = function(){     
        $("#imgdiv").load('php/show-img.php?id=<?php echo $i; ?>&name=<?php echo $name; ?>');           
}
</script>

うまくいけば、Java対応のブラウザが使用されていると仮定して、それを機能させるのに十分であろう。

1
Jamie M