PHP在页面上检索当前用户的用户名,然后在sql查询中使用它

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"

我正在制作一个网站,用户必须登录/创建一个帐户,然后他们可以在自己的个人仪表板上键入搜索twitter的术语

要确保他们登录到我拥有的每个页面,请执行以下代码:

<?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
    。那应该是从哪里来的?您应该在登录时设置会话变量,然后在其他地方引用该变量。