无法使用$ _GET方法获取ID

时间:2017-03-09 10:19:04

标签: php html css mysql

我有问题。我试图从链接中获取用户ID。

localhost/projekt/php/rules.php?user=1

然后我用$ID = $_GET['user'];

保存用户ID

它正在工作,但是当我按下我需要ID的按钮后,它说:用户未定义。

这是我的代码。

<?php
$conn = new mysqli('localhost', 'root', '', 'logins');

$id = $_GET["user"];

$var = 0;
if(isset($_POST['submit'])) {
    if (isset($_POST['checkbox'])) {

        $sql = "SELECT rulesaccepted FROM logins WHERE ID = '$id'";

        foreach ($conn->query($sql) as $row) {
            $sql3 = "UPDATE logins SET rulesaccepted = '1' WHERE ID = '$id'";
            $conn->query($sql3);
            header('Location: main.php');
        }   
    } else {
        $var = 1;
    }
}
?>

2 个答案:

答案 0 :(得分:0)

这是因为您要重定向到main.php没有user属性。

因此您需要检查user isset

if (isset($_GET["user"]) {
    $id = $_GET["user"];
}

你必须注意

因为您的代码非常vulnerable to sql injections,所以强烈建议您使用prepared statements

这一行:     $ sql3 =&#34; UPDATE登录SET rulescecepted =&#39; 1&#39; WHERE ID =&#39; $ id&#39;&#34 ;;     $ conn-&GT;查询($ SQL3);

最好如下:

$sql3 = "UPDATE logins SET rulesaccepted = '1' WHERE ID=?";
$stmt = $conn->prepare($sql3);
$stmt->bind_param('i', $id);
$stmt->execute();

与您的选择查询相同:)

答案 1 :(得分:-1)

我希望当你点击按钮时,localhost/projekt/php/rules.php?user=1不会再次开火。 这就是为什么它说:用户未定义

您可以在表单中使用$_GET['user'],如下所示

<input type="hidden" name="id" value="<?php echo $_GET['user'] ?>" />

然后您可以在按钮单击时使用id

if(isset($_POST['submit'])) {
    if (isset($_POST['checkbox'])) {
    $id=$_POST['id']

        $sql = "SELECT rulesaccepted FROM logins WHERE ID = '$id'";

        foreach ($conn->query($sql) as $row) {
            $sql3 = "UPDATE logins SET rulesaccepted = '1' WHERE ID = '$id'";
            $conn->query($sql3);
            header('Location: main.php');
        }   
    } else {
        $var = 1;
    }
}