如何结束php会话并在用户选择操作时开始新的会话

时间:2015-09-23 17:43:37

标签: php session

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

我想让用户从表单中选择比如早上6点,并在两个视图View_A和View_B中查看与该小时相关的数据。如果用户想要从上午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;

这两个文件在打开php标记后立即以session_start();开头。

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

1 个答案:

答案 0 :(得分:0)

你永远不会去代码的if(isset())部分。 作为动作,表单将直接将用户引导至Vieuw_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;

我希望这能解决你的问题