2017-08-11 177 views
0

所以我正在編輯我公司的一個網站。我並不太熟悉Zend的工作方式,但我沒有找到解決這個問題的好運氣。

我們有兩個不同的網站,我可以自由編輯和測試的分期網站,以及公衆可以查看的現場版本。當我創建一個新的控制器/視圖時,我使用$ _GET數據來處理某些表單。它在測試結束時按預期工作,但由於某種原因生產結束不起作用。經過一些測試後,我發現$ _GET數據並未實際發送,因此我的腳本會將我引導出來(因爲它的設計目的)。

的URL看起來有幾分像這樣:

/admin/something/update?data=20 

所以我檢查$ _GET,因爲我通常做:

if (isset($_GET) && !empty($_GET["data"])) { 
    // do something 
} else { 
    // redirect the user 
} 

它總是重定向像它應該如果沒有$ _GET數據(如果數據不包含值)。

所以我調試並發現這是$ _GET在我print_r後的樣子,儘管URL清楚地包含$ _GET數據,但我得到的是一個空數組。

這可能是我對Zend處理GET和POST數據的有限知識(因爲我幾乎將我對老派PHP的編輯保留下來),所以任何燈光都會很棒。謝謝。

+0

我不t知道ZF,但如果我不得不猜測,我會說你的mod_rewrite規則沒有'QSA'標誌,所以查詢字符串項目不會被轉發o r ZF用$ _GET做了一些事情,覆蓋它,然後期望你使用某種方法來獲取這些數據。 –

+0

[你不需要檢查'isset()&&!empty()'](https://stackoverflow.com/questions/4559925/why-check-both-isset-and-empty)。 – Qirel

+0

'$ _GET'作爲其他** superglobals **總是\可用,所以檢查它是否存在是毫無意義的 –

回答

1

這似乎是你的.htaccess文件的一些問題。 可能是一些額外的SEO重寫規則。

您可以添加和與嘗試,要麼應該工作,

RewriteRule . index.php?url=$1 [PT,L,QSA] 

或者,

RewriteRule ^(.*)$ %{ENV:BASE}/index.php [L] 

,併爲獲得GET值,你應該使用,

if(isset($_GET['data']) && $_GET['data']){ 
      var_dump($_GET['data']);exit; 
     } 
+0

這是重寫規則。我最近被提升爲與商業網站合作,所以這對我來說都有點陌生。 –