未设置会话消息。我该如何解决?

时间:2017-12-10 22:12:38

标签: php session message

我希望成员能够向网站提交项目。提交过程有效,项目正确添加到数据库,但会话消息不适用。

    <?php

    require 'db2.php';

$email = $mysqli2->escape_string($_POST['email']);
$itemName = $mysqli2->escape_string($_POST['itemName']);
$image = $mysqli2->escape_string($_POST['image']);
$price = $mysqli2->escape_string($_POST['price']);
$wpSite = $mysqli2->escape_string($_POST['wpSite']);
$description = $mysqli2->escape_string($_POST['description']);
$banned = $mysqli2->escape_string($_POST['omitBox']);




    $sql2 = "INSERT INTO itemsTable (email, itemName, image, price, wpSite, description, banned) " 
            . "VALUES ('$email', '$itemName', '$image', '$price', '$wpSite', '$description', '";


if( empty($_POST["omitBox"]) ) {
 $sql2 .= "0";
} else {
 $sql2 .= "1";
}

$sql2 .= "');";




    if ( $mysqli2->query($sql2) ){

        $_SESSION['message'] = 'Successfully added this item to your wishlist';
        echo'<script> window.location="success.php"; </script> ';

    }

    else {
        $_SESSION['message'] = 'Something went wrong! Please try again!';
        echo'<script> window.location="error.php"; </script> ';
    }

我希望将信息插入数据库(并且没有问题),但在成功页面上,会话消息不存在。成功页面适用于网站的其他部分,但从此页面开始,它不会。

2 个答案:

答案 0 :(得分:0)

只需在文件顶部添加session_start()

即可
<?php
session_start();
require 'db2.php';

......
?>

答案 1 :(得分:0)

您错过了session_start()功能。在创建或设置会话时,您需要启动会话。对于succes.phperror.php文件,还需要测试会话是否存在。所以我建议你做两件事:

  1. session_start()添加到您的主文件中:

    <?php
    // Start the session
    session_start
    // Rest of the code.
    ?>
    
  2. session_start()succes.php个文件中添加error.php +项检查。有很多方法可以测试这个,所以我会告诉你使用isset的方式:

  3. 使用isset功能

    function ifsessionExists(){
    // check if session exists?
      if(isset($_SESSION)){
        return true;
      }else{
        return false;
      }
     }
    

    您也可以使用空函数

     function ifsessionExists(){
    // check if session exists?
      if(!empty($_SESSION)){
        return true;
      }else{
        return false;
      }
     }
    

    希望这有帮助!