2017-04-27 39 views
0

我是php小學。

我正在做一個PHP系統的版本從很舊的版本到5.6。 此外,不幸的是任何文件都不是關於舊系統...

我有一個問題無法理解。

Controller.php這樣

<?php 

require_once("./commonLogUtils.php"); 
require_once("./authModel.php"); 
require_once("./searchModel.php"); 

session_start(); 

if (strlen($_REQUEST['action']) <= 0) 
{ 
    $_REQUEST['display'] = "system"; 

    include("./loginView.php"); 
    return; 
} 

我覺得Controller.php這樣是啓動系統的頁面。

如果我嘗試用這個地址「http://localhost/cadsearch/controller.php

它顯示通知,我說:「通知:未定義指數:行動」訪問該頁面在我的本地

釋放的舊系統不即使使用相同的來源也表示通知。

所以,我不能站在那個行動是從哪裏設置。

如果你知道這個,你能教我嗎?

謝謝。

+0

請發送loginview.php文件too.maybe該文件存在問題 –

+1

很可能,您的舊系統沒有啓用'error_reporting'和'display_errors'(應始終在開發和測試期間啓用,這樣的錯誤),但代碼會爲任何PHP版本生成通知。它正在檢查$ _REQUEST ['action']'中字符串的_length_是否爲零,這實際上意味着它未被設置,但如果以這種方式使用PHP,它將發出E_NOTICE。你可以使用'if(empty($ _ REQUEST ['action'])){...' –

+0

Michael //而不是'strlen()',當我在這裏問的時候,我只檢查了error_reporting。這與服務器和我的開發環境一樣。但我發現服務器的display_errors是「開」,而我的開發環境是「關」,我試圖改變我的php.ini display_errors從開到關。結果通知已經消失。謝謝。 – user5949771

回答

0

試試這個

<?php 

require_once("./commonLogUtils.php"); 
require_once("./authModel.php"); 
require_once("./searchModel.php"); 

session_start(); 

if (!empty($_REQUEST['action']) && strlen($_REQUEST['action']) <= 0) 
{ 
    $_REQUEST['display'] = "system"; 

    include("./loginView.php"); 
    return; 
} 

我也基本上什麼補充的是檢查,如果$ _REQUEST [「行動」]變量爲空或不是條件。如果它是空的,它不會閱讀下一個條件。因此,不會出現任何錯誤。

該錯誤開始出現在較新版本的PHP中。它只是基本告訴我們你正在訪問的變量沒有被定義。

+0

我改變了這個。 if(empty($ _ REQUEST ['action'])|| strlen($ _ REQUEST ['action'])<= 0)謝謝 – user5949771

+0

不客氣:) –

+0

'&& strlen(...)'不是實際上在這裏需要,因爲'empty()'同時檢查'isset()'和一個零長度的字符串。 –