Php 开会失败
我试图在提交这两个表单时使用php mysqli创建一个注册和登录页面,用户被重定向到main.php,其中标题菜单有home、inbox等菜单,但如果未登录的用户访问main.php,他们将看到注册和登录菜单。但是这里我的header.php无法识别会话。登录后,用户标题菜单应更改为主页、收件箱等,但登录后仍显示注册登录菜单 register.phpPhp 开会失败,php,session,Php,Session,我试图在提交这两个表单时使用php mysqli创建一个注册和登录页面,用户被重定向到main.php,其中标题菜单有home、inbox等菜单,但如果未登录的用户访问main.php,他们将看到注册和登录菜单。但是这里我的header.php无法识别会话。登录后,用户标题菜单应更改为主页、收件箱等,但登录后仍显示注册登录菜单 register.php 在我看来,在header.php中,如果isset$\u SESSION['userid']始终为false。你应该有一个更好的方法来做这件事。
在我看来,在header.php中,如果isset$\u SESSION['userid']始终为false。你应该有一个更好的方法来做这件事。比如: 因为您有两个场景可以使用/设置会话或cookie,即 1当用户注册/注册时 2当用户登录/登录时 对于场景1 在数据库中插入新记录的查询完成后。使用会话,或者我更喜欢设置一个cookie来存储用户信息,并将他/她重定向到main.php 例如:
$reg_query = "INSERT INTO signup(First_Name, Last_Name, Gender)
VALUES('$fname', '$lname', '$gender')";
$reg_run = mysqli_query($con, $reg_query);
$Month = 86400 + time();
setcookie('user', $uname, $Month);
echo "The cookie has been set.";
header("Location:main.php");
$log_que = "SELECT * FROM login WHERE username = '$user' AND password = '$pass' ";
$log_run = mysqli_query($con, $log_que);
$row = mysql_fetch_array($log_run);
$user_db = $log_row['username'];
$pass_db = $log_row['password'];
if($user == $user_db && $pass == $pass_db)
{
echo "LOGGED IN!";
$Month = 86400 + time();
setcookie('user', $user, $Month);
header("Location:main.php");
}
<?php
if(isset($_COOKIE['user']))
{
unset($_COOKIE['user']);
setcookie('user', '', time() - 3600, 'login.php');
setcookie('user', '', time() - 3600, 'signup.php');
echo "<script type='text/javascript'>alert('YOU HAVE LOGGED OUT!')</script>";
}
header("refresh:1; url=welcomepage.php");
?>
对于场景2
在成功检查/匹配用户是否已注册后。设置cookie并将他/她移动到main.php
例如:
$reg_query = "INSERT INTO signup(First_Name, Last_Name, Gender)
VALUES('$fname', '$lname', '$gender')";
$reg_run = mysqli_query($con, $reg_query);
$Month = 86400 + time();
setcookie('user', $uname, $Month);
echo "The cookie has been set.";
header("Location:main.php");
$log_que = "SELECT * FROM login WHERE username = '$user' AND password = '$pass' ";
$log_run = mysqli_query($con, $log_que);
$row = mysql_fetch_array($log_run);
$user_db = $log_row['username'];
$pass_db = $log_row['password'];
if($user == $user_db && $pass == $pass_db)
{
echo "LOGGED IN!";
$Month = 86400 + time();
setcookie('user', $user, $Month);
header("Location:main.php");
}
<?php
if(isset($_COOKIE['user']))
{
unset($_COOKIE['user']);
setcookie('user', '', time() - 3600, 'login.php');
setcookie('user', '', time() - 3600, 'signup.php');
echo "<script type='text/javascript'>alert('YOU HAVE LOGGED OUT!')</script>";
}
header("refresh:1; url=welcomepage.php");
?>
现在,在main.php上应该应用如下检查:
<?php
if(isset($_COOKIE['user']))
{
echo '<nav id = "navigation">
<ul>
<li><a href = "welcome.php">Home</a></li>
<li><a href = "index.php">View</a></li>
<li><a href = "myprofile.php">Profile</a></li>
</ul>
</nav>
<div id = "line"></div>';
}
else
{
echo '<nav id = "navigation">
<ul>
<li><a href = "welcome.php">Home</a></li>
<li><a href = "index.php">View</a></li>
<li><a href = "login.php">Login</a></li>
<li><a href = "signup.php">Signup</a></li>
</ul>
</nav>
<div id = "line"></div>';
}
?>
注意:研究mysqli/PDO以及如何避免SQL注入/XSS。
如果你正在使用会话。只需将cookie替换为会话即可
并在注销页面上正确取消设置/销毁它们
你为什么要开始上课;在一个文件中两次?好的,我删除了第二次会话,但这段代码有什么问题请大家注意..thnks for help bro,但仍然不起作用我的登录代码使用的main.php与您使用的完全相同。@Harman在if语句之后从哪里得到“$un”和“$pswd”?此外,您正在使用不推荐使用的“mysql\u fetch\u array;”将其更改为“mysqli\u fetch\u array;”相反,$un和$pswd是我用来将数据插入注册页面的users表中的变量。它也有问题,所以这就是问题所在吗?以前我使用单个页面进行注册和登录,但现在我使用单独的页面,很抱歉将其更改为mysqli aswell@Harman将action=更改为空或将上面发布的php写入main.php。只要你按下提交按钮,它就会把你带到main.php,因此不会运行上面写的php.thnks brother现在一切正常,但当我在登录表单中输入错误的密码时,浏览器会弹出在用户重定向到main.php之前记住密码,我想这与代码无关?