Witam. Mam pewien problem, zrobiłem system logowania dodałem konto root. Po zalogowaniu stworzyłem panel gdzie można dodawać nowych użytkowników i w momencie kiedy stworze nowego usera to mnie automatycznie na niego przelogowuje. Tak mam tylko na hostingu bo na serwerze lokalnym jestem nadal na koncie na którym byłem wczesniej zalogowany. Niżej pokaże fragmenty tego kodu.
- Strona logowania, sprawdza wpisane dane z danymi z bazy danych, jeżeli konto istnieje to tworze sesje tego uzytkownika i przekierowuje do panelu admina.
$result = $mysqli->query('SELECT * FROM users ORDER BY id');
while( $check_login = mysqli_fetch_array($result) ) // przypisanie do $check_login pojedyńczego wiersza tabeli users
{
if( $_POST['login']==$check_login['login'] && $_POST['password']==$check_login['password'] ) // sprawdzenie wpisnych danych z danymi z tabeli users
{
$_SESSION['logged']=true;
$_SESSION['user_id']=$check_login['id'];
$_SESSION['login']=$check_login['login'];
$_SESSION['permissions']=$check_login['permissions'];
Header("Location: panel/index.php");
}
}
- Zwykly formularz który wysyla dane do pliku add_user.php
<div class="col-12 col-lg-5 mr-5 add_user_form">
<form action="database/add_user.php" method="post">
<h4>Dodaj nowego użytkownika</h4>
<label for="add_user_login">Login: </label>
<input id="add_user_login" class="form-control form-users" type="text" name="add_user_login" placeholder="Nazwa użytkownika">
<label for="add_user_password">Hasło: </label>
<input id="add_user_password" class="form-control form-users" type="password" name="add_user_password" placeholder="Hasło">
<label for="add_user_permissions">Uprawnienia: </label>
<select id="add_user_permissions" name="add_user_permissions">
<option value="2" disabled="disabled">root</option>
<option value="1">pracownik</option>
</select>
<br>
<?php
if($_SESSION['permissions']==2)
{
echo '<input type="submit" class="btn btn-success add_user_button" name="add_user" value="Utwórz użytkownika">';
}
else
{
echo '<input type="submit" disabled="disabled" class="btn btn-success add_user_button" name="add_user" value="Utwórz użytkownika">';
}
?>
</form>
</div>
- Ostatni plik, łączy sie z bazą danych i dodaje nowego uzytkownika do bazy po czym przekierowuje z powrotem do panelu admina
<?php
session_start();
if(isset($_SESSION['logged']) && $_SESSION['logged']==true && isset($_SESSION['permissions']) && $_SESSION['permissions']==2)
{
if(isset($_POST['add_user']))
{
if(!empty($_POST['add_user_login']) && !empty($_POST['add_user_password']))
{
include('db_connect.php');
$login = $_POST['add_user_login'];
$password = $_POST['add_user_password'];
$permissions = $_POST['add_user_permissions'];
$statement = $mysqli->prepare('INSERT users (login, password, permissions) VALUES(?,?,?)');
$statement->bind_param("ssi", $login, $password, $permissions);
$statement->execute();
$statement->close();
Header('Location: ../users.php');
}
else
{
echo "Nie mozesz wprowadzic pustych danych :c";
}
}
}
else {
echo "nie masz uprawnien";
}
?>
Nie rozumiem czemu następuje przelogowanie na nowo utworzonego usera. Sesja nigdzie nie jest nadpisywana. Dodam jeszcze, że na localhost działa normalnie. Jak ktoś masz jakieś propozycje rozwiązania problemu to byłbym wdzięczny, z góry dzięki :) Pozdrawiam