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

[CR] PHP (#2): System logowania do strony. Sesja. Wstrzykiwanie SQL

0 głosów
983 wizyt
pytanie zadane 9 sierpnia 2016 w Nasze poradniki przez Mirosław Zelent Nałogowiec (28,430 p.)

CR = Code Review. O co chodzi? Zajrzyj tutaj
Pełna lista wszystkich Code Review? Zajrzyj tutaj

https://www.youtube.com/watch?v=Pp578w7C9hE

connect.php:

<?php

	$host = "localhost";
	$db_user = "root";
	$db_password = "";
	$db_name = "osadnicy";

?>

gra.php:

<?php

	session_start();
	
	if (!isset($_SESSION['zalogowany']))
	{
		header('Location: index.php');
		exit();
	}
	
?>
<!DOCTYPE HTML>
<html lang="pl">
<head>
	<meta charset="utf-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
	<title>Osadnicy - gra przeglądarkowa</title>
</head>

<body>
	
<?php

	echo "<p>Witaj ".$_SESSION['user'].'! [ <a href="logout.php">Wyloguj się!</a> ]</p>';
	echo "<p><b>Drewno</b>: ".$_SESSION['drewno'];
	echo " | <b>Kamień</b>: ".$_SESSION['kamien'];
	echo " | <b>Zboże</b>: ".$_SESSION['zboze']."</p>";
	
	echo "<p><b>E-mail</b>: ".$_SESSION['email'];
	echo "<br /><b>Dni premium</b>: ".$_SESSION['dnipremium']."</p>";
	
?>

</body>
</html>

index.php:

<?php

	session_start();
	
	if ((isset($_SESSION['zalogowany'])) && ($_SESSION['zalogowany']==true))
	{
		header('Location: gra.php');
		exit();
	}

?>

<!DOCTYPE HTML>
<html lang="pl">
<head>
	<meta charset="utf-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
	<title>Osadnicy - gra przeglądarkowa</title>
</head>

<body>
	
	Tylko martwi ujrzeli koniec wojny - Platon<br /><br />
	
	<form action="zaloguj.php" method="post">
	
		Login: <br /> <input type="text" name="login" /> <br />
		Hasło: <br /> <input type="password" name="haslo" /> <br /><br />
		<input type="submit" value="Zaloguj się" />
	
	</form>
	
<?php
	if(isset($_SESSION['blad']))	echo $_SESSION['blad'];
?>

</body>
</html>

logout.php:

<?php

	session_start();
	
	session_unset();
	
	header('Location: index.php');

?>

zaloguj.php:

<?php

	session_start();
	
	if ((!isset($_POST['login'])) || (!isset($_POST['haslo'])))
	{
		header('Location: index.php');
		exit();
	}

	require_once "connect.php";

	$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
	
	if ($polaczenie->connect_errno!=0)
	{
		echo "Error: ".$polaczenie->connect_errno;
	}
	else
	{
		$login = $_POST['login'];
		$haslo = $_POST['haslo'];
		
		$login = htmlentities($login, ENT_QUOTES, "UTF-8");
		$haslo = htmlentities($haslo, ENT_QUOTES, "UTF-8");
	
		if ($rezultat = @$polaczenie->query(
		sprintf("SELECT * FROM uzytkownicy WHERE user='%s' AND pass='%s'",
		mysqli_real_escape_string($polaczenie,$login),
		mysqli_real_escape_string($polaczenie,$haslo))))
		{
			$ilu_userow = $rezultat->num_rows;
			if($ilu_userow>0)
			{
				$_SESSION['zalogowany'] = true;
				
				$wiersz = $rezultat->fetch_assoc();
				$_SESSION['id'] = $wiersz['id'];
				$_SESSION['user'] = $wiersz['user'];
				$_SESSION['drewno'] = $wiersz['drewno'];
				$_SESSION['kamien'] = $wiersz['kamien'];
				$_SESSION['zboze'] = $wiersz['zboze'];
				$_SESSION['email'] = $wiersz['email'];
				$_SESSION['dnipremium'] = $wiersz['dnipremium'];
				
				unset($_SESSION['blad']);
				$rezultat->free_result();
				header('Location: gra.php');
				
			} else {
				
				$_SESSION['blad'] = '<span style="color:red">Nieprawidłowy login lub hasło!</span>';
				header('Location: index.php');
				
			}
			
		}
		
		$polaczenie->close();
	}
	
?>

Paczka do pobrania: TUTAJ

1 odpowiedź

0 głosów
odpowiedź 9 sierpnia 2016 przez xandros Nałogowiec (29,370 p.)
Średnio mam czas na zobaczenie 1.5h filmiku, ale chętnie zobaczę, co da się zrobić z tym kodem:

https://github.com/xandros15/cr-pasjainformatyki-php-2
komentarz 9 sierpnia 2016 przez xandros Nałogowiec (29,370 p.)
na dzisiaj done...
komentarz 10 sierpnia 2016 przez event15 Szeryf (92,060 p.)
static dla database ;>
komentarz 10 sierpnia 2016 przez event15 Szeryf (92,060 p.)
session kill zamiast destruktor?
komentarz 10 sierpnia 2016 przez event15 Szeryf (92,060 p.)
najlepiej ładować query db do routingu.
komentarz 10 sierpnia 2016 przez xandros Nałogowiec (29,370 p.)

> static dla database ;>

Później dodałem wywołanie w kontenerze. Fakt, mogę przenieść całość do kontenera.

> session kill zamiast destruktor?

w sensie nazwa, czy magiczna metoda? :D

najlepiej ładować query db do routingu.

nah, powinno być w osobnych klasach

komentarz 10 sierpnia 2016 przez xandros Nałogowiec (29,370 p.)

Podobne pytania

0 głosów
0 odpowiedzi 839 wizyt
+6 głosów
2 odpowiedzi 1,379 wizyt
pytanie zadane 27 maja 2016 w Nasze poradniki przez Mirosław Zelent Nałogowiec (28,430 p.)
+1 głos
0 odpowiedzi 1,016 wizyt

42,445 zapytań

81,749 odpowiedzi

162,269 komentarzy

20,388 pasjonatów

Przeglądających: 112
Pasjonatów: 1 Gości: 111

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...