无法访问或分配登录用户名变量 - mysql - php

Cannot access or assign login username variable - mysql - php

我找不到访问我在 php 网络表单上登录时使用的用户名的方法。

我看过这些帖子,但我认为我的情况略有不同,因为它们都在顶部声明了用户名变量。我只是使用 sql 查询登录。

这是登录脚本

<?php
$uname=$_POST['uname'];
$password=$_POST['password']; 
session_start();

$con=mysqli_connect("localhost","root","g7trj98o6fyr5","login");//mysqli("localhost","username of database","password of database","database name")
$result=mysqli_query($con,"SELECT * FROM `login_info` WHERE `uname`='$uname' && `password`='$password'");
$count=mysqli_num_rows($result);
if($count==1)
{
    echo "Login success";
    $_SESSION['log']=1;
    header("refresh:2;url=welcome.php");

}
else
{
    echo "please fill proper details";
    header("refresh:2;url=index.php");
}
?>

我希望能够使用当前登录的用户进行 if 检查,以将他们与所有其他在线用户区分开来。

我有这个 if 检查应该只将编辑按钮放在登录用户旁边。

while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['uname'] . "</td>";
echo "<td>" . $row['clickrate'] . "</td>";
if($logedInUsername == $row['uname'])
    echo "<td>" . $row['yourword'] . "<a href='edityourword.php?edit=$row[yourword]'> edit</a></td>";
else
    echo "<td>" . $row['yourword'] . "</td>";
echo "</tr>";
}
echo "</table>";
?>

welcome.php(if 语句所在的位置)

<?php

function add_ant(&$connection)
{
    mysqli_query($connection, "UPDATE `login_info` SET `clickrate`=`clickrate`+'1' WHERE `uname`='rvbvakama' && `password`='pass'");
}

session_start();

if(isset($_SESSION['log']))
{

$_SESSION['uname'] = $_POST['uname'];

echo "<script type='text/javascript'>alert('$logedInUsername');</script>";
$con=mysqli_connect("localhost","root","pass","login"); //mysqli("localhost","username of database","password of database","database name")

if(array_key_exists('add',$_POST))
{
   add_ant($con);
}

$result = mysqli_query($con,"SELECT * FROM login_info");
if (!$result) 
{
    printf("Error: %s\n", mysqli_error($con));
    exit();
}

echo "<table border='1'>
<tr>
<th>username</th>
<th>clickrate</th>
<th>yourword</th>
</tr>";

while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['uname'] . "</td>";
echo "<td>" . $row['clickrate'] . "</td>";
if($logedInUsername == $_SESSION['uname'])
    echo "<td>" . $row['yourword'] . "<a href='edityourword.php?edit=$row[yourword]'> edit</a></td>";
else
    echo "<td>" . $row['yourword'] . "</td>";
echo "</tr>";
}
echo "</table>";
?>

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<h1>Add ants</h1>
<button type='button' name="add">ADD</button> <br/> <br/>
<a href="index.php" >logout</a>
</body>
</html>
<?php
}
else
{
    echo "please fill proper details";
    header("refresh:2;url=index.php");
}

?>

谢谢。

不安全,但放:

<?php
$uname=$_POST['uname'];
$password=$_POST['password']; 
session_start();

$con=mysqli_connect("localhost","root","g7trj98o6fyr5","login");//mysqli("localhost","username of database","password of database","database name")
$result=mysqli_query($con,"SELECT * FROM `login_info` WHERE `uname`='$uname' && `password`='$password'");
$count=mysqli_num_rows($result);
if($count==1)
{
    echo "Login success";
    $_SESSION['log']=1;
    $_SESSION['uname'] = $_POST['uname'];
    header("refresh:2;url=welcome.php");

}
else
{
    echo "please fill proper details";
    header("refresh:2;url=index.php");
}
?>

然后检查:

if($logedInUsername == $_SESSION['uname'])
...

您还需要在 welcome.php 中将 $logedInUsername 设置为 $row['uname'] 或检查

if($row['uname'] == $_SESSION['uname'])

在login.php登录成功后执行这个 $_SESSION['uname'] = $_POST['uname'];

在welcome.php中执行这个 $logedInUsername = $_SESSION['uname'];

现在登录的用户名存储在$logedInUsername中供welcome.php使用,这是因为SESSION在php中是一个全局变量,可以从任何地方访问。

while 循环和其中的 if 语句现在应该如下所示:

while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['uname'] . "</td>";
echo "<td>" . $row['clickrate'] . "</td>";
if($row['uname'] == $logedInUsername)
    echo "<td>" . $row['yourword'] . "<a href='edityourword.php?edit=$row[yourword]'> edit</a></td>";
else
    echo "<td>" . $row['yourword'] . "</td>";
echo "</tr>";
}
echo "</table>";
?>