如何修复未定义的索引?[复制]

How can I fix an undefined index? [duplicate]

提问人:tasiaraye 提问时间:8/7/2019 最后编辑:Funk Forty Ninertasiaraye 更新时间:8/7/2019 访问量:744

问:

我已连接到本地主机,并尝试使用在线 $ 上的 GET 方法。我收到通知:未定义索引:删除 C:\xampp\htdocs\webd153\delete.php 中的第 4 行。

<?php
include 'connection.php';

$deleteid = $_GET['deleteid'];

if (isset($deleteid)) {
$deletesql = $dbh->prepare("DELETE FROM users WHERE id = '$deleteid'");
 $deletesql->execure();
  echo "record has been deleted!<br>";

我正在尝试使用从本地主机连接到 myphpadmin 数据库的表单删除我在数据库中输入的名称。

php mysqli 获取 undefined-index

评论

0赞 Jared Farrish 8/7/2019
你做错了。3v4l.org/sCcUOisset()

答:

1赞 Jakub Bouček 8/7/2019 #1

正确的方法是:

<?php
include 'connection.php';

if(isset($_GET['deleteid']) {
 $deleteid = $_GET['deleteid'];

 $deletesql = $dbh->prepare("DELETE FROM users WHERE id = '$deleteid'");
 $deletesql->execute();
 echo "record has been deleted!<br>";
}

但这是非常不安全的!当我发送以 URL 结尾的请求时,您的数据库将被删除所有行。我建议将查询构建更改为:?deleteid=1'+OR+1=1+OR+id='

 $deletesql = $dbh->prepare("DELETE FROM users WHERE id = (?)");
 $deletesql->bind_param('i', $deleteid);

评论

1赞 Jared Farrish 8/7/2019
这演示了查询中可能存在的 SQL 注入。
0赞 Jakub Bouček 8/7/2019
@JaredFarrish 你说得对,谢谢。编辑。
0赞 Jared Farrish 8/7/2019
将其显示为准备好的声明;它已经证明了这一点。如果它是 UUID 或其他东西怎么办?只要准备好它。
1赞 Funk Forty Niner 8/7/2019
@JaredFarrish 一开始就不是我的反对票。至于为什么我们在 2019 年仍在讨论 SQL/PHP;我们看到许多不同的人问了很多问题,我们不把它们当作“一个”,而是作为一个整体,并被一些人这样对待。这种情况日复一日地发生,无法控制其他人的行为。我们所能做的就是尽力提供帮助,并希望继续给人们一些友好的建议。堆栈对于我们的英国人来说太大了,所以每天的磨练每天都在变大。我们现在必须停止讨论这个问题。它可能会触发某些东西。