Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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_Session - Fatal编程技术网

Php 有没有办法使用未设置的会话

Php 有没有办法使用未设置的会话,php,session,Php,Session,如果单击“删除”按钮,我在浏览器上看不到任何成功消息。 我再次注意到,我注释掉了unset函数 unset($_会话['message']) unset($_SESSION['msg_type']) 该消息将显示在浏览器上,但问题是即使我刷新我的页面,该消息仍将显示,请说明现在可能出现什么问题 My codes: if(isset($_GET['delete'])){ $id = $_GET['delete']; $db->query("DELETE FROM

如果单击“删除”按钮,我在浏览器上看不到任何成功消息。 我再次注意到,我注释掉了unset函数

unset($_会话['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 ?>
我的代码:
如果(isset($\u GET['delete'])){
$id=$\u GET['delete'];
$db->query(“从id=$id的音乐中删除”)或die($db->error());
$\会话['message']=“Rocord已被删除!”;
$\会话['msg\u type']=“危险”;
标题(“location:music.php”);
}
//显示消息
您是否启动了会话? 添加
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中输入值。
请尝试将代码更改为

<?php 
session_start(); 

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");
}
?>

<?php    if(isset($_SESSION['message'])) {?>

<div class="alert alert-<?php echo $_SESSION['msg_type'];?>">

<?php 
        echo $_SESSION['message'];
 
        unset($_SESSION['message']);
        unset($_SESSION['msg_type']);
        
  
    ?> 
</div>

<?php } ?>



另一方面,请确保$id仅对经过身份验证的用户可用,否则有人可以删除其他人的数据。

在PHP中是否启用了错误日志记录?当包含代码时,可能会发生错误?您是否在页面中启动会话?否,但我将如何启用错误记录是的,我启动会话,它位于我的php代码“how will enable error logging”的顶部…只需在Google中键入“php enable error logging”。说真的,这不是你需要问的问题,它有很好的记录