【问题标题】:PHP insert blank values instead of GET valuesPHP插入空白值而不是GET值
【发布时间】:2017-03-24 14:22:29
【问题描述】:

我的网站上有这个脚本:

<?php

  $db_handle = mysql_connect($server, $user_name, $password);
  $db_found = mysql_select_db($database, $db_handle);

  if($db_found) {
    $SQL = "INSERT INTO users (user, address)
    VALUES('".$_GET['username']."','".$_GET['password']."')";

    $result = mysql_query($SQL);

    mysql_close($db_handle);
    print "Records added to the database";
  }
  else {
    print "Database NOT found";
    mysql_close($db_handle);
  }
?>

然后我在浏览器中打开这个网址:

http://ringkapps.altervista.org/addToDatabase.php?user=ringk&address=test

但不是在表中插入“ringk”和“test”,而是插入:

不明白为什么,任何帮助将不胜感激。

【问题讨论】:

  • 你能在插入前做 var_dump($_REQUEST)、var_dump($_GET) 和 var_dump($_POST) 吗?并发布结果
  • user != username,并且 GET 中没有密码(也不应该是密码,使用 POST!) - 你应该散列你的密码!!
  • Please, don't use mysql_* functions in new code。它们不再维护and are officially deprecated。看到red box?了解prepared statements,并使用PDOMySQLi - this article 可以帮助您决定哪个。
  • 不要以纯文本形式存储您的密码!这一点都不安全! PHP 有内置函数,您应该使用这些函数来处理密码的存储,请参阅更安全的 password_hash() 函数!
  • 您的 $_GET 索引键是 useraddress 而不是 usernamepassword

标签: php mysql get


【解决方案1】:

这段代码错了!

$SQL = "INSERT INTO users (user, address)
VALUES('".$_GET['username']."','".$_GET['password']."')";

替换这个。

$SQL = "INSERT INTO users (user, address)
    VALUES('".$_GET['user']."','".$_GET['address']."')";

【讨论】:

  • 这通常是一个错误。
【解决方案2】:

它不起作用,因为你在打电话

http://ringkapps.altervista.org/addToDatabase.php?user=ringk&address=test

它创建了$_GET["user"]$_GET["address"],但您试图放入不存在的数据库$_GET['username']$_GET['password']

你应该打电话:

http://ringkapps.altervista.org/addToDatabase.php?username=ringk&password=test

另外,在security for PHP apps 上阅读一些内容,您的代码容易出现很多漏洞!!!

【讨论】:

    【解决方案3】:

    在网址中:http://ringkapps.altervista.org/addToDatabase.php?user=ringk&amp;address=test

    我们可以看到user = ringkaddress = test。 其中 user 是关键,而 ringk 是价值。 其中地址是关键并测试它的值。

    您可以使用var_dump($_GET) 打印所有$_GET 值并自己查看其中的内容。

    我猜你想要的是访问 $_GET['user']$_GET['address']

    然后只需替换该行:

     VALUES('".$_GET['username']."','".$_GET['password']."')";
    

     VALUES('".$_GET['user']."','".$_GET['address']."')";
    

    或者您可以更新 url 以匹配代码。

    【讨论】:

      猜你喜欢
      • 2013-02-01
      • 1970-01-01
      • 2018-10-18
      • 2016-03-11
      • 2021-10-08
      • 2015-11-23
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多