1

我在创建简单的 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"]. <br>之后也没有

4

4 回答 4

6

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

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

PHP 中的字符串运算符

于 2012-06-17T14:25:12.967 回答
1

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

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

所以而不是:

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

你应该使用

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

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

于 2012-06-17T14:47:03.643 回答
0

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

于 2012-06-17T14:25:40.610 回答
0

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

于 2012-06-17T14:25:54.543 回答