2014-03-13 42 views
0

我的問題是我如何發送一個參數到另一個服務器在PHP語言的腳本? 例如: 我的網站是: http://www.site.com/panel.php ,我想一些參數發送到: http://www.site2.com/scirpt.pl 以及從PHP代碼和 給出參數srcipt運行發送數字或字符串panle.php 我想向尤爲明顯在Perl CGI用戶得到的參數和執行 ,但我不從perl的CGI 和遺憾,已backgrund我的髒話:d如何從PHP中獲取參數在Perl中cgi

+0

你可以不使用查詢字符串... http://www.site2.com/scirpt.pl?var1=value1&var2=value2&var3=value3我不知道他們是否與Perl一起工作,但這將是一個簡單的選擇 – mic

+0

所以,只是爲了澄清你想用PHP腳本調用perl腳本,通過服務器對perl腳本進行http調用,或者是否希望php腳本對調用perl腳本的shell進行shell調用? – alexmac

+0

爲什麼不只是有一個共同的代碼庫,PHP或Perl。這降低了你的技能集以維護代碼庫,除非這是你的學習項目,然後沒有反對意見,這是有助於瞭解每個作爲一種學習工具。 – alexmac

回答

0

如果你想要做一個shell調用,它變得有點棘手。跨服務器(不同的機器)傳遞shell調用會帶來安全風險,因爲您不希望我能從我的shell中在機器上運行腳本。有協議,如SSH,這將允許你連接,並給出正確的配置外殼調用。從Perl或PHP調用這個函數,您可以使用反引號``[Perl]或system()[Perl,PHP]來調用ssh,其參數指示它在遠程機器上運行命令,然後操作標準輸出以顯示用戶看到的頁面。

根據您在每臺服務器上擁有的權限,將Perl腳本複製到與PHP腳本相同的服務器上會更容易。如果可以的話,你可以跳過ssh步驟直接進入命令調用。

當對服務器端腳本進行任何操作時,特別是在執行代碼時,牢記安全非常重要。我建議你徹底過濾所有的用戶輸入,以避免讓人們在你的系統上執行代碼。如果您需要幫助,請查看PHP的filter_var()和Perl的正則表達式功能。如果你真的想要再次檢查你的安全使用Perl's taint mode

正如有人在評論中提到的那樣,將代碼保存在標準的語言庫中可以讓您更容易編排您正在嘗試執行的任何操作。另一種選擇是,儘管它破壞了用一個腳本解析輸入而不用另一個腳本的目的,但是要調用curl或wget,並將「參數」作爲get或post變量傳遞給HTTP請求。這需要你在兩端進行過濾,因爲有人可以直接從任一腳本發出請求。

+0

我知道這個答案來了一個比原來的海報希望晚一點,但我是谷歌搜索一個項目的Perl東西,並發現了一些我認爲我可以真正幫助的東西,並希望一次爲StackOverflow做出貢獻。我希望它能幫助別人。 – fraz