Szukam rozwiązania mojego problemu.
Otóż chciałbym, aby klient po zalogowaniu miał dostęp do swojego panelu pod adersem np. http://nazwa.pl/panel.php?user=login ale inny użytkownik, z panelem pod adresem np. http://nazwa.pl/panel.php?user=nick już nie miał dostępu do jego panelu. Strona http://nazwa.pl/panel.php?user=login miała byb być generowana automatycznie przy logowaniu. Każdy inny panel miałby inną treść.
Moje skrypty:
Baza danych
CREATE TABLE IF NOT EXISTS `user` ( `id_user` smallint(6) NOT NULL AUTO_INCREMENT, `login` varchar(128) COLLATE utf8_polish_ci NOT NULL, `password` varchar(128) COLLATE utf8_polish_ci NOT NULL, PRIMARY KEY (`id_user`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=2 ; INSERT INTO `user` (`id_user`, `login`, `password`) VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3');
Plik index.php
require_once('db.php'); ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link href="css/style.css" rel="stylesheet" type="text/css" /> <title>Panel klienta</title> </head> <body> <?php /* jeżeli nie wypełniono formularza - to znaczy nie istnieje zmienna login, hasło i sesja auth * to wyświetl formularz logowania */ ?> <form name="form-logowanie" action="index.php" method="post"> Login: <input type="text" name="login" /><br /> Hasło: <input type="password" name="password" /> <input type="submit" name="zaloguj" value="Zaloguj" /> </form> <?php } /* jeżeli istnieje zmienna login oraz password i sesja z autoryzacją użytkownika jest FALSE to wykonaj * skrypt logowania */ // jeżeli pole z loginem i hasłem nie jest puste // dodaje znaki unikowe dla potrzeb poleceń SQL // szyfruję wpisane hasło za pomocą funkcji md5() /* zapytanie do bazy danych * mysql_num_rows - sprawdzam ile wierszy odpowiada zapytaniu mysql_query * mysql_query - pobierz wszystkie dane z tabeli user gdzie login i hasło odpowiadają wpisanym danym */ $sql = mysql_num_rows(mysql_query("SELECT * FROM `user` WHERE `login` = '$login' AND `password` = '$password'")); // jeżeli powyższe zapytanie zwraca 1, to znaczy, że dane zostały wpisane poprawnie i rejestruję sesję if ($sql == 1) { // zmienne sesysje user (z loginem zalogowanego użytkownika) oraz sesja autoryzacyjna ustawiona na TRUE $_SESSION['user'] = $login; $_SESSION['auth'] = TRUE; // przekierwuję użytkownika na stronę z ukrytymi informacjami echo '<p style="padding-top:10px";><strong>Proszę czekać...</strong><br />Trwa logowanie i wczytywanie danych</p>'; } // jeżeli zapytanie nie zwróci 1, to wyświetlam komunikat o błędzie podczas logowania else { } } // jeżeli pole login lub hasło nie zostało uzupełnione wyświetlam błąd else { } } // jeżeli sesja auth jest TRUE to przekieruj na ukrytą podstronę echo '<p style="padding-top:10px"><strong>Proszę czekać...</strong><br />Trwa wczytywanie danych</p>'; } // wyloguj się $_SESSION['user'] = ''; $_SESSION['auth'] = FALSE; } ?> </body> </html>
plik db.php
<?php /*Połączenie z bazą danych*/ $dbhost = 'localhost'; $dblogin = 'root'; $dbpass = ''; $dbselect = 'baza'; ?>
i plik panel.php
require_once('db.php'); ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link href="css/style.css" rel="stylesheet" type="text/css" /> <title>Panel klienta</title> </head> <body> <?php if ($_SESSION['auth'] == TRUE) { } else { echo '<p style="padding-top:10px;color:#ff0";><strong>Próba nieautoryzowanego dostępu...</strong><br />Trwa przenoszenie do strony głównej</p>'; } ?> </body> </html>
Proszę o pilną pomoc!