php - 有没有办法使用未设置的会话
问题描述
如果单击删除按钮,我在浏览器上看不到任何成功消息。我再次注意到我注释掉了未设置的功能
unset($_SESSION['message']);
unset($_SESSION['msg_type']);
该消息将显示在浏览器上,但问题是即使我刷新页面,该消息仍会显示,请问现在可能是什么问题。
My codes:
if(isset($_GET['delete'])){
$id = $_GET['delete'];
$db->query("DELETE FROM music WHERE id=$id") or die($db->error());
$_SESSION['message'] = "Rocord has been deleted!";
$_SESSION['msg_type'] = "danger";
header("location: music.php");
}
//display message
<?php
session_start();
if(isset($_SESSION['message'])):?>
<div class="alert alert-<?=$_SESSION['msg_type']?>">
<?php
echo $_SESSION['message'];
unset($_SESSION['message']);
unset($_SESSION['msg_type']);
?> </div>
<?php endif ?>
解决方案
你开始会议了吗?session_start();
如果您还没有添加,请在文件顶部添加。
您的代码容易受到 SQL 注入,并且您没有过滤或验证传入的数据。如果在这里您期望一个数值,例如 5,为什么不对其进行过滤或类型转换为 int 以确保这是您真正想要的值。如果它是一些危险的 SQL 而不是数值怎么办?
$id = (int) $_GET['id'];
OR
$id = filter_var($_GET['id'], FILTER_SANITIZE_NUMBER_INT);
类型转换或过滤会将任何非数字值变为 0。
$db->query("DELETE FROM music WHERE id=$id")
你不应该像那样在你的 SQL 中放置值。 如何防止 SQL 注入?
推荐阅读
- react-native - 隐藏在 DrawerNavigator 下的自定义 TabBarIcon - React Navigation v5
- python - Django 子查询,注释。有什么方法可以连接三个表进行查询以查找 django 中某个字段的总和(查询集 api)?
- android - 使用 Agora 自动创建频道,无需管理服务器和令牌
- python - 具有 2 个不同类别的 OOP 的 Tkinter,带有“循环导入”错误
- javascript - 即使在数百甚至数千个错误之后,网站如何继续运行?
- reactjs - 反应 | 同步自定义(范围)滚动反应无限滚动
- mule - apiKit 路由器 Mule4 后多部分/表单数据损坏
- angular - 关于 RXJS 运算符“withLatestFrom”的解释
- sse - 从 __m128 内在函数中获取 uint64_t?
- php - 试图获取非对象 yii 的属性