Php 将表单数据存储为临时会话
我已经看过了,但是没有人说过在用户离开表单后如何撤消会话。对我来说,一旦设置了会话,我想它会一直设置到注销为止。因此,用户名字段,例如,将始终有测试,如果我没有成功或成功地提交了测试的形式,在它,然后只是去一些其他链接。以下是我得到的:Php 将表单数据存储为临时会话,php,session,Php,Session,我已经看过了,但是没有人说过在用户离开表单后如何撤消会话。对我来说,一旦设置了会话,我想它会一直设置到注销为止。因此,用户名字段,例如,将始终有测试,如果我没有成功或成功地提交了测试的形式,在它,然后只是去一些其他链接。以下是我得到的: $_SESSION['temp_username'] = $_POST['username']; 您可以使用$\u SESSION['temp\u username']=null,或其他一些默认值或unset。您可以使用$\u SESSION['temp\u
$_SESSION['temp_username'] = $_POST['username'];
您可以使用$\u SESSION['temp\u username']=null,或其他一些默认值或unset。您可以使用$\u SESSION['temp\u username']=null,或其他一些默认值或unset。只要在不需要时清除会话数据即可。您可以对临时变量执行unset 但出于同样的原因,我认为最好将表单存储更深一层:
$_SESSION['formdata'] = $_POST; // Save the form
然后,您可以将用户名检索为$\u会话['formdata']['username']或取消设置$\u会话['formdata']。只需在不需要时清除会话数据即可。您可以对临时变量执行unset 但出于同样的原因,我认为最好将表单存储更深一层:
$_SESSION['formdata'] = $_POST; // Save the form
然后,您可以将用户名检索为$_会话['formdata']['username']或取消设置$_会话['formdata']。一旦完成$_会话['temp_username'],您就可以取消设置它
unset($_SESSION['temp_username'])
或者,您可以调用session\u unset来清除所有会话数据。您可以在完成$u会话['temp\u username']后随时取消其设置
unset($_SESSION['temp_username'])
或者您可以调用session\u unset来清除所有会话数据。我写了一些东西来解决这个问题。基本上,我将表单数据设置为会话变量。如果HTTP referer与PHP脚本的名称不同,会话变量会将其重置为新数组。否则,它会将新数据合并到现有表单数据中。该脚本还允许您设置默认值,并清理输入 您可能会更改它以擦除或取消设置会话值,但这对我来说很有效
$form = array();
if(isset($_SESSION['form']) && isset($_SERVER['HTTP_REFERER']) && strrpos($_SERVER['HTTP_REFERER'], $_SERVER['SCRIPT_NAME']) !== false) {
$form = $_SESSION['form'];
}
if(isset($_SESSION['defaults']) && is_array($_SESSION['defaults'])) {
$defaults = $_SESSION['defaults'];
unset($_SESSION['defaults']);
}
else {
$defaults = array();
}
function addValues($arr, &$form) {
foreach($arr as $key=>$value) {
$form[$key] = mysql_real_escape_string(strip_tags(stripslashes($value)));
}
}
if(sizeof($_POST) > 0) {
addValues($_POST, $form);
}
if(sizeof($_GET) > 0) {
addValues($_GET, $form);
}
$_SESSION['form'] = array_merge($defaults, $form);
用法:
$_SESSION['defaults'] = array(
'button'=>'first'
);
include_once "formdata.php";
请注意,这样可以很好地简化表单,您不必测试索引,也不用使用if语句在默认值和表单值之间切换,以设置初始加载和回发时的表单值。我写了一些东西来解决这个问题。基本上,我将表单数据设置为会话变量。如果HTTP referer与PHP脚本的名称不同,会话变量会将其重置为新数组。否则,它会将新数据合并到现有表单数据中。该脚本还允许您设置默认值,并清理输入 您可能会更改它以擦除或取消设置会话值,但这对我来说很有效
$form = array();
if(isset($_SESSION['form']) && isset($_SERVER['HTTP_REFERER']) && strrpos($_SERVER['HTTP_REFERER'], $_SERVER['SCRIPT_NAME']) !== false) {
$form = $_SESSION['form'];
}
if(isset($_SESSION['defaults']) && is_array($_SESSION['defaults'])) {
$defaults = $_SESSION['defaults'];
unset($_SESSION['defaults']);
}
else {
$defaults = array();
}
function addValues($arr, &$form) {
foreach($arr as $key=>$value) {
$form[$key] = mysql_real_escape_string(strip_tags(stripslashes($value)));
}
}
if(sizeof($_POST) > 0) {
addValues($_POST, $form);
}
if(sizeof($_GET) > 0) {
addValues($_GET, $form);
}
$_SESSION['form'] = array_merge($defaults, $form);
用法:
$_SESSION['defaults'] = array(
'button'=>'first'
);
include_once "formdata.php";
请注意,这使得表单非常简捷,您不必测试索引,也可以使用if语句在默认值和表单值之间切换,以设置初始加载和回发时的表单值。太好了,谢谢。但是,我应该什么时候取消它?我如何确定用户何时离开表单页面?您可以使用计时器-在给定的秒数后,formdata被发送到data heaven-或者您可以将其留在原来的位置:毕竟,其他页面为什么要为$u会话['formdata']而烦恼?重要的是不要污染基本$\u会话数据;如果条件合适,您只需设置,例如,$\u SESSION['is\u Administrator'],太好了,谢谢。但是,我应该什么时候取消它?我如何确定用户何时离开表单页面?您可以使用计时器-在给定的秒数后,formdata被发送到data heaven-或者您可以将其留在原来的位置:毕竟,其他页面为什么要为$u会话['formdata']而烦恼?重要的是不要污染基本$\u会话数据;如果条件正确,您只需设置,例如,$\u SESSION['is\u Administrator']。