PHP循环中生成带msg_id变量的删除链接失败求助
问题分析与解决方案
我一眼就发现问题所在了——你的删除链接里没有把msg_id的值输出到URL里!
错误原因
在你的删除链接代码中:
<a href="delete.php?msg_id=<?php $row["msg_id"]?>">delete</a>
这里的<?php $row["msg_id"]?>只是在PHP中访问了这个变量,但没有将它输出到HTML页面,所以最终生成的URL会是delete.php?msg_id=,后面没有实际的ID值,自然无法正确传递参数。
修正后的完整代码
只需要在变量前加上echo,把ID值输出到URL中即可:
<?php while($row = mysqli_fetch_assoc($result)) { ?> <li> <?php echo $row["msg"] ;?>(id: <?php echo $row["msg_id"] ;?>) | sent at <?php echo $row["data"] ;?> <a href="message.php">see</a> | <a href="delete.php?msg_id=<?php echo $row["msg_id"]; ?>">delete</a> </li> <?php } ?>
额外优化建议
为了避免XSS攻击(跨站脚本),建议在输出用户提交的数据时,使用htmlspecialchars()函数进行转义,比如:
<?php echo htmlspecialchars($row["msg"]); ?> (id: <?php echo htmlspecialchars($row["msg_id"]); ?>) | sent at <?php echo htmlspecialchars($row["data"]); ?>
这样可以防止恶意脚本被注入到页面中,提升代码的安全性。
内容的提问来源于stack exchange,提问作者bogdaNNN
相关产品推荐
相关产品推荐

