在我的电子商务网站购买确认页面中显示一条警告消息

In my ecommerce website purchase confimation page show a warning message

我正在尝试开发一个电子商务网站。但我的问题是在产品购买确认 page.It 中显示此类消息:(注意:会话已经开始 - 忽略 C:\xampp\htdocs\online shop\dataAccessLayer\dalSession 中的 session_start() .php 第 6 行)我需要一些建议如何解决这个问题。 这是我的代码。

这是我的 dalSession.php 页面:

<?php

class Session
{
public static function Start(){
    session_start(); //line 6
}

public static function Set($key , $value){
    $_SESSION[$key] = $value;
}

public static function Get($key){
    if (isset($_SESSION[$key])) {
        return $_SESSION[$key];
    }
    else{
        return false;
    }
}

public static function Stop(){
    session_destroy();
    header("Location:user/login.php");
}

public static function StopA(){
    session_destroy();
    header("Location:../user/login.php");
}

public static function StopB(){
    session_destroy();
    header("Location:login.php");
}


public static function Check()
{
    self::Start();
    //echo $this->user_id;;
    if (self::Get("Mlogin")==false) 
    {
        self::Stop();
        header("Location:login.php");
    }
}

public static function CheckA(){
    self::Start();
    if (self::Get("Alogin")==false) {
       self::StopA();
       header("Location:../user/login.php");
    }
}

public static function CheckAll()
{
    if (self::Get("Mlogin")==false && self::Get("Alogin")==false) 
    {
        return false;
    }
    else
    {
        return true;    
    }    
}

public static function CheckUserLogin()
{self::Start();
    if (self::Get("Mlogin")==false) 
    {
        return false;
    }
    else
    {
        return true;    
    }    
}

public static function Auto(){
    self::Start();
    if(self::Get("Mlogin")==false){
       echo "<a style=\"color:white;\" href='user/login.php'>Login</a>";
 } else {
       echo "<a style=\"color:red;\" href='?action=logout'>Logout</a>";
      if(isset($_GET['action']) && ($_GET['action']== "logout")){
        self::Stop();
    }
 }

}

 public static function AutoA(){
    self::Start();
    if(self::Get("Mlogin")==false){
       echo "<a style=\"color:white;\" href='login.php'>Login</a>";
    } else {
       echo "<a style=\"color:red;\" href='?action=logout'>Logout</a>";
      if(isset($_GET['action']) && ($_GET['action']== "logout")){
        self::StopB();
       }
   }

  }


  }

  ?>

这是我的 confirm.php 代码:

  <?php
   require_once("/../dataAccessLayer/dalSession.php");
   require_once("/../dataAccessLayer/dalLogin.php");
   session::check();
   ?>

   <?php
    if(isset($_GET['action']) && ($_GET['action']== "logout")){
        Session::Stop();
    }
    ?>
    <!doctype html>
    <html lang="en-US">
    <head>
   <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <title>Success Notification Boxes</title>

   <link rel="stylesheet" type="text/css" media="all" href="style.css">
   <script type="text/javascript" src="https://ajax.googleapis.com          /ajax/libs/jquery/1.9.1/jquery.min.js"></script>
   </head>

  <body>

  <div id="w">
  <div id="content">
  <!-- Icons source http://dribbble.com/shots/913555-Flat-Web-Elements -->
  <div class="notify successbox">
    <h1>Success!</h1>
    <span class="alerticon"><img src="" alt="checkmark" /></span>
    <p>Thanks For Your Purchase.</p>
    <p>Your Purchase Will Deliver Within 72 Hours.</p>
    <p>Any Question? Please Call: <b>+8801721557233</b></p>
    <p></p>
    </div>

    <h1><a class="navbar-brand" href="../index.php">Home</a></h1>


    </div><!-- @end #content -->
    </div><!-- @end #w -->

    </body>
    </html>

您可以修改您的功能Start。替换:

public static function Start(){
    session_start();
}

作者:

public static function Start(){
    if (session_status() == PHP_SESSION_NONE) {
        session_start();
    }
}

它将解决您的问题(不再显示通知)。这个想法是:如果您的会话已经开始,请不要再次开始。

然后,如果它不起作用,请删除 confirm.php 文件中第一个 <?php 之前的所有 space(看起来你在第一个 space 之前有两个 space首先 <?php 但我不确定是不是因为你 copy/pasted 它)。

去掉前面的空格

这些角色正在开始会话。使用一些模板引擎生成 html 可能更好? Smarty、twig 或简单的 php 模板。