Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.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 - Fatal编程技术网

Php 取消设置会话无法正常工作

Php 取消设置会话无法正常工作,php,Php,我想在单击注销按钮时取消设置购物车上的用户名。 如果我想把,如果注销是点击,那么会话将取消,我应该怎么做呢 我的代码有效 但是,当我再次点击登录时, 登录信息未存储在会话中。 它不断要求我再次登录,而不是进行通常的流程。 我能知道怎么了吗 这是我的密码 cart.php $logout = "allproducts.php"; if(isset($logout)) { unset($_SESSION['supermarketcart']); unset($_SESSION['M

我想在单击注销按钮时取消设置购物车上的用户名。 如果我想把,如果注销是点击,那么会话将取消,我应该怎么做呢

我的代码有效 但是,当我再次点击登录时, 登录信息未存储在会话中。 它不断要求我再次登录,而不是进行通常的流程。 我能知道怎么了吗

这是我的密码 cart.php
$logout = "allproducts.php";

if(isset($logout))
{
    unset($_SESSION['supermarketcart']);
    unset($_SESSION['MM_Username']);
}

?>


login.php

<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['username'])) {
  $loginUsername=$_POST['username'];
  $password=$_POST['password'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "index.php";
  $MM_redirectLoginFailed = "login.php?fail=1";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_MyDatabase, $MyDatabase);

  $LoginRS__query=sprintf("SELECT username, password FROM user_data WHERE username=%s AND password=%s",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 

  $LoginRS = mysql_query($LoginRS__query, $MyDatabase) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";

    if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;       

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];  
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>

正如Barmar所说,你总是有一个真实的条件,它总是使你的部分不稳定。相反,您应该做的是为注销页面放置一个静态地址,并传递一个GET变量。让我们将其设置为
$\u获取['logout']
,并将值赋值为1

   <?php 
      if(isset($_SESSION['MM_Username']) == NULL) 
      { 
          echo "<a href='login.php'>Login</a> " ;

      } 
      else 
      { 
          echo " <a href='allproducts.php?logout=1'>Logout</a> "; 
      }
  ?>

尝试取出
session_start()。在
cart.php
中,
isset($logout)
将始终为true,因为您在前一行分配了变量。我不明白您为什么要检查该变量。@Barmar这是因为,如果单击“注销”,我想取消设置该变量variable@Rikesh它无法工作。该变量与单击注销有什么关系?它只是一个无条件赋值的字符串。这就是为什么你的变量总是处于未设置状态。
$logout = "allproducts.php";

if(isset($logout))
{
    unset($_SESSION['supermarketcart']);
    unset($_SESSION['MM_Username']);
}

?>
if($_GET['logout']==1)
{
    unset($_SESSION['supermarketcart']);
    unset($_SESSION['MM_Username']);
}