Board logo

標題: 新系統更新後舊的php碼已無法正常讀取 [列印本頁]

作者: kangtacat     時間: 2026-1-28 10:29 AM    標題: 新系統更新後舊的php碼已無法正常讀取

目前已完成全站php碼修改,
但偶爾還是會跑出錯誤訊息,
瀏覽器會紀錄某些參數值,
在下次瀏覽時就會正常,
所以要在不同情況不同環境分別測試,
才會知道哪裡有問題,
目前人回娘家度假,
先紀錄一下回去再修改


Notice: Undefined index: onlinedetail in C:\AppServ\www\Discuz!\home.php on line 335
Notice: Undefined offset: 1 in C:\AppServ\www\Discuz!\home.php on line 44


新的php版本變的更嚴謹,
不接受沒有設定的參數,
一旦出現會顯示undefined,
變數有時有單引號或雙引號混用時就要大括號包起來,
如:echo "<input name=name value={$arr['name']}>";
表單送出參數時,
除了要設定post或get接收值外,
如果值是空白的也要賦予空白值,
寫法如:$name = $_POST['name'] ?? $_GET['name'] ?? '';
不然也是會出現undefined,
另外有些預設的函數或參數寫法已經不能使用,
改用更簡單的寫法,
例如:$HTTP_COOKIE_VARS、$HTTP_GET_VAR、$HTTP_POST_VAR
現在的寫法是$_COOKIE、$_GET、$_POST,
用舊的寫法會出現錯誤
作者: eightwing     時間: 2026-2-2 02:46 PM

Notice: Undefined index: onlinedetail in C:\AppServ\www\Discuz!\home.php on line 335
這段是因為沒有onlinedetail的變數值,用isset()先判斷就可以了

Notice: Undefined offset: 1 in C:\AppServ\www\Discuz!\home.php on line 44
這段是陣列,0的時候有值但到了1就沒有了,可以用isset()也可以在前面就先給預設值,
例如
$ip_detail[0] = $ip_detail[0] ?? 0;
$ip_detail[1] = $ip_detail[1] ?? $ip_detail[0];





歡迎光臨 下班後論壇-不明所以版  華麗登場 (http://www.eightwing.idv.tw/discuz!/) Powered by Discuz! 3.1.2 Plus