【问题标题】:PHP value of GET variable is 0?GET 变量的 PHP 值为 0?
【发布时间】:2012-06-17 14:23:22
【问题描述】:

我在创建简单的 PHP 脚本时遇到问题。 $_GET["give"] 变量在 PHP 中始终为 0,但我确实在 URL 中定义了它。如果未定义,我的脚本会重定向。

    if (isset($_GET["give"])&&$_GET["give"]!="") {
        echo "give GET detected<br />";
        $user = $_GET["give"];
        echo $_GET["give"]+$user+"<br />";
    }
    header("Location: /diamonds/"); //this document, but removing arguments.

URL 很好,/?give=kroltan,它应该回显 kroltan。但相反,我在浏览器中得到了这个:

   give GET detected <br>
   0

它甚至不回显$user 变量,尽管它与$_GET["give"] 的值相同。之后也没有&lt;br&gt;

【问题讨论】:

    标签: php url null get


    【解决方案1】:

    这是 PHP。您将字符串与 . 而不是 + 连接。

    正如@MarcB 在 cmets 中所说 - 换句话说,您正在对字符串进行数学加法,因此 PHP 正在将您的 kroltan 字符串转换为 0

    String operators in PHP

    【讨论】:

    • 换句话说,您正在对字符串进行数学加法,因此 PHP 正在将您的 kroltan 字符串转换为 0。
    • 我喜欢你的补充@MarcB;我会在答案中添加它
    【解决方案2】:

    通过使用加号,PHP 认为它正在处理数字,因此将字符串更改为数字。这会产生一个值为 0 的整数。因此,您将始终获得零值。由于字符串的值为零。

    如果你想组合字符串,你应该使用点而不是加号。

    所以代替:

    echo $_GET["give"]+$user+"<br />";
    

    你应该使用

    echo $_GET["give"] . $user . "<br />";
    

    顺便说一句,代码将始终重定向,因为您没有使用 else 语句,为什么还要将 $_GET['give'] 的值分配给 $user 并将它们组合到下一行?这似乎很奇怪。

    【讨论】:

    • 这是部分代码,重点关注问题。在完整代码中,重定向在这个 if 之内,但在我的重要代码之外(它从 MySQL 数据库中检索东西(是的,我正在转义它)。让机器人 $_GET["give"]$user 是一个测试,我实际上正在使用只有 $user,所以我可以把它放在字符串中而不用分隔它们(比如"hello $user, how are you")。
    【解决方案3】:

    在 PHP 中,+ 运算符用于代数加法,而. 用于字符串连接。

    【讨论】:

      【解决方案4】:

      您正在使用数字加法 (+) 运算符,而不是 $_GET["give"]+$user+"&lt;br /&gt;" 中的字符串连接 (.) 之一。 PHP 愉快地将非数字字符串转换为零。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-05
        • 1970-01-01
        • 2013-04-18
        • 1970-01-01
        • 1970-01-01
        • 2013-06-04
        • 1970-01-01
        • 2020-08-15
        相关资源
        最近更新 更多