Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Panel klientów
lukas123
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 15.01.2014
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Witam!

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
  1. CREATE TABLE IF NOT EXISTS `user` (
  2. `id_user` smallint(6) NOT NULL AUTO_INCREMENT,
  3. `login` varchar(128) COLLATE utf8_polish_ci NOT NULL,
  4. `password` varchar(128) COLLATE utf8_polish_ci NOT NULL,
  5. PRIMARY KEY (`id_user`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=2 ;
  7.  
  8. INSERT INTO `user` (`id_user`, `login`, `password`) VALUES
  9. (1, 'admin', '21232f297a57a5a743894a0e4a801fc3');


Plik index.php
  1. <?php session_start();
  2. require_once('db.php');
  3. ?>
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <link href="css/style.css" rel="stylesheet" type="text/css" />
  8. <title>Panel klienta</title>
  9. </head>
  10.  
  11. <body>
  12.  
  13. <?php
  14. /* jeżeli nie wypełniono formularza - to znaczy nie istnieje zmienna login, hasło i sesja auth
  15.   * to wyświetl formularz logowania
  16.   */
  17. if (!isset($_POST['login']) && !isset($_POST['password']) && $_SESSION['auth'] == FALSE) {
  18. ?>
  19.  
  20. <form name="form-logowanie" action="index.php" method="post">
  21. Login: <input type="text" name="login" /><br />
  22. Hasło: <input type="password" name="password" />
  23. <input type="submit" name="zaloguj" value="Zaloguj" />
  24. </form>
  25.  
  26. <?php
  27. }
  28. /* jeżeli istnieje zmienna login oraz password i sesja z autoryzacją użytkownika jest FALSE to wykonaj
  29.   * skrypt logowania
  30.   */
  31. elseif (isset($_POST['login']) && isset($_POST['password']) && $_SESSION['auth'] == FALSE) {
  32.  
  33. // jeżeli pole z loginem i hasłem nie jest puste
  34. if (!empty($_POST['login']) && !empty($_POST['password'])) {
  35.  
  36. // dodaje znaki unikowe dla potrzeb poleceń SQL
  37. $login = mysql_real_escape_string($_POST['login']);
  38. $password = mysql_real_escape_string($_POST['password']);
  39.  
  40. // szyfruję wpisane hasło za pomocą funkcji md5()
  41. $password = md5($password);
  42.  
  43. /* zapytanie do bazy danych
  44.   * mysql_num_rows - sprawdzam ile wierszy odpowiada zapytaniu mysql_query
  45.   * mysql_query - pobierz wszystkie dane z tabeli user gdzie login i hasło odpowiadają wpisanym danym
  46.   */
  47. $sql = mysql_num_rows(mysql_query("SELECT * FROM `user` WHERE `login` = '$login' AND `password` = '$password'"));
  48.  
  49. // jeżeli powyższe zapytanie zwraca 1, to znaczy, że dane zostały wpisane poprawnie i rejestruję sesję
  50. if ($sql == 1) {
  51.  
  52. // zmienne sesysje user (z loginem zalogowanego użytkownika) oraz sesja autoryzacyjna ustawiona na TRUE
  53. $_SESSION['user'] = $login;
  54. $_SESSION['auth'] = TRUE;
  55.  
  56. // przekierwuję użytkownika na stronę z ukrytymi informacjami
  57. echo '<meta http-equiv="refresh" content="1; URL=hide.php">';
  58. echo '<p style="padding-top:10px";><strong>Proszę czekać...</strong><br />Trwa logowanie i wczytywanie danych</p>';
  59. }
  60.  
  61. // jeżeli zapytanie nie zwróci 1, to wyświetlam komunikat o błędzie podczas logowania
  62. else {
  63. echo '<p style="padding-top:10px;color:red";>Błąd podczas logowania do systemu<br />';
  64. echo '<a href="index.php">Wróć do formularza</a></p>';
  65. }
  66. }
  67.  
  68. // jeżeli pole login lub hasło nie zostało uzupełnione wyświetlam błąd
  69. else {
  70. echo '<p style="padding-top:10px;color:red";>Błąd podczas logowania do systemu<br />';
  71. echo '<a href="index.php">Wróć do formularza</a></p>';
  72. }
  73. }
  74.  
  75. // jeżeli sesja auth jest TRUE to przekieruj na ukrytą podstronę
  76. elseif ($_SESSION['auth'] == TRUE && !isset($_GET['logout'])) {
  77. echo '<meta http-equiv="refresh" content="1; URL=panel.php">';
  78. echo '<p style="padding-top:10px"><strong>Proszę czekać...</strong><br />Trwa wczytywanie danych</p>';
  79. }
  80.  
  81. // wyloguj się
  82. elseif ($_SESSION['auth'] == TRUE && isset($_GET['logout'])) {
  83. $_SESSION['user'] = '';
  84. $_SESSION['auth'] = FALSE;
  85. echo '<meta http-equiv="refresh" content="1; URL=index.php">';
  86. echo '<p style="padding-top:10px"><strong>Proszę czekać...</strong><br />Trwa wylogowywanie</p>';
  87. }
  88. ?>
  89.  
  90. </body>
  91.  
  92. </html>


plik db.php
  1. <?php
  2. /*Połączenie z bazą danych*/
  3. $dbhost = 'localhost';
  4. $dblogin = 'root';
  5. $dbpass = '';
  6. $dbselect = 'baza';
  7. mysql_connect($dbhost,$dblogin,$dbpass);
  8. mysql_select_db($dbselect) or die("Błąd przy wyborze bazy danych");
  9. mysql_query("SET CHARACTER SET UTF8");
  10. ?>


i plik panel.php
  1. <?php session_start();
  2. require_once('db.php');
  3. ?>
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <link href="css/style.css" rel="stylesheet" type="text/css" />
  8. <title>Panel klienta</title>
  9.  
  10. </head>
  11.  
  12. <body>
  13.  
  14. <?php if ($_SESSION['auth'] == TRUE) {
  15. echo 'UKRYTA TREŚĆ!<br />';
  16. echo '<a href="index.php?logout">Wyloguj się</a>';
  17. }
  18. else {
  19. echo '<meta http-equiv="refresh" content="0; URL=index.php">';
  20. echo '<p style="padding-top:10px;color:#ff0";><strong>Próba nieautoryzowanego dostępu...</strong><br />Trwa przenoszenie do strony głównej</p>';
  21. }
  22. ?>
  23.  
  24. </body>
  25.  
  26. </html>


Proszę o pilną pomoc!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Strona panelu nie potrzebuje zadnego usera w linku
czyli nie: http://nazwa.pl/panel.php?user=nick
a poprostu: http://nazwa.pl/panel.php

Skoro panel ma sie wyswietlac dla zalogowanego usera, to wchodzac w panel, przeciez wiesz kto jest zalogowany i wyswietlasz tylko jego dane
Go to the top of the page
+Quote Post
lukas123
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 15.01.2014
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Mógłbyś mi to przybliżyć jakimś kodzikiem? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No ale czego nie wiesz? Jak pobrac z sesji danych aktualnego usera?
$_SESSION['user']
Dobrze by bylo, zebys zapisywac do sesji tez ID usera

Czegos innego? To napisz czego. Jak oczekujesz, ze ktos za Ciebie to zrobi, to dzial Gielda Ofert sie klania.
Go to the top of the page
+Quote Post
lukas123
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 15.01.2014
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Nie chcę pobierać danych sesji tylko osobne informacje.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




(IMG:style_emoticons/default/facepalmxd.gif)

Ale w sesji masz info, dla jakiego usera chcesz te dane pobrac. Przeciez ci to tlumacze od poczatku. Majac te dane z sesji, czyli na chwile obecna login usera, wyswietlaj mu teraz co chcesz.

ps: i nie zakladaj 100 watkow na forum o tym samym.
Go to the top of the page
+Quote Post
lukas123
post
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 15.01.2014
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Czyli muszę w bazie dodać
  1. `info` varchar(128) COLLATE utf8_polish_ci NOT NULL,


a w php
  1. $_SESSION['info']


?
Go to the top of the page
+Quote Post
Turson
post
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Czy ty w ogóle nadążasz z rozumowaniem tego co nospor pisze? Masz w sesji zachowany np. nick usera - $_SESSION['user'] czy id - $_SESSION['user_id'] i na podstawie tego budujesz panel.
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




piszac "info" mialem na mysli, ze wiesz jaki user jest aktualnie zalogowany. W sesji masz zapisany jego LOGIN. Zacznij prosze czytac w koncu z troche wiekszą uwagą.
Mając ten LOGIN wiesz dla jakiego usera wyswietlasz panel i co masz wyswietlic.
Powód edycji: [nospor]:
Go to the top of the page
+Quote Post
lukas123
post
Post #10





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 15.01.2014
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Nie jestem w tym temacie ogarnięty i nie wiem jak to zrobić :/
Go to the top of the page
+Quote Post
phpion
post
Post #11





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Przecież do $_SESSION['user'] zapisujesz login zalogowanego użytkownika, czyli możesz go wyświetlić:
  1. echo 'UKRYTA TREŚĆ dla '.$_SESSION['user'].'!<br />';

Do sesji zapisuj też ID użytkownika (nie tylko login), dzięki czemu w zapytaniach do bazy będziesz mógł ograniczyć dane do zalogowanego użytkownika:
  1. $query = 'SELECT * FROM tabela WHERE user_id = '.$_SESSION['user_id'];

W powyższym pominąłem kwestie zabezpieczeń, ale generalnie tak mogłoby to działać.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 17:00