我還沒有找到一個堅實的工作輪,所以我想我可能會問這裏。PHP - 如何擺脫「未定義的索引」
我error.log中說,一個很好的理由
[error] [client xxx.xxx.xxx.xxx] PHP Notice: Undefined index: Variablename
直到現在我擺脫它,使用它周圍的if語句像
if (isset($var)) {
if ($var ...) { ... }
}
但現在我有一個可愛的小問題,所以我不能輕易使用上面的「繞回」。如果這些嘗試達到指定的數量,現在我想讓登錄消失。如果這些嘗試達到指定的數量,那麼check_login(...)函數將寫入$ _SESSION變量,如['loginattempts']或['captchaattempts']。像
if ($_SESSION['loginatt'] < x && $_SESSION['capatt'] < x) { echo 'login form...';}
如果如果變量被設置圍繞它,我包檢查 - 如果這些變量沒有設置登錄將不會出現。
可能工作一回合可以
if (!isset($var)) {echo 'login form ...';}
else {echo 'login form...';}
但是這意味着我必須在我的代碼 重複的登錄表單,我知道也可以只改變這種回聲「登錄表單... '轉換爲一個requice_once'include/loginform.php' - 但是這個require_once命令仍然會有一個重複的條目。
我還可以設置一個$的testvar像
if (isset($var)) {
if ($var > x) {
echo 'acc. blocked;
$testvar = 0;
}
else {
$testvar = 1;
}
if ($testvar < 1) {
echo 'login form...';
}
那麼,有沒有任何其他的方式爲那些?
如果不是您建議採用哪種方式來保持代碼的「好編程」?
任何聲明,歡迎,感謝幫助了
克里斯
謝謝 - 給了我一個好的印象 - 這裏的三元表達式看起來相當不錯,保持代碼整潔。關於Sessionindex:它不完全是這個名字 - 我只是舉了一個例子名來保持主題更清晰:) – Kris
@Kris我同意 - 如果你有很多變量需要初始化,三元表達式是整潔的。如果我們要挑選效率,我的第一個塊中的代碼總是首先將'0'寫入'$ login_attempts',而三元變量將直接採用正確的值(除非它被優化)。無論哪種方式,我懷疑這值得失眠。祝你的項目好運! – ljacqu
好吧 - 無論我採取什麼解決方案 - 它都不會以「真實」的方式損害性能。這只是我想保持它儘可能乾淨,並儘可能保持簡單,如果其他程序員必須修改我的代碼:) – Kris