我多年来一直使用这种测试$ _POST var并同时为$ var赋值的方法。
今天我遇到了一个服务器,它似乎与它的处理方式不同。
我正在加载页面http://site.com/foo.php?var=bar没有表单发布...并且测试$ _POST var似乎取消了我的初始作业
$var= $_GET['var'];
echo "var is $var\n"; // correctly echos $_GET['var']
if ($var= $_POST['foo']) {
echo "POST foo seen\n"; // does not fire, condition not met
}
echo "var is $var\n"; // does not echo $_GET['var']
当我切换到
if (isset($_POST['foo'])) {
$var = $_POST['foo'];
...
我摆脱了不安的行为。
所以我的问题是这个if ($var= $_POST['foo']) {
是不是很糟糕?
答案 0 :(得分:1)
您正在使用赋值运算符=
而不是比较运算符==
。另请注意,在访问未定义的数组元素时,PHP将发出E_STRICT
警告。因此,最好的选择通常是:
$ name = trim(isset($ _ POST ['name'])?$ _POST ['name']:'');
或整数:
$ age = intval(isset($ _ POST ['age'])?$ _POST ['age']:'');
答案 1 :(得分:0)
尝试
$var = isset ( $_GET ['var'] ) ? $_GET ['var'] : null;
$foo = isset ( $_GET ['foo'] ) ? $_GET ['foo'] : null;
echo "var is $var\n"; // correctly echos $_GET['var']
if ($var === $foo) {
echo "POST foo seen\n"; // does not fire, condition not met
}
echo "var is $var\n"; //