Witam wszystkich. Mam mały kłopot odnośnie mojego systemu komentarzy zaimplementowanego na mojej stronie. Więc zacznijmy od początku jak on działa i wyjaśnie w czym tkwi problem.
Po pierwsze mam system logowania/rejestracji więc tylko zalogowany użytkownich może dodać komentarz. W momencie gdy znajdzie użytkownika w bazie ustawia zmienną sesyjną logged na true oraz ustawia zmienną sesyjną id z wartością ID z bazy mySQL tego usera który obecnie się zalogował. Oto fragment:
<?php
session_start();
require_once "connect.php";
$tekst = mysqli_real_escape_string($link, $_POST['tekst']);
$autor = mysqli_real_escape_string($link, $_POST['autor']);
$tytul = mysqli_real_escape_string($link, $_POST['tytul']);
$id= $_SESSION['id_user'];
$sql = 'INSERT INTO kawaly SET
tekst="' . $tekst . '",
autor="' . $autor . '",
datapasty=NOW(),
tytul="' . $tytul . '",
idautora="' .$id.'"';
if(!mysqli_query($link,$sql))
{
echo 'Nie udalo się wysłać zapytania. Błąd: '.mysqli_error($link);
exit();
}
else{
header('Location: . ');
}
?>
Po drugie, w momencie dodawnia komentarza wysyła do kolumny idautora wartość odpowiadającą ID użytkownika który ten komentarz wysłał (ID pochodzi właśnie z tej zmiennej sesyjnej ustawionej przy zalogowaniu). Fragment kodu:
<?php
session_start();
require_once "connect.php";
$login = $_POST['login'];
$_SESSION['login_rola'] = $_POST['login'];
$haslo = $_POST['haslo'];
$login = htmlentities($login, ENT_QUOTES, "UTF-8");
$haslo = htmlentities($haslo, ENT_QUOTES, "UTF-8");
$login_cln = mysqli_real_escape_string($link, $login);
$haslo_cln = mysqli_real_escape_string($link, $haslo);
$sql = "SELECT * FROM user WHERE login='$login_cln' AND password='$haslo_cln'";
if ($rezultat = mysqli_query($link,$sql))
{
$ilu_userow = $rezultat->num_rows;
if($ilu_userow>0)
{
$_SESSION['zalogowany'] = true;
$wiersz = $rezultat->fetch_assoc();
$_SESSION['id_user'] = $wiersz['id'];
unset($_SESSION['blad']);
header('Location: ../');
} else {
$_SESSION['blad_logowania'] = '<span style="color:red;">Nieprawidłowy login lub hasło!</span>';
header('Location: /logowanie');
exit();
}
}
?>
No dobrze, nie działa to w 100%. Mianowicie gdy ja rejestruje nowe konto, loguje się na nie, dodaje komentarz to zostaje on poprawnie dodany do bazy wraz z właściwą wartością kolumny idautor. Mogę również to wyświetlić już za pomocą relacji INNER JOIN user ON user.id=idautor;
Zatem co tu szwankuje - w momencie gdy tylko JEDNA osoba jest zalogowana, wszytko działa jak należy. Zaś gdy loguje się druga i chcę dodać komentarz, dodaje do kolumny idautor dziwne wartości. Raz NULL, raz 0. Mój domysł jest taki, że po prostu zmienną sesyjną $id napisuje i kod "wariuje". Czy jest jeszcze inna metoda przechowywania informacji o tym, który użytkownik został zalogowany i KTÓRY obecnie dodaje komentarz? Myślałem nad cookies, czy aby na pewno jest to dobra koncepcja? Pozdrawiam i serdecznie dziękuje za KAŻDĄ próbę pomocy. :)