亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP中是否有辦法通過URL的取得其返回?

PHP中是否有辦法通過URL的取得其返回?

函數式編程 2019-04-19 16:12:20
例如這里是一個a.php:而b.php,從用戶輸入得到了一個URL,正好是/a.php?b:assert($_GET["wanted"]==='/a.php?b');//是否存在一個方法whatever,令:$result=whatever($_GET["wanted"]);echostrtoupper($result);//THESE'SA"B".這些答案是不接受的:file_get_contents()或fopen()發起遠程請求:服務器未必Listen了localhost,域名也是不確定的,并且發起遠程請求開銷太大.重定向:得到返回內容以后還要進一步處理.include或require_once:實際情況可能很復雜,包括urlmapping等等,根本不知道include哪個文件.另外這個URL還有可能是靜態文件.更新20140511:貌似因為我刻意隱藏項目中的問題,所以很難讓人清楚,非常抱歉.簡單來說,我就是希望能得到whatever()的一種實現.我在項目中遇到的問題是這樣的.一個網頁,HTML中有一些JS和CSS的資源,可以直接行內展開.如果JS和CSS全部是靜態這樣好辦,直接讀入文件然后用正則替換上去就是了.然而某些JS是需要根據用戶輸入動態生成的,這樣就必須要請求到這些PHP生成的JS,然后再替換上去.項目中將所有url都Rewrite到index.php,然后在index.php做urlmapping.包括當前的網頁,和希望得到內容的JS,都通過index.php然后再生成.
查看完整描述

2 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

好像沒太明白題主在問什么,剛開始我是這么想題主是想知道是不是存在一個PHP腳本,在不請求任何遠程資源的情況下,得到請求的響應內容。
然后自己呵呵了。
后來想,可能題主想問的是,如果在同一臺服務器上,有這么一個可訪問的資源,但是呢,目前只有建立一個HTTP連接訪問一下才能知道其內容,好像這樣開銷挺大,那能不能不建立HTTP連接,而通過一個什么本地的方式得到結果呢?
真頭疼,感覺處處是模棱兩可的概念和沒有弄明白的道理。
開始認真答題:
實際上這是一個邏輯問題,題主仔細分析一下就可以知道,但是,所謂/a.php?b的訪問結果,并不僅僅由a.php本身所決定。例如,如果不經過PHP解釋器,訪問/a.php?b的結果在默認情況下*是其腳本文本本身。訪問一個HTTP的資源,取決于你的HTTP服務器根據接受到的請求去輸出什么內容。那么可以很容易明白的是,不同的HTTP服務器、不同的配置、不同的代碼都將產生不同的結果。所以為了每次都能獲得題主預想的內容,戲還得做全套(這好像是個信息論的什么結論來著,誰可以幫忙補充一下)。當然,如果題主知道了一些前提條件,在可控的情況下簡化一些中間步驟說不定也可以得到100%的結果呢。
為什么說在默認情況下呢,因為如果我用perl的解釋器,將會返回匪夷所思的內容
                            
查看完整回答
反對 回復 2019-04-19
?
達令說

TA貢獻1821條經驗 獲得超6個贊

是有辦法實現你說的要求的,思路是這樣的:
1)第一種思路:在運行b.php中運行a.php,并且捕獲a.php的標準輸出作為方法的返回,這個需要事先構造出運行a.php的環境,比如設置query值,即a.php里的$_GET。
a)如何運行a.php并捕獲標準輸出,可以參考pipe(管道)方式;
b)如何構造運行環境,可以參考CGI的環境變量進行設置。
c)這種方式是需要額外運行一個進程來進行處理的,所以性能并不是很好,不好作為線上用途。
2)第二種思路:實現一個簡單的php解釋器,來運行這個a.php;
a)這種方式比較復雜,但性能比第一個要好。
3)可能會有部分第三方或者開源類庫實現了已有功能,這個需要你自行查找。
然后大概聽了你說的這些,感覺從需求上分析,你選用的方案應該是有問題,所以才造成了這么麻煩的實現方式。當然不清楚你項目的實際困難,是否只能采取這種方式,但如果是從頭開始的話,推薦是將a.php的實現抽象出來,然后a.php和b.php分別調用才是更合理的方案。
                            
查看完整回答
反對 回復 2019-04-19
  • 2 回答
  • 0 關注
  • 379 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號