Re: [請益] post傳值一開始為空值會報錯

作者: tkdmaf (皮皮快跑)   2015-11-14 09:39:31
※ 引述《you7 (瀉老闆)》之銘言:
: 我是在網頁的第一句就寫
: if($_POST['A']== '') $A="哈哈";
: else $A=$_POST['A'];
: 底下才是使用者輸入框,一開始會這樣寫.
: 原本是想說網友點進來是還沒有輸入東西的,所以判斷傳值空值,預設一個內容.
: 等到網友進來網頁,輸入內容,才有真正的傳值.
: 以前在appsever的時候這樣寫沒報錯 可能是php版本比較舊?還是伺服器?(不確定)
: 現在改xampp就會報錯....
: Notice: Undefined index: A in C:\xampp\htdocs\..............
: 我應該怎麼改正我的寫法??
有幾個要注意的地方,所以我不用推文了。
第一個若是要說php版本比較舊。
不如說是原本的php.ini的error_reporting的設定比較寬鬆。
所以可以「忽視」沒有給予初始值的變數或是陣列索引。
後來的版本大部份針對這個設定都改成比較嚴謹的模式。
這也是為什麼很多本來用appserv寫php的人改用了wamp或是xampp之後。
發現自己寫的東西一直出error……
其實error一直都存在,只不過之前無視他罷了。
基本上如果是在實際對外server通常會把display_errors關掉,這種情況去
無視error_reporting就無所謂。
但如果是開發環境下,除了display_errors要打開。
error_reporting一般我自己就只設定E_ALL。也就是有錯就要報。
再來你的問題就是$_POST['A']打一開始就不存在了。
直到你送出表單之後才會產生出來。
所以其實你只要一開始判斷是不是存在就行了。
不然除了你原文的推文有人提供的方法外,還有一個方法就是…………
if(!isset($_POST['content'])){
$_POST['content'] = '哈哈';
}
$content = $_POST['content'];
ps.不管是做為練習還是正式使用,$a $b這種變數定義名稱的方式還是少用。
通常除了做為迴圈所以會用$i $j之類的,其他的變數或是dictionary索引值
都儘可能給予有意義的名稱。
(常看到有人寫陣列迭代$k => $v,我自己是一定寫$key => $value)
作者: threeus (侍衛)   2015-11-14 11:02:00
+1
作者: you7 (瀉老闆)   2015-11-14 19:53:00
謝謝 我變數寫A只是要貼出來給版友看 所已盡量簡化所以本來也不是輸出"哈哈" 謝謝提醒

Links booklink

Contact Us: admin [ a t ] ucptt.com