Невозможно получить доступ или назначить переменную имени пользователя для входа в систему - mysql - php - PullRequest
0 голосов
/ 26 мая 2019

Я не могу найти способ доступа к имени пользователя, с помощью которого я входил в мою веб-форму php.

Я просматривал эти сообщения, но я думаю, что мой случай немного отличается, поскольку оба они объявляютПеременная username вверху.Я просто захожу, используя 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, используя вошедшего в систему пользователя, чтобы различать ихот всех других пользователей в сети.

У меня есть это, если проверка, которая должна только поместить кнопку редактирования рядом с пользователем, который вошел в систему.

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");
}

?>

Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

в 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>";
?>
0 голосов
/ 26 мая 2019

Не безопасно, но положить:

<?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'])
...

также вам нужно установить $ logedInUsername равным $ row ['uname'] в welcome.php или проверьте

if($row['uname'] == $_SESSION['uname'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...