Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-用户管理删除问题_Php - Fatal编程技术网

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”当没有什么可获取时,我得到了这个信息。你没告诉我应该是术语吗?