20. PHP – logowanie


Login: admin

Hasło: admin

baza ->baza_cms

-- phpMyAdmin SQL Dump
-- version 5.1.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Czas generowania: 01 Mar 2022, 12:53
-- Wersja serwera: 10.4.21-MariaDB
-- Wersja PHP: 8.0.10
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Baza danych: `baza_cms`
--
-- --------------------------------------------------------
--
-- Struktura tabeli dla tabeli `users`
--
CREATE TABLE `users` (
  `id` int(6) NOT NULL,
  `login` varchar(255) NOT NULL,
  `pass` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Zrzut danych tabeli `users`
--
INSERT INTO `users` (`id`, `login`, `pass`) VALUES
(1, 'admin', '$2y$10$Y1U9pwLzteMGAwvMHMXGGe.h3zMiTR2lKqYAzBKSQtytThGHZJASW');
--
-- Indeksy dla zrzutów tabel
--
--
-- Indeksy dla tabeli `users`
--
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT dla zrzuconych tabel
--
--
-- AUTO_INCREMENT dla tabeli `users`
--
ALTER TABLE `users`
  MODIFY `id` int(6) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

conn_data.php

<?php
$serwer='localhost'; //127.0.0.1  
$user='root';
$pass='';
$baza='baza_cms';
//łączenie z bazą
$db = @new mysqli($serwer, $user, $pass, $baza); //podejście obiektowe - korzystamy z klasy PHP o nazwie mysqli
conn_close.php
<?php
$db->close(); //zamykamy połączenie
?>

index.php

<?php
#login:admin
#hasło:admin

session_start();

include_once('conn_data.php');
//sprawdzamy czy się łączy w podejściu obiektowym
if ($db->connect_error) {
    die('Błąd połączenia: ' . $db->connect_error);
} else {
    if (!isset($_POST['logowanie'])) {echo 'zaloguj się<br>';$msg='';}
    else
    {
        $msg='';
        $login=htmlspecialchars(stripslashes(trim($_POST['login'])));
        $haslo=htmlspecialchars(stripslashes(trim($_POST['haslo'])));
        if (empty($login) || empty($haslo))
        {
        $msg='Brak loginu lub hasła!';
        }
        else
        {
            $sql="SELECT * FROM `users` WHERE `login` = ?";
            $stmt = $db->prepare($sql);    
            $stmt->bind_param("s", $login);
            $stmt->execute();
            $wynik = $stmt->get_result();
            $ile_znaleziono = $wynik->num_rows;
           
            if ($ile_znaleziono>0) {
                $kolumna=$wynik->fetch_array();
                if(password_verify($haslo,$kolumna['pass'])){
                    $_SESSION['msg']='Jesteś zalogowany';
                    $_SESSION['witaj']=$login;
                    header("location: main.php");
                }  
                else { $msg='Podałeś błedne hasło!';}          
            }
            else { $msg='Nie ma w bazie użytkownika o takim loginie!';}        
        }      
    }  
}    
include_once('conn_close.php');
?>

<!DOCTYPE html>
<html>
<head>
    <title>Moja strona</title>
    <meta charset="UTF-8">  
</head>
<body>  
    <form method="post" action="">
        <span style="color: red;"><?=$msg;?></span>    
        <input type="text" name="login">
        <input type="password" name="haslo">
        <button type="submit" name="logowanie">Loguj
    </form>
</body>
</html>

main.php

<?php
session_start();
if($_SESSION['witaj']){
    echo 'Witaj: '.$_SESSION['witaj'].'<br>';
    if (isset($_GET['wyloguj'])) {
        session_destroy();
        header("location: index.php");
    }
    echo "<a href=\"?wyloguj\">wyloguj</a>";
}else{
    header("location: index.php");
}

PHP – logowanie


index.php

 <?php      
session_start();

/*odkomentuj żeby sprawdzić czy usunęło sesję
echo $_SESSION['msg'].'<br>';
echo 'Witaj: '.$_SESSION['witaj'].'<br>';
*/

/*tak się hashuje hasło podczas rejestracji
echo password_hash($pass,PASSWORD_DEFAULT);*/

if (!isset($_POST['logowanie'])) {echo 'zaloguj się<br>';$msg='';}
else
{
	$msg='';
	$login=trim($_POST['login']);
	$haslo=trim($_POST['haslo']);
	if (empty($login) || empty($haslo)) 
	{
	  $msg='Brak loginu lub hasła!';
	}
	else
	{
		$serwer='localhost'; //127.0.0.1  
		$user='root';
		$pass='';
		$baza='baza_aplikacje';
		$db = new mysqli($serwer, $user, $pass, $baza);
		if(!$db){die('Błąd połączenia: '.mysql_error());}
		else{echo 'Połączenie nawiązano<br>';}
					
		$wyniki=$db->query("SELECT * FROM admins WHERE login = '$login'");	
		$ile_znaleziono = $wyniki->num_rows;
		
		if ($ile_znaleziono>0) {
			$kolumna=$wyniki->fetch_array();
			if(password_verify($haslo,$kolumna['pass'])){
				$_SESSION['msg']='Jesteś zalogowany'; 
				$_SESSION['witaj']=$login;
				header("location: cms/index.php");
			}	
			else { $msg='Podałeś błedne hasło!';}			
		}
		else { $msg='Nie ma w bazie użytkownika o takim loginie!';}			
	}		
}	
?>

<!DOCTYPE html>
<html>
<head>
	<title>Moja strona</title>
	<meta charset="UTF-8">	
</head>
<body>	

	<form method="post" action="">
		<span style="color: red;"><?=$msg;?></span>		
		<input type="text" name="login">
		<input type="password" name="haslo">
		<button type="submit" name="logowanie">Loguj
				

	</form>
			
	

</body>
</html>

…cms/index.php

 <?php
session_start();

echo $_SESSION['msg'].' jako: '.$_SESSION['witaj'].'<br>';

if (isset($_GET['wyloguj'])) {
	session_destroy(); 
	header("location: ../index.php");
}

$serwer='localhost'; //127.0.0.1  
$user='root';
$pass='';
$baza='baza_aplikacje';
$db = new mysqli($serwer, $user, $pass, $baza);
if(!$db){die('Błąd połączenia: '.mysql_error());}else{echo 'Połączenie z bazą nawiązano<br><br>';}

include('menu.php');
echo '<br><br><br>';

if (isset($_GET['str'])) 
{
	if (file_exists($_GET['str'].".php"))
	{
		include($_GET['str'].'.php');
	}
	else
	{
		echo "nie ma takiej strony";
	}
}



$db->close();  //Zamknij połączenie na końcu.
?>

…cms/dodaj.php

<?php
if (isset($_POST['dodaj'])) {
//dodawanie rekordów do tabeli w bazie
$rezultat_zapytania = $db->query("INSERT INTO tabela (tekst) VALUES ('".$_POST['tekst']."')");

if($rezultat_zapytania===TRUE){echo "wykonano zapytanie: INSERT INTO tabela (tekst) VALUES ('".$_POST['tekst']."')<br><br>";} else {echo 'nie wykonano zapytania<br><br>';}
}



?>
<!DOCTYPE html>
<html>
<head>
	<title>Dodaj wpis</title>
	<meta charset="UTF-8">	
</head>
<body>	

	<form method="post" action="">
		<textarea name="tekst" rows="4" cols="30"></textarea>
		<button type="submit" name="dodaj">dodaj</button>
	</form>
			
	

</body>
</html>

…cms/pokaz.php

<?php

echo $_POST['edytuj'];
echo $_POST['usun'];


$wyniki=$db->query("SELECT * FROM tabela");
?>
<form method="post" action="">
<?php
while($kolumna=$wyniki->fetch_array())
{
	echo $kolumna['id_tabela'].'=>'.$kolumna['tekst'];
	?>
	<button type="submit" name="edytuj" value="<?=$kolumna['id_tabela'];?>">edytuj</button>
	<button type="submit" name="usun" value="<?=$kolumna['id_tabela'];?>">usun</button>
	<br>
	<?php
}

?>
</form>

…cms/pokaz.php

<a href="?str=pokaz">wyświetl zawartość</a>
<a href="?str=dodaj">dodaj zawartość</a>
<a href='?wyloguj'>wyloguj</a>