当用户选择动作时,如何结束PHP会话并开始一个新的会话


how to end php session and begin a new one when user chooses action

这与我的问题有关,这与在多个php文件中使用变量有关。Ian Hildebrand和Transcendental都提供了有用的建议。

我想让用户在两个视图View_A和View_B中的一个或两个视图中选择,比如说,从表单中选择早上6点,并查看与该小时有关的数据。如果用户想要查看早上7点的数据,那么他/她只需重新加载表单并选择该时间点并提交。

现在发生的是变量$hour停留在上午6点。因此,用户可以选择他/她想要的任何时间,但仍然可以获得早上6点的数据。

所以我想要的是,当用户选择新的小时时,该动作结束第一个会话并开始一个新的会话。

下面是表单文件中适用的代码:
   <form action='view_A.php' method='post'>
        <label for 'date'><strong>Select an hour for <?php echo $date; ?></strong>
        </label>
        <input type="text" name='hour' data-role="datebox" data-options='{"mode":"timeflipbox","minuteStep":60, "overrideTimeFormat": "%H", "overrideTimeOutput": "%H"}' placeholder='click icon to select hour'>
        <input type='submit' name='submit' value='submit'>
    </form>
    </div>
<?php
if(isset($_POST[ 'submit'])) { 
$_SESSION[ 'hour']=$ _POST[ 'hour']; 
$hour=$ _SESSION[ 'hour']; }
?>

…以及view_A.php

文件中的适用代码
session_start();
error_reporting(E_ALL);
include ("db_connect.php");
date_default_timezone_set('America/Toronto');
$date = date('Y-m-d');
$hour =     $_SESSION['hour'];
$blink = $_SESSION['hour'];
$date_hour = $date.' '.$hour;

这两个文件都以session_start();开头,紧跟在php开始标记之后。

我如何修改表单文件,以便当用户选择一个新的小时,当前会话结束,一个新的开始?

代码中没有if(isset())部分。作为动作,表单将直接将用户引导到view_a .php

必须放在View_A.php

session_start();
error_reporting(E_ALL);
include ("db_connect.php");
date_default_timezone_set('America/Toronto');
$_SESSION['hour'] = $_POST['hour'];
$date = date('Y-m-d');
$hour = $_SESSION['hour'];
$blink = $_SESSION['hour'];
$date_hour = $date.' '.$hour;

尽管你可以直接跳过会话

session_start();
error_reporting(E_ALL);
include ("db_connect.php");
date_default_timezone_set('America/Toronto');
$date = date('Y-m-d');
$hour = $_POST['hour'];
$blink = $_POST['hour'];
$date_hour = $date.' '.$hour;

我希望这解决了你的问题