PHP-用户管理删除问题
我正在开发一个自定义内容管理系统。我被指示做一些改变,这就是我需要做的。我需要创建一个用户管理页面,允许管理员从数据库中删除(或禁用其状态)用户 这是我的用户管理页面:PHP-用户管理删除问题,php,Php,我正在开发一个自定义内容管理系统。我被指示做一些改变,这就是我需要做的。我需要创建一个用户管理页面,允许管理员从数据库中删除(或禁用其状态)用户 这是我的用户管理页面: <?php $query = 'SELECT author_id, author_email as Email, author_name as Name FROM authors ORDER BY Name LIMIT 0, 30'; $result = mysql_que
<?php
$query = 'SELECT author_id, author_email as Email, author_name as Name
FROM authors
ORDER BY Name
LIMIT 0, 30';
$result = mysql_query($query);
?>
<table class="listing">
<thead>
<tr>
<td>Author ID</td>
<th>Author E-Mail</th>
<th>Author Name</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
<?php
for ($i = 0; $row = mysql_fetch_array($result); $i++) {
if ($i % 2 == 0) {
echo '<tr class="even">';
} else {
echo '<tr class="odd">';
}
echo "<td>{$row['author_id']}</td>";
echo "<td>{$row['Email']}</td>";
echo "<td>{$row['Name']}</td>";
echo "<td><a href=\"del-user.php?term={$row['author_id']}\" onclick=\"javascript:return confirm('Are you sure you want to delete this user?')\">X</a></td>";
echo '</tr>';
}
?>
</tbody>
</table>
作者ID
作者电子邮件
作者姓名
删除
这是我的del-user.php页面:
<?php
include('inc/config.php');
$title = 'Delete Individual User';
include('inc/db.php');
include('inc/header.php');
echo '<h2>Delete</h2>';
if (isset($GET['term'])) {
$query = "DELETE FROM authors WHERE author_id = {$GET['term']} LIMIT 1";
mysql_query($query) or die('Failed to delete user');
echo '<p>User Deleted</p>';
echo '<p>Back to <a href="manage-users.php">Manage Users </>.</p>';
} else {
echo '<p>Tried to Delete: "';
echo ($GET['term']);
echo '"</p>';
echo '<p>Nothing to Delete</p>';
}
include('inc/footer.php');
?>
在查询中使用author\u id
<?php
$query = 'SELECT author_id, author_email as Email, author_name as Name
FROM authors
ORDER BY Name
LIMIT 0, 30';
$result = mysql_query($query);
在查询中使用作者id
<?php
$query = 'SELECT author_id, author_email as Email, author_name as Name
FROM authors
ORDER BY Name
LIMIT 0, 30';
$result = mysql_query($query);
有几个问题:
您发送的数据如下所示:
del-user.php?term={$row['author_id']}
if (isset($_GET['term']))
$query = "DELETE FROM authors WHERE author_id = {mysql_real_escape_string($_GET['term'])} LIMIT 1";
这意味着实际上$_GET['term']包含id
您可以这样捕捉值:
if (isset($_GET['author_id'])) {
$query = "DELETE FROM authors WHERE author_id = {$_GET['author_id']} LIMIT 1";
这是不好的,因为$_GET['term']包含id,所以您必须修复较低的id,使其看起来像这样:
del-user.php?term={$row['author_id']}
if (isset($_GET['term']))
$query = "DELETE FROM authors WHERE author_id = {mysql_real_escape_string($_GET['term'])} LIMIT 1";
此外,您还需要展开select查询,因为您实际上不是从数据库中获取作者id:
$query = 'SELECT author_email as Email, author_name as Name, author_id
FROM authors
ORDER BY Name
LIMIT 0, 30';
请在将变量输入数据库之前转义变量
干杯几个问题:
您发送的数据如下所示:
del-user.php?term={$row['author_id']}
if (isset($_GET['term']))
$query = "DELETE FROM authors WHERE author_id = {mysql_real_escape_string($_GET['term'])} LIMIT 1";
这意味着实际上$_GET['term']包含id
您可以这样捕捉值:
if (isset($_GET['author_id'])) {
$query = "DELETE FROM authors WHERE author_id = {$_GET['author_id']} LIMIT 1";
这是不好的,因为$_GET['term']包含id,所以您必须修复较低的id,使其看起来像这样:
del-user.php?term={$row['author_id']}
if (isset($_GET['term']))
$query = "DELETE FROM authors WHERE author_id = {mysql_real_escape_string($_GET['term'])} LIMIT 1";
此外,您还需要展开select查询,因为您实际上不是从数据库中获取作者id:
$query = 'SELECT author_email as Email, author_name as Name, author_id
FROM authors
ORDER BY Name
LIMIT 0, 30';
请在将变量输入数据库之前转义变量
干杯问题在于你的问题
$query = 'SELECT author_email as Email, author_name as Name
FROM authors
ORDER BY Name
LIMIT 0, 30';
您没有选择作者id,问题在于您的查询
$query = 'SELECT author_email as Email, author_name as Name
FROM authors
ORDER BY Name
LIMIT 0, 30';
您没有选择作者id
您在url中传递的用户id如下:
echo "<td><a href=\"del-user.php?term={$row['author_id']}\"
顺便说一下,您应该阅读有关预处理查询和sql注入的内容;) 在url中传递您的用户id,如下所示:
echo "<td><a href=\"del-user.php?term={$row['author_id']}\"
顺便说一下,您应该阅读有关预处理查询和sql注入的内容;) 使用ajax将更容易和更易于管理各种事情calls@Stack101-我从来没有使用过ajax,所以我不想让事情复杂化。使用ajax可以使各种事情变得简单和易于管理calls@Stack101-我从未使用过ajax,所以我不想让事情复杂化循环不是问题,问题在于这一部分:为什么循环会成为问题?:)循环不是问题,问题在于这一部分:为什么循环会成为问题?:)有点不可思议。。。如果将authorId添加到select,并将$\u GET['author\u id']更改为$\u GET['term'],则没有什么不起作用的了。:)你得到了什么消息?话虽如此,我的url现在末尾有25个,这是作者id“/del user.php?term=25”删除脚本的正确版本是$\u get['term'],而不是$\u get['author\u id']。你确定你做到了吗?:)我没有出错,但我得到了这个:“Delete试图删除:”“nothingtodelete”当没有什么可获取时我得到了这个,你没告诉我应该是term吗?有点难以置信。。。如果将authorId添加到select,并将$\u GET['author\u id']更改为$\u GET['term'],则没有什么不起作用的了。:)你得到了什么消息?话虽如此,我的url现在末尾有25个,这是作者id“/del user.php?term=25”删除脚本的正确版本是$\u get['term'],而不是$\u get['author\u id']。你确定你做到了吗?:)我没有出错,但我得到了这样一个信息:“Delete试图删除:”“Nothing to Delete”当没有什么可获取时,我得到了这个信息。你没告诉我应该是术语吗?