用于删除用户的PHP脚本中的未定义索引错误

时间:2014-04-01 06:14:01

标签: php

即时尝试制作删除用户页面,但我无法弄清楚为什么会收到此错误。

Undefined index: bil in C:\wamp\www\FORM\deleteadmin.php on line 4

Undefined index: adminID in C:\wamp\www\FORM\deleteadmin.php on line 5

第4行和第5行看起来像这样,

$bil = $_POST['bil'];
$adminID = $_POST['adminID'];

完整代码是new.php,它链接到包含错误的deleteadmin.php。

new.php

echo "<form name='update $bil' method=post action=newuser.php>" ?>
    <tr>
        <td><center><?php echo $bil; ?></center></td>
        <td><?php echo $row['name']; ?></td>
        <td><?php echo $row['tel']; ?></td>
        <td><?php echo $row['email']; ?></td>
        <td><?php echo $row['username']; ?></td>
        <td><?php echo $row['password']; ?></td>
        <td><a href = "deleteadmin.php"><img src="img/deleteicon.png" align="center"></a></td>
        <input type=hidden value={$row['adminID']} name=adminID>
        <input type=hidden value=$bil name=bil>
    </tr>
<?php 
    echo "</form>";
}
?>

deleteadmin.php

<?php
include ('config.php');

$bil = $_POST['bil'];
$adminID = $_POST['adminID'];

$result = mysql_query("DELETE FROM `admin` WHERE `adminID`= '$adminID'") or die (mysql_error());

if($result)
{
?>
<script language="javascript">
alert("User No : <?php echo "$bil"; ?> DELETED");
location.href="new.php";
</script>

<?php
}
else
{
?>

<script language="javascript">
alert("User No : <?php echo "$bil"; ?> NOT DELETED");
location.href="new.php";
</script>
<?php
}
?>

我需要做些什么才能修复它们?我尝试过使用ISSET,但它不起作用。 我不明白为什么会发生这种情况,我很想知道如何让它消失。

4 个答案:

答案 0 :(得分:2)

我不认为你在做什么是对的..因为,当你点击<a>链接时,这将给你未定义的索引错误。因此,您应该将参数作为查询字符串传递给<a> ..这是因为<form>操作指向 newuser.php

您需要将参数adminIDbil附加到此链接,如下所示..

<td><a href = "deleteadmin.php?adminID=<?php echo $row['adminID']; ?>&bil=<?php echo $bil; ?>"><img src="img/deleteicon.png" align="center"></a></td>

并在deleteadmin.php上,您需要从

更改
$bil = $_POST['bil'];
$adminID = $_POST['adminID'];

$bil = $_GET['bil'];
$adminID = $_GET['adminID'];

mysql_*)扩展程序自PHP 5.5.0起已弃用,将来会被删除。相反,应使用MySQLiPDO_MySQL扩展名。切换到PreparedStatements甚至可以更好地抵御SQL注入攻击!

答案 1 :(得分:2)

我在这里看到2个问题

首先:

<a href = "deleteadmin.php"><img src="img/deleteicon.png" align="center"></a>

单击此按钮,您只能访问deleteadmin.php文件。 你没有传递任何论据。

第二

$bil = $_POST['bil'];
$adminID = $_POST['adminID'];

您没有发布任何数据,因此$ _POST变量将为空。

解决方案

在网址?bil=".$bil."&adminID=".$adminID."

中添加查询字符串
<a href = "deleteadmin.php?bil=".$bil."&adminID=".$adminID.""><img src="img/deleteicon.png" align="center"></a>

传递get values然后在deleteadmin.php中处理 而不是使用$_POST使用$_GET

$bil = $_GET['bil'];
$adminID = $_GET['adminID'];

$ _ GET []用于获取URL中查询字符串中编码的值。

然后,您不需要有一个表单供您删除用户。只需访问urld中传递$ _GET值的deleteadmin.php文件。

答案 2 :(得分:2)

这很容易修复。

尝试不要使用隐藏并在new.php中替换你的href:

    <td><a href = "deleteadmin.php?adminID={$adminID}&bil={$bil}"><img src="img/deleteicon.png" align="center"></a></td>

实际上,您可以将$_POST替换为$_REQUEST,因为$_REQUEST代表$_POST$_GET

希望这可以帮助您解决问题。

答案 3 :(得分:0)

new.php 中的代码更改为:

echo "<form name='update $bil' method=post action=newuser.php>
    <tr>
        <td><center><?php echo $bil; ?></center></td>
        <td><?php echo $row['name']; ?></td>
        <td><?php echo $row['tel']; ?></td>
        <td><?php echo $row['email']; ?></td>
        <td><?php echo $row['username']; ?></td>
        <td><?php echo $row['password']; ?></td>
        <td><a href = 'deleteadmin.php'><img src='img/deleteicon.png' align='center'></a></td>
        <input type='hidden' value=$row['adminID'] name='adminID'>
        <input type=hidden value='$bil' name='bil'>
    </tr>
</form>";

试试这个。