PHP在页面上检索当前用户的用户名,然后在sql查询中使用它
我正在制作一个网站,用户必须登录/创建一个帐户,然后他们可以在自己的个人仪表板上键入搜索twitter的术语 要确保他们登录到我拥有的每个页面,请执行以下代码:PHP在页面上检索当前用户的用户名,然后在sql查询中使用它,php,session-variables,Php,Session Variables,我正在制作一个网站,用户必须登录/创建一个帐户,然后他们可以在自己的个人仪表板上键入搜索twitter的术语 要确保他们登录到我拥有的每个页面,请执行以下代码: <?php session_start(); if (isset($_SESSION['loggedin'])) { $_SESSION["username"] = $username; echo "(You are logged in)"; } else { echo "(Not logged in)"; echo"
<?php
session_start();
if (isset($_SESSION['loggedin']))
{
$_SESSION["username"] = $username;
echo "(You are logged in)";
}
else
{
echo "(Not logged in)";
echo"<p><a href = 'login.php'>Log In</a>";
echo"<p><a href = 'createaccount.php'>Create Account</a>";
exit();
}
?>
$_SESSION['loggedin'] = 'yes';
$username = $_SESSION['username'];
在代码中,我尝试从登录页面获取他们登录时使用的用户名
<?php
session_start();
//connect to database
$db = mysqli_connect("number", "name",
"password");
//msg if not connected
if (!$db)
{
echo "Sorry!I just can't connect to database";
}
if(isset($_POST['submit'])) {
$username =$_POST['username'];
$password = $_POST['password'];
if(empty($username) OR empty ($password)) {
echo "you missed something";
}
else {
if(!empty($username) && !empty($password)) {
mysqli_select_db ($db,"name");
$qry=" SELECT username FROM login WHERE username= '$username' AND password = '$password';";
$result = mysqli_query($db,$qry);
$num_rows = mysqli_num_rows($result);
if(($num_rows) == 1) {
//username Successful
header("Location:index.php");
$_SESSION['loggedin'] = 'yes';
$username = $_SESSION['username'];
}
else {
//username failed
print '<script type="text/javascript">';
print 'alert("Incorrect infomation. Try again.")';
print '</script>';
}
}
}
}
?>
试试看
而不是
$_SESSION["username"] = $username;
在您的第三个文件中免责声明:此答案不会直接回答您的问题,而是通过在系统中实施更好的体系结构来解决它
您不应该从登录页面获取用户名,而应该在DB中查询您应该存储在会话中的用户ID
您的登录系统架构应遵循以下要求:
从登录表单中获取用户名和密码李>
查询数据库,查找上面用户名和密码的ID和用户李>
将用户ID存储在会话中,如$\u会话['userId']=(从DB返回的某些ID)
然后每次你需要知道用户名时,只需再次查询数据库。这将避免用户更改其用户名时出现问题,并使您的系统更加安全
然后可以删除此代码:
<?php
session_start();
if (isset($_SESSION['loggedin']))
{
$_SESSION["username"] = $username;
echo "(You are logged in)";
}
else
{
echo "(Not logged in)";
echo"<p><a href = 'login.php'>Log In</a>";
echo"<p><a href = 'createaccount.php'>Create Account</a>";
exit();
}
?>
$_SESSION['loggedin'] = 'yes';
$username = $_SESSION['username'];
只需检查$\u会话['userId']
isset()
,即可知道用户是否登录。您的第一个脚本包含$\u会话['username]=$username
,但它从不设置$username
。那应该是从哪里来的?您应该在登录时设置会话变量,然后在其他地方引用该变量。