Php 如何最有效地取消对会话变量的签名?
我目前正在做一个学校项目,我应该从我选择的某个应用程序(本例中为网页w/php)访问数据库,我遇到了一个问题。在我的函数NewUser()中,创建帐户后,登录窗口中会弹出一条消息(它是瑞典语的,所以不用担心,呵呵),但问题是: 考虑到我使用了会话,消息将始终存在,并且在我以某种方式重新启动会话(在本例中,重新启动服务器)之前,消息将永远不会被删除,这并不是真正的最佳选择 例如,我想在每次重新加载页面时删除消息,如果可能的话 您所能提供的任何帮助都是有帮助的,我只是想知道当页面重新加载时,关闭会话的最佳方法是什么 致以最良好的祝愿, 胜利者Php 如何最有效地取消对会话变量的签名?,php,session,Php,Session,我目前正在做一个学校项目,我应该从我选择的某个应用程序(本例中为网页w/php)访问数据库,我遇到了一个问题。在我的函数NewUser()中,创建帐户后,登录窗口中会弹出一条消息(它是瑞典语的,所以不用担心,呵呵),但问题是: 考虑到我使用了会话,消息将始终存在,并且在我以某种方式重新启动会话(在本例中,重新启动服务器)之前,消息将永远不会被删除,这并不是真正的最佳选择 例如,我想在每次重新加载页面时删除消息,如果可能的话 您所能提供的任何帮助都是有帮助的,我只是想知道当页面重新加载时,关闭会话
是,只需使用:
unset($_会话['message'])代码>
如果要删除所有会话数据(我认为您不需要),可以根据您的意图使用session\u destroy()
或session\u unset()
。是的,只需使用:
unset($_会话['message'])代码>
如果您想删除所有会话数据(我认为您不需要),可以根据您的意图使用session\u destroy()
或session\u unset()
。好的,看起来很简单。好的,有没有一种方法可以在每次刷新页面或其他时候都这样做的函数中实现呢?您可能不需要函数来实现它。你可以在打印完消息后立即取消设置。但是如果我在打印完消息后立即使用取消设置,消息将永远不会显示?@Marante:你说消息永远不会显示是什么意思?没关系,我只是完全延迟了。。。谢谢你们的帮助,现在一切正常!好吧,看起来很容易。好的,有没有一种方法可以在每次刷新页面或其他时候都这样做的函数中实现呢?您可能不需要函数来实现它。你可以在打印完消息后立即取消设置。但是如果我在打印完消息后立即使用取消设置,消息将永远不会显示?@Marante:你说消息永远不会显示是什么意思?没关系,我只是完全延迟了。。。谢谢你们的帮助,现在一切正常!
<?php
session_start();
ini_set("display_errors", true);
error_reporting( E_ALL );
include('connect.php');
function NewUser()
{
global $email;
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$pnumber = $_POST['pnumber'];
$age = $_POST['age'];
$email = $_POST['email'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
global $mysqli;
$stmt = $mysqli->prepare("INSERT INTO persons (firstname, lastname, pnumber, age, email, pwd)
VALUES (?,?,?,?,?,?)");
$stmt->bind_param('ssssss', $firstname, $lastname, $pnumber, $age, $email, $password);
$stmt->execute();
if ($mysqli)
{
$_SESSION['accountCreated'] = "Ditt konto har skapats, du kan nu logga in!";
header("Location:index.php");
exit();
}
else
{
echo ("<script type='text/javascript'>
window.alert('Oj, det blev något fel i registreringen! Försök igen');
window.location = 'index.php';
</script>");
exit();
}
}
function SignUp()
{
if(!empty($_POST['email']))
{
global $mysqli;
$query = ("SELECT * FROM persons WHERE email = ?");
if ($stmt = $mysqli->prepare($query))
{
$stmt->bind_param('s', $_POST['email']);
$stmt->execute();
$stmt->store_result();
$countRows = $stmt->num_rows;
$stmt->close();
}
if($countRows < 1)
{
$_SESSION['emailExistsError'] = "";
$_SESSION['message'] = "success";
NewUser();
}
else
{
$_SESSION['accountCreated'] = "";
$_SESSION['emailExistsError'] = "Denna mejladdressen har redan använts!";
$_SESSION['message'] = "error";
header("Location:index.php");
exit();
}
}
}
if(isset($_POST['submit']))
{
$close = false;
if(empty($_POST["firstname"]))
{
$_SESSION['fnameError'] = "Du måste fylla i ditt förnamn!";
$close = true;
} else {
$_SESSION['fnameError'] = "";
}
if(empty($_POST["lastname"]))
{
$_SESSION['lnameError'] = "Du måste fylla i ditt efternamn!";
$close = true;
} else {
$_SESSION['lnameError'] = "";
}
if(empty($_POST["email"]))
{
$_SESSION['emailError'] = "Du måste fylla i din e-mail!";
$close = true;
} else {
$_SESSION['emailError'] = "";
}
if(empty($_POST["password"]))
{
$_SESSION['passwordError'] = "Du måste fylla i ett lösenord!";
$close = true;
} else {
$_SESSION['passwordError'] = "";
}
if(empty($_POST["pnumber"]))
{
$_SESSION['pnumberError'] = "Du måste fylla i ditt personnummer!";
$close = true;
} else {
$_SESSION['pnumberError'] = "";
}
if(empty($_POST["age"]))
{
$_SESSION['ageError'] = "Du måste fylla i din ålder!";
$close = true;
} else {
$_SESSION['ageError'] = "";
}
if($close == true) {
header("Location:index.php");
exit();
} else {
SignUp();
}
}
$mysqli->close();
?>