Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Sesje - logowanie użytkowników
Forum PHP.pl > Forum > Przedszkole
daros17
Hey

Mam pewien skrypt logowania z sesjami i nie wiem jak zrobić aby użytkownik oraz admin widzieli tą samą stronę. Chodzi mi o to, że

admin ma przypisane w bazie np id=1 a użytkownik id=0

i jak to teraz zrobić aby każdy typ użytkownika widział tą samą stronę czyli np test.pl/admin.php tyle że użytkownik będzie miał inne opcje a administrator inne.

tu jest kod logowanie.php

  1. require('functions.php');
  2.  
  3. if (isset($_POST['submit'])) {
  4.  
  5. $login =htmlspecialchars($_POST['login']);
  6. $password =htmlspecialchars($_POST['password']);
  7.  
  8.  
  9. $query = mysql_query("SELECT * FROM `users` WHERE `nazwa` = '$login' AND `haslo` = '$password' ");
  10.  
  11. if(@mysql_num_rows($query)) {
  12.  
  13. header('Location: admin/index.php');
  14.  
  15.  
  16.  
  17. echo 'Zostales poprawnie zalogowany, jako <strong>'.$login.'</strong>. Witaj!<br />';
  18.  
  19.  
  20. $_SESSION['zalogowany'] = true;
  21. $_SESSION['login'] = $login;
  22. }
  23.  
  24. else {
  25.  
  26. echo 'Podane dane sa bledne!';
  27. return false;
  28.  
  29. }
  30.  
  31.  
  32. return false;
  33.  
  34. }
  35.  
  36. if ($_SESSION['zalogowany']) {
  37. echo ('Witaj <strong>'.$_SESSION['login'].'<br />');


a tutaj plik admin.php

  1. <?php
  2. if (isset($_POST["login"]) && $_POST["typ"]=="0") {
  3. $typ = $_SESSION["typ"];
  4.  
  5. exit();
  6. }
  7. else
  8. {
  9. if (isset($_POST["login"]) && $_POST["typ"]=="1") {
  10. $typ = $_SESSION["typ"];
  11.  
  12.  
  13. }
  14. }
  15. ?>
  16. <HTML>
  17. <HEAD>
  18. <TITLE>Panel</TITLE>
  19. </HEAD>
  20. <BODY>
  21.  
  22.  
  23.  
  24. <?php
  25. if ( $typ==0)
  26. {
  27. echo "Witaj " . $_SESSION["login"];
  28. echo 'test0';
  29. }
  30. else
  31. {
  32. if ( $typ==1)
  33. {
  34. echo "Witaj " . $_SESSION["login"];
  35. echo 'test1';
  36. }
  37. }
  38. ?>
  39.  
  40.  
  41. </BODY>
  42. </HTML>
  43.  


niestety nie działa to co napisałem...
CuteOne
  1.  
  2. switch($_POST['typ']) {
  3.  
  4. case 1:
  5. require_once 'admin.php';
  6. break;
  7.  
  8. case 2:
  9. require_once 'uzytkownik.php';
  10. break;
  11. }
Ulysess
id użytkownika to co innego , musisz zrobić dodatkowe pole np status 0 - uzytkonik 1 mod 2 admin np
na stronie sprawdzasz jaki status ma dany użytkownik a następnie dzięki NP ifowi lub switch wyświetlasz dane dla danego użytkownika
daros17
kolumna grupa ma 0 lub 1

zrobiłem tak ale nie działa jeśli kolumna nazywa się grupa to wówczas daję np if ($_POST['grupa'])... ?

  1. <?php
  2. require("functions.php");
  3. connection();
  4. $query = mysql_query("SELECT * FROM `users` WHERE `grupa` = 1 ");
  5.  
  6. if(@mysql_num_rows($query)) {
  7.  
  8. require_once("admin.php");
  9.  
  10. echo "Witaj " . $_SESSION["login"];
  11. }
  12. else
  13. {
  14. $query = mysql_query("SELECT * FROM `users` WHERE `grupa` = 0 ");
  15.  
  16. if(@mysql_num_rows($query)) {
  17.  
  18. require_once("user.php");
  19.  
  20. echo "Witaj " . $_SESSION["login"];
  21. }
  22. }
  23.  
  24. ?>
ciekawskiii
dobrze kombinujesz ale nie wiem dokladnie o co Ci chodzi nie lepiej zrobic to dopiero po logowaniu?

napisz sobie funkcje ktora wyswietla tylko dane dla admina i tyle
CuteOne
źle...

  1. $query = mysql_query("SELECT * FROM `users` WHERE `login` = '{$login}' ");
  2. $row = mysql_fetch_array($query)) {
  3.  
  4. switch($row['grupa']) {
  5.  
  6. case 1:
  7. require_once 'admin.php';
  8. break;
  9.  
  10. case 2:
  11. require_once 'uzytkownik.php';
  12. break;
  13. }
Compiler
Cytat(user767 @ 7.11.2010, 08:59:23 ) *




  1. if($login != $admin_login){ // jeśli niezgodne, czyli to user
  2. $zapytanie = "SELECT logowanie.login, logowanie.haslo, logowanie.id_osoba FROM
  3. logowanie WHERE login='$login' ";
  4. $wynik = mysql_query($zapytanie);
  5. if(mysql_num_rows($wynik) > 0) {
  6. while($r = mysql_fetch_array($wynik)) { // porównanie
  7. $haslo_baza = $r['haslo']; // dane wysłane z md5($_POST) z md5($haslo)
  8. $login_baza = $r['login'];
  9. $osoba = $r['id_osoba'];
  10. $_SESSION['id_zal'] = $r['id_osoba']; // nadanie wartości zmiennej ses.
  11. }}}


Wyjaśnisz mi co tutaj robisz? (Chcę abyś sam zrozumiał)
daros17
Dalej mi to nie działa...

@CuteOne wywala błąd w tym kodzie.

Po zalogowaniu użytkownik oraz admin ma być przenoszony do pliku admin/index.php tyle że każda z grup ma widzieć co innego. Wówczas if daje w pliku admin/index.php tak?
Compiler
index.php:

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4. </head>
  5. <body>
  6. <form action="logowanie.php" method="post">
  7. <br /><br />Login:<br />
  8. <input name="Login" type="text"/>
  9. <br /><br />Hasło:<br />
  10. <input name="Haslo" type="password" size="18" />
  11. <br /><br />
  12. <input type="submit" name="wyslij" value="Zaloguj" class="button" />
  13. </form>
  14. </body>
  15. </html>


logowanie.php :

  1. <?php
  2. $connection = @mysql_connect('localhost', 'root', '');
  3. $db = @mysql_select_db('testowa', $connection);
  4. $q="select status from users where login ='".$_POST['Login']."' and haslo='".$_POST['Haslo']."'";
  5. $wynik = mysql_query($q,$connection);
  6. mysql_close($connection);
  7. if(mysql_num_rows($wynik) == 1)
  8. {
  9. $r = mysql_fetch_row($wynik);
  10. if ($r[0]==0)
  11. echo 'Witamy usera !';
  12. else
  13. if ($r[0]==1)
  14. echo 'Witamy admina !';
  15. }
  16. else
  17. echo 'Zły login lub hasło !';
  18. ?>


Struktura tabeli:
id int,
status tinyint,
login varchar,
haslo varchar

Oczywiście jest to uproszczony na maksa przykład bez walidacji danych itp itd.
daros17
nie do końca to działa, ponieważ po wpisaniu dobrych danych wyświetla się napis że dane są złe i błąd Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
user767
Cytat
Wyjaśnisz mi co tutaj robisz? (Chcę abyś sam zrozumiał)


Wszystko jest napisane w komentarzach, przykro mi. sadsmiley02.gif
Compiler
Cytat(daros17 @ 7.11.2010, 17:44:41 ) *
nie do końca to działa, ponieważ po wpisaniu dobrych danych wyświetla się napis że dane są złe i błąd Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource


Musi działać. Testowałem i działa dobrze. Może pochrzaniłeś coś w bazie ?
wstaw
$wynik = mysql_query($q,$connection) OR die (mysql_error());
zamiast
$wynik = mysql_query($q,$connection);

I pokaż błąd.
CuteOne
Czy to tak trudno kliknąć w google i zobaczyć co oznacza ten błąd?questionmark.gif

Cytat
Po zalogowaniu użytkownik oraz admin ma być przenoszony do pliku admin/index.php tyle że każda z grup ma widzieć co innego. Wówczas if daje w pliku admin/index.php tak?

tak
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.