作者tkdmaf (皮皮快跑)
看板PHP
标题Re: [请益] post传值一开始为空值会报错
时间Sat Nov 14 09:39:31 2015
※ 引述《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)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.204.108.111
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1447465174.A.85B.html
1F:推 threeus: +1 11/14 11:02
2F:推 you7: 谢谢 我变数写A只是要贴出来给版友看 所已尽量简化 11/14 19:53
3F:→ you7: 所以本来也不是输出"哈哈" 谢谢提醒 11/14 19:53