Dzień dobry w Nowym 2020 Roku.
Tak, przegrzebałam gugla i to dziesiątki razy, znalazłam metody strukturalne, obiektowe, PDO. Obejrzałam kilka filmików na jutubie. Spędziłam naście jak nie dziesiąt godzin klepiąc, poprawiając, testując i patrząc co wylezie w logach bazy danych php-fpm i bazy danych. Przejrzałam - z nadzieją - przyklejony na górze działu wątek ze Skryptami php ale nie znalazłam nic o logowaniu się do aplikacji WWW.
I jestem ciągle na początku - nie działa a wg paru tutoriali powinno.
Problem: po zalogowaniu nie widzę abym była zalogowana, nie wyświetla się pobrany login z bazy jako login zalogowanego użytkownika.
Apache: 2.4.41
PHP. 7.3.12
MariaDB: 10.3.20
Linux: Fedora 31
Żeby nie było - robię to dla siebie, to nie jest żadne zaliczenie do żadnej szkoły i nikt mi za to nie zapłaci.
Poniżej po kolei: struktura bazy danych i tabeli w niej, html z formularzem, i kolejne istotne pliki PHP.
Tabela:
+-----------------------------+-----------+----------------------+----------------------------------+
| login | imie | nazwisko | pass |
+-----------------------------+-----------+----------------------+----------------------------------+
| jankowalski | Jan | Kowalski | 02ca50c0dc0680dd7325064d979d3f83 |
| januszwisniewki | Janusz | Wiśniewski | 7e55e7adf9224de1d161ad1782baecf9 |
| grzegorzbrzeczyszczykiewicz | Grzegorz | Brzęczyszczykiewicz | 3e0ea140b7f6117df5cd574c72e7b196 |
| marcinkromchalski | Marcin | Krochmalski | a61561482cba57209cd23031f23225cc |
| adambednarz | Adam | Bednarz | d41d8cd98f00b204e9800998ecf8427e |
| ireneuszkosmiderski | Ireneusz | Kośmiderski | c4ca4238a0b923820dcc509a6f75849b |
| gustawwalczynski | Gustaw | Walczyński | c81e728d9d4c2f636f067f89cc14862c |
| annanowakowska | Anna | Nowakowska | eccbc87e4b5ce2fe28308fd9f2a7baf3 |
| katarzynaotowska | Katarzyna | Otowska | a87ff679a2f3e71d9181a67b7542122c |
| test | test | testowy | test |
| ts | test | testowy | 4d682ec4eed27c53849758bc13b6e179 |
| janek | Janek | kowalczyk | |
+-----------------------------+-----------+----------------------+----------------------------------+
Formularz:
<html>
<body>
<form action="form.php" method="post">
<tr>
<td>Login: </td><td> <input type="text" style="border:1px solid #000000" name="user" /></td>
<td>Pass: </td><td><input type="text" style="border:1px solid #000000" name="pass" /></td>
<td></td><td><input type="submit" style="border:1px solid #000000" value="Login" /></td>
</tr>
<br /><br />
</form>
</body>
</html>
form.php - dostaje dane z formularza
<?php
$dbhost = "localhost";
$dbname = "site1";
$dbuser = "site1";
$dbpass = "site1";
try {
$db = new PDO('mysql:host=localhost;dbname=site1;charset=utf8mb4', 'site1', 'site1');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (PDOException $e) {
echo "Connection failed : ". $e->getMessage();
}
$username = trim($_POST['user']);
$password = trim($_POST['pass']);
$msg = "";
if($username == "") {
echo "Brak podanego loginu!";
// header("Location: http://localhost/testsec/form.html");
die();
}
try {
$query = "select * from admin where login='$username' and pass='$password'";
$stmt = $db->prepare($query);
$stmt->bindParam('username', $username, PDO::PARAM_STR);
$stmt->bindValue('password', $password, PDO::PARAM_STR);
$stmt->execute();
$count = $stmt->rowCount();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo '<pre>'; print_r($array); echo '</pre>';
if ($count == 1 && !empty($row)) {
$_SESSION['sess_user_id'] = $row['id'];
$_SESSION['sess_user_name'] = $row['login'];
$_SESSION['sess_name'] = $row['nazwisko'];
} else {
$msg = "Invalid username and/or password";
}
} catch (PDOException $e) {
echo "Error :".$e->getMessage();
}
// debug:
echo $username.'<br />';
echo $password.'<br />';
// jeśli się uda to przekierowuję
header("Location: home.php");
home.php
<?php
session_start();
if(isset($_SESSION['sess_user_id']) && $_SESSION['sess_user_id'] != "") {
echo '<h2>Witaj '.$_SESSION['sess_name'].'</h2>';
echo '<h4><a href="logout.php">Logout</a>';
} else {
header('location: form.html');
}
?>
index.php
<?php
session_start();
if(isset($_SESSION['sess_user_id']) && $_SESSION['sess_user_id'] != "") {
echo '<h2>Witaj '.$_SESSION['sess_name'].'</h2>';
echo '<h4><a href="logout.php">Logout</a>';
} else {
header('location: form.html');
}
?>
logout.php
<?php
session_start();
$_SESSION['sess_user_id'] = "";
$_SESSION['sess_username'] = "";
$_SESSION['sess_name'] = "";
if (empty($_SESSION['sess_user_id'])) header("location: form.html");
?>