php - 单击href时如何在php中保留变量的值?
问题描述
对于我正在为我的新业务开发的网站,我创建了一种让客户创建帐户和登录的方法。当客户登录时,我用 PHP 制作了一个日历,它连接到 SQL 以显示我的服务的可用时间。在我的网页代码顶部,它验证从前一个屏幕上的表单中获取的帐户
<?php
include 'DB_connect.php';
$PHONE = $_POST['phone'];
$PASSWORD = $_POST['password'];
$sql = "SELECT * FROM users WHERE phone = '$PHONE' AND pass = '$PASSWORD';";
$result = mysqli_query($link,$sql);
$check = mysqli_fetch_array($result);
if (!isset($check)) {
echo 'Incorrect Username/Password Combination';
exit();
}
?>
在日历上,当您在月份之间切换时,我创建了一个 href 以像这样在 php 中打印出日历
<h4><a href="?ym=<?php echo $prev;?>"><</a><?php echo $html_title; ?><a href="?ym=<?php echo $next; ?>">></a></h4>
但是当切换到上个月和下个月时,它会重新运行顶部的代码,检查用户的登录信息,因为没有任何值
$PHONE = $_POST['phone'];
$PASSWORD = $_POST['password'];
因此,当尝试在我的日历上的月份之间切换时,它最终会注销用户。我需要做什么才能让用户在月份之间切换时保持登录状态?有没有办法在用户登录后将电话和密码变量更改为常量?我已经坚持了好几天了,一直没能弄清楚。请帮忙!
解决方案
你会想看看session。您应该在验证用户凭据后启动会话。$_SESSION
然后,您可以使用超级全局在会话中存储您需要的任何用户信息。
在后续交互中,您检查会话是否有效,而不是重新验证用户凭据。
您还应该解决 SQL 注入漏洞并在数据库中正确散列密码。
登录表格 POST:
<?php
if(/*Verify user credentials*/){
session_start();
$_SESSION["user"]=$user;
}
?>
已验证的页面视图:
<?php
session_start();
if(isset($_SESSION["user"])){
//Do authenticated actions
}
else{
//User is not authenticated
}
?>
处理会话的许多其他方面过于深入,无法在此描述。例如,您需要为会话正确配置过期时间并考虑存储机制。如果您在负载均衡器后面运行应用程序,则需要一个中央会话存储位置(如数据库或 Redis)。还有许多其他因素需要考虑。
推荐阅读
- node.js - 与 Kubernetes 连接外部 Oracle 数据库时出现随机错误
- r - 使用管道中的标识符列创建一个具有最大值的新列
- ruby-on-rails - 更改“请匹配请求的格式。” 别的东西?
- python - 我是否需要为 Django 客户端的 JWT 令牌实现刷新系统?
- javascript - 如何发出多个请求并将数据对象保存到新数组中
- python - 我可以将 pyNaCl 密封盒与现有的 openssh 密钥对一起使用吗?
- javascript - 为什么我的 html 代码中的函数没有被调用?
- mysql - 存储国家代码+电话的最佳索引选择
- flutter - 调用 setState 时如何维护随机生成的值?| 扑
- sorting - 通过 Trace 对 Pytorch 张量进行排序