我正在浏览我的注册和登录表单,困扰我的是我为每个表单的各个变量定义了几个会话。这就是我所说的:
我的注册表格的一部分:
$pass = md5($pass);
$regSQLI = "INSERT INTO users (id, email, birth_date, first_name, last_name, password, sign_up_date, activated) VALUES ('','$em','$bday','$fn','$ln','$pass','$sud','0')";
$regQuery = mysqli_query($con, $regSQLI);
//variables that will be passed over from the register fields to forthcoming sessions
$_SESSION["email_login"] = $em;
$_SESSION["first_name"] = $fn;
$_SESSION["last_name"] = $ln;
我的登录表单的一部分:
if ($userCount == 1) { //if the search finds a matching record of the login input form
while( $row = mysqli_fetch_assoc($sqli)) { // use fetch_assoc
$id = $row["id"];
}
$_SESSION["email_login"] = $email_login;
$_SESSION["first_name"] = $fn;
$_SESSION["last_name"] = $ln;
header("location: home.php");
exit();
}
else {
echo '<div id="regerrormsg">Login information is invalid. </div>';
}
}
一切正常,但我想知道是否可以通过清理必须唤起多个会话来节省一些性能。我有多个会话的原因是因为即使用户将使用他们的电子邮件进行注册和登录,系统也会按照他们的名字来回复/回复它们:
<?php
echo $_SESSION["first_name"]." ".$_SESSION["last_name"].".";
?>
有没有办法让我可以将一个会话变量(可能是电子邮件)作为验证器,并从数据库中检索与相关会话变量相对应的数据?那会更干净,更顺畅吗?谢谢。
答案 0 :(得分:1)
一切看起来都很正常,并且通过fiddeling可能没有太多表现。
最重要的是,您的代码实际上并未显示要求用户通过表单输入的内容,或者实际要求数据库搜索的内容...这可能是优化的点数。位。
......而且,你似乎误解了超级全球>>> a = Type_1(1,2,3,4,5) # making an instance of Type_1
>>> b = Type_2(1,2,3,4,5) # making an instance of Type_2
>>> a.push(b) # pushing one to another
>>> b.variable2 # it worked!
0
>>> a.variable1 # it worked!
6
究竟是什么。
您认为'多个会话'的内容实际上只是一个标准会话:一个包含您想要放入的任意数量的键/值对的数组。
当您致电$_SESSION
时,会自动生成和/或从文件/内存/数据库(您的保存处理程序)加载session_start();
,设置Cookie或使用$完成网址重写_得到。全部取决于您的设置。
答案 1 :(得分:-1)
U可以在会话中保存userid的数据,并可以使用它来从其他表中获取数据。