1. 程式人生 > >PHP form表單post提交 $_POST接收不到資料

PHP form表單post提交 $_POST接收不到資料

新手,最近在學習PHP,WAMP環境下碰到了同樣的問題,裝完PhpStorm後寫了個表單頁面和一個後臺列印$_POST的測試程式,POST方法接收不到資料,GET和REQUEST可以,另外如果把專案直接放在Apache伺服器的工作目錄下,然後在位址列輸入localhost是可以正常執行的。前面有答主說到了埠問題,經過查詢資料和同學討論,發現確實是埠問題,我就再總結一下這個問題,最後補充個修改方法。

  • 環境說明
WAMP+PhpStorm,我的Apache伺服器工作目錄更改為D:\www(預設的根目錄是htdocs),測試專案在F:\test下。
  • 問題分析
一個簡單的表單頁面,提交資料後,var_dump($_POST)為空

如果注意觀察此時的URL,會發現在PhpStorm中開啟瀏覽器使用的服務埠號是63342(URL是localhost:63342/這樣的形式)

因此問題的原因在於:PhpStorm預設使用的是自帶的內部伺服器,這個伺服器使用63342埠,而且伺服器內部有問題,導致POST方法異常;而如果把專案放在Apache伺服器的工作目錄下,在位址列輸入localhost,此時使用的是Apache伺服器,預設埠號為80,Apache伺服器可以正常執行程式。

  • 解決方法
既然PhpStorm內部伺服器有問題,那解決方法就是想辦法不使用內部伺服器。有兩種方法:

1.將專案建立在Apache伺服器的工作目錄下,每次執行時在瀏覽器位址列直接輸入localhost地址

2.如果仍希望通過從PhpStorm中開啟瀏覽器除錯程式,可以通過更改配置實現:

(1)首先將專案轉移到Apache伺服器工作目錄下(我這裡是D:\www)

(2)然後在PhpStorm中,依次找到File->Settings->Build, Execution, Deployment->Deployment,初始是空的,點選綠色的加號新增本地伺服器,名字localhost就好了,Type選擇In place:

<img src="https://pic1.zhimg.com/639b1def5d369cade4d28fc6e0668fd8_b.png" data-rawwidth="1032" data-rawheight="538" class="origin_image zh-lightbox-thumb" width="1032" data-original="https://pic1.zhimg.com/639b1def5d369cade4d28fc6e0668fd8_r.png">

建立完成後,右側Connection標籤下預設的設定已經將伺服器配置為80埠下的Apache伺服器:
<img src="https://pic3.zhimg.com/2ef13f71f17ce2ec7f2dd584305a217a_b.png" data-rawwidth="1017" data-rawheight="364" class="origin_image zh-lightbox-thumb" width="1017" data-original="https://pic3.zhimg.com/2ef13f71f17ce2ec7f2dd584305a217a_r.png">

Mappings標籤下的Local path設定成Apache伺服器的工作根目錄:

<img src="https://pic2.zhimg.com/393359510983f1ba8b8d71d93594ad21_b.png" data-rawwidth="1027" data-rawheight="370" class="origin_image zh-lightbox-thumb" width="1027" data-original="https://pic2.zhimg.com/393359510983f1ba8b8d71d93594ad21_r.png">

此時從PhpStorm中點選瀏覽器,訪問的URL已經沒有了63342埠這個欄位,而是使用了本地Apache伺服器,相應的表單資料也可以正常接收了

轉載自:https://www.zhihu.com/question/41113449