• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

System komentarzy z wyświetlaniem autora.

Object Storage Arubacloud
0 głosów
219 wizyt
pytanie zadane 18 czerwca 2015 w PHP przez No Lime Gaduła (4,540 p.)
edycja 18 czerwca 2015 przez No Lime

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. :)

 

1 odpowiedź

+1 głos
odpowiedź 18 czerwca 2015 przez Comandeer Guru (601,110 p.)
Hmmm… To co Ty trzymasz w sesji, że tak się pieprzy? BTW wstaw jeszcze raz 1. kod, bo jest obecnie całkowicie nieczytelny.
komentarz 18 czerwca 2015 przez No Lime Gaduła (4,540 p.)
Zedytowałem i dodałem w zasadzie cały kod który mam w systemie dodawania komentarzy.
komentarz 18 czerwca 2015 przez Comandeer Guru (601,110 p.)
A jakie jest zapytanie przy logowaniu?
komentarz 18 czerwca 2015 przez No Lime Gaduła (4,540 p.)
A czy przypadkiem te zmienna sesyjna $_SESSION['id_user'] się nie nadpisuje ?

EDIT: Dodałem cały kod. Pobiera wszystkie wartości a w tym nasze ID.
komentarz 18 czerwca 2015 przez Comandeer Guru (601,110 p.)
Nie widzę, żeby coś się nadpisywało… Na oko powinno działać bez problemu.

A jak to testujesz?
komentarz 18 czerwca 2015 przez No Lime Gaduła (4,540 p.)
Najpierw loguje się i dodaje komentarz a później sprawdzam w phpMyAdmin czy wartośc poprawnie się dodała. Nastepnie robię to samemu przez telefon lub proszę znajomego aby równolegle zalogował się ze mną i dodał w tym czasie komentarz. To pole w tym momencie nie zapisuje poprawnej wartości ( czasem jest moment w którym to się uda ale dzieje się to nieregularnie i wiadomo - trzeba to poprawić).
komentarz 18 czerwca 2015 przez No Lime Gaduła (4,540 p.)
Wygląda na to, że na razie sprawa się nie komplikuje. Nie wiem w takim razie skąd mogą być wartości zerowe przy obciążeniu maksymalnie trzech użytkowników jednocześnie. Mam parę takich rekordów i nie wiem jak to potraktować. Mam jeszcze jedno pytanie do Ciebie niezwiązane już z tym tematem, napiszę PW żeby nie śmiecić tematu.

Podobne pytania

0 głosów
1 odpowiedź 1,543 wizyt
pytanie zadane 30 grudnia 2018 w PHP przez mi-20 Stary wyjadacz (13,190 p.)
0 głosów
0 odpowiedzi 176 wizyt
pytanie zadane 29 sierpnia 2018 w PHP przez mi-20 Stary wyjadacz (13,190 p.)
0 głosów
1 odpowiedź 180 wizyt

92,573 zapytań

141,423 odpowiedzi

319,648 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...