【问题标题】:Fatal error: Can't use function return value in write context in [filter_input]致命错误:无法在 [filter_input] 的写入上下文中使用函数返回值
【发布时间】:2015-07-03 10:31:06
【问题描述】:

我正在学习 PHP,但我认为 filter_input 函数有问题。

<?php


if (!isSet(filter_input(INPUT_COOKIE, 'nazwa')) && !isSet(filter_input(INPUT_GET, 'nazwa')))
{
    include ("header.html");
    include 'form.html';
    include 'footer.html';
}
else if (isset(filter_input(INPUT_GET, 'nazwa'))) {
    setcookie("nazwa", (filter_input(INPUT_GET, 'nazwa')), time() + 60*60*24*365);
    include 'header.html';
    echo "<p> Dziękujemy za podanie danych.</p>";
    include 'footer.html';
}
else {
    include 'header.html';
    echo "Witamy, zostałeś rozpoznany jako {filter_input(INPUT_COOKIE, 'nazwa')}.";
    include 'footer.html';
}

?>

我明白了:

致命错误:无法在第 4 行 C:\Users\User\Documents\NetBeansProjects\PhpProject3\cookie\index.php 的写入上下文中使用函数返回值

你能帮帮我吗?

【问题讨论】:

标签: php if-statement fatal-error filter-input


【解决方案1】:

你正在使用

isset(filter_input(INPUT_GET, 'nazwa')

相反,您可以使用这样的东西(在任何地方调用isset()):

$func = filter_input(INPUT_COOKIE, 'nazwa');
isset($func)

直接来自php documentation

警告 isset() 仅适用于变量,因为传递任何其他内容都会导致解析错误。要检查是否设置了常量,请使用 defined() 函数。

isset() 是一种语言结构。不是正常功能。

【讨论】:

  • 我被这个elseif(mysqli_num_rows($res_kode_ok)&gt;0 &amp;&amp; mysqli_num_rows($res_kurir)=0){ 搞砸了。那么,如何解决呢?
  • 您可能想使用== 而不是`='。另外,显示代码段并描述错误。最好单独发布一个问题
【解决方案2】:

你不能在函数调用的结果上使用isset(),这里是filter_input()

拉出filter_input()调用(将函数的返回值赋值给变量然后检查)

$nazwa = filter_input(INPUT_POST, 'nazwa');
if($nazwa) { ... }

或内联它:

if ($nazwa = filter_input(INPUT_POST, 'nazwa'))
{
    // your code
} else {
    echo 'Nope';
}

【讨论】:

  • 谢谢 Jens - 这是我没找到的。
猜你喜欢
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-07
  • 2016-09-15
相关资源
最近更新 更多