簡體   English   中英

帶有GET屬性的PHP include()(包括file.php?q = 1)

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

我想在我的服務器上include()一個php文件,帶有額外的GET屬性。 但它不會起作用:

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

它給出的錯誤:

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

似乎它試圖打開一個名為'search.php?q = 1'的文件而不是打開'search.php'文件並向其發送GET屬性。

*請注意,如果我不添加任何GET屬性,它確實有效:

include('search.php');

您不希望這樣做:您必須執行http請求才能傳遞GET參數。 以這種方式調用的PHP腳本將在單獨的PHP進程中運行。

最佳方式是在本地包含文件:

include('search.php');

並手動傳遞任何參數,例如

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

或者,更清楚地說,將search.php任何search.php放入可以使用參數調用的函數或類中:

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

簡單的解決方案是在包含文件之前設置GET值。

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

嘗試重寫$ _GET變量。

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

它工作正常!! 謝謝

在“include”語句之前設置var

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

實際上,寫入$_GET數組有點臟,沒有必要。 您只需在include語句之前在頁面中設置一個變量:

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

這樣, $q變量將在您包含的頁面中可見,並且(顯然)可以在任何包含頁面中以不同方式設置。

如果像我一樣,你需要將它永久地放在'include'鏈接中,它可以用jQuery完成。

我最近使用的解決方案如下:

首先,聲明要包含的文件填充div的位置:

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

然后添加一個jQuery調用來填充它,但是用PHP插入你的GET變量:

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

希望這足以讓它工作,假設當然使用支持java的瀏覽器。

也許是另一種選擇,雖然它有自己的局限性,使用AJAX注入div。最簡單的方法是使用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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