Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Uprawnienia
Forum PHP.pl > Forum > PHP
Loped
Witam. Próbuje zrobić lokacje do której ma dostęp tylko admin. Nie wiem jak to dokładnie zrobić. Próbuje coś w stylu:

  1. <?php
  2. $nazwa_uz = $_SESSION['prawid_uzyt'];
  3.   $lacz = lacz_bd();
  4.  
  5.   $admin = $lacz->query("SELECT AS rank FROM uzytkownik WHERE nazwa_uz='$nazwa_uz'");
  6.  
  7.   if ($admin -> fields['rank'] != "Admin")
  8.   {
  9.       error (NOT_ADMIN);
  10.   }
  11. ?>


lecz nie wychodzi...
drake88
Akurat piszę swojego CMS'a więc masz szczęście, musisz tylko przerobić do swoich potrzeb (obrazki etc.)

admin.php (logowanie do panelu)

Kod
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<meta name="Language" content="pl">
<title>Panel administracyjny :: Logowanie</title>
<link rel="stylesheet" href="style.css" type="text/css">
<body>
<center><div id="rnd_container"><b class="rnd_top"><b class="rnd_b1"></b><b class="rnd_b2"></b><b class="rnd_b3"></b><b class="rnd_b4"></b></b><div class="rnd_content"><form action="pa.php" method="post">
    <b>Login:</b> <input type="text" name="login" /> <b>Hasło:</b> <input type="password" name="pass" /><br>
<br>
<input type="image" src="images/zaloguj.png" />
</form></div><b class="rnd_bottom"><b class="rnd_b4"></b><b class="rnd_b3"></b><b class="rnd_b2"></b><b class="rnd_b1"></b></b></div></center>

</body>
</head>
</html>


pa.php (panel administracyjny)

Kod
<?php
ob_start();
session_start();
?>
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<meta name="Language" content="pl">
<title>Panel administracyjny :: Index</title>
<link rel="stylesheet" href="style.css" type="text/css">
<body>
<?
$_SESSION['login'] = $_POST["login"]; // rejestrujemy sesję, której rekord (zawarto¶ć) będzie wynosił tekst napisany w polu login
$_SESSION['pass'] = $_POST['pass']; // rejestrujemy sesję, której rekord (zawarto¶ć) będzie wynosił tekst napisany w polu pass

if (($_SESSION['login'] == 'test') && ($_SESSION['pass'] == 'test')) { // jeżeli sesja login (zawarto¶ć pola login) równa się test i sesja pass (zawarto¶ć pola pass)
    echo '<center><ul id="menu"><li><a href="dodaj_news.php" title="news">Dodaj newsa</a></li><li><a href="#" title="Products">Products</a></li><li><a href="#" title="Services">Services</a></li><li><a href="#" title="Support">Support</a></li><li><a href="wyloguj.php" title="wyloguj">Wyloguj się</a></li></ul></center>'; } else { echo '<center>Niepoprawny login lub hasło, za chwilę nastąpi przekierowanie..</center><META HTTP-EQUIV=Refresh CONTENT="3; URL=admin.php">'; }; // wy¶wietl tekst udało sie! w przypadku innych wy¶wietl blad!
?>

</body>
</head>
</html>


Login i hasło do panelu to test oraz test. Można to zmienić w treści pa.php
Loped
Ale mi bardziej chodzi aby zrobić coś takiego, że jeśli w polu rank mam rangę Admina to moge wejść do danej lokacji.
1010
Zapytanie jest poprawne?

Zwraca coś?

Sprawdź to
- mysql_num_rows" title="Zobacz w manualu PHP" target="_manual
- mysql_error" title="Zobacz w manualu PHP" target="_manual
Loped
Pokazuje się error:

  1. <?php
  2. Fatal error:  Call to un in /virtual/a/c/***/dodaj.php on line 17
  3. ?>


I nie wyświetla mi pełnych errorów. To chyba wina serwera...
1010
która to linika?
kantek
Select 'co' as rank questionmark.gif tam w zapytaniu czegoś brakuje nazwy kolumny w której ten rank przetrzymujesz.

Pozdrawiam
Loped
  1. <?php
  2. error (NOT_ADMIN);
  3. ?>
Spawnm
  1. <?php
  2. $admin = $lacz->query("SELECT AS rank FROM uzytkownik WHERE nazwa_uz='$nazwa_uz'");
  3.  
  4.  if ($admin -> fields['rank'] != "Admin")
  5. ?>

w query() return masz mysql_fetch_assoc ?
Loped
Nie mam. A powinienem mieć?
Spawnm
tak smile.gif
Loped
Ok. Mam tak:

  1. <?php
  2. $nazwa_uz = $_SESSION['prawid_uzyt'];
  3. $lacz = lacz_bd();
  4.  
  5.  $sql="SELECT rank FROM uzytkownik WHERE nazwa_uz='$nazwa_uz'";
  6.  $query = $lacz->query($sql);
  7.  if($result = $query->fetch_assoc())
  8.  {
  9.        echo ' '.($result['rank']).' ';
  10. }
  11. ?>


Wyświetla mi rangę jaką ma użytkownik. Jak moge postawic do tego if'a aby dostęp do lokacji miał tylko admin?
Spawnm
  1. <?php
  2. if($result['rank'] == 'Admin'){
  3. //jest admin
  4. }
  5. ?>


//edit
staraj się samemu rozwiązywać tak proste problemy ...
marcio
O lol:
  1. <?php
  2. if($result['rank'] == 'admin') {
  3.  
  4. //costam dla admina
  5.  
  6. }
  7.  
  8. else echo('Nie masz dostepu!!');
  9. ?>
Loped
Dałem tak:

  1. <?php
  2. if($result = $query->fetch_assoc())
  3.  {
  4.      if($result['rank'] !="Admin")
  5.      {
  6.     echo '<center>Nie jesteś adminem!!</center>';
  7. {
  8. require "includes/foot.php";
  9. }
  10. exit();
  11. }
  12. }
  13. ?>


teraz pytanie... czy ten kod jest w miarę bezpieczny?
Spawnm
a ten kod ma sens ?
po co 3cia { questionmark.gif
Loped
A czmu miałby nie mieć?

Chodzi mi, aby dostęp do lokacji miał tylko admin. Prościej mówiąc... Panel admina ;P
1010
A co ta klamra otwiera niby?
1010
  1. <?php
  2. if($result = $query->fetch_assoc())
  3.     if($result['rank'] !="Admin")
  4.        die("Nie jesteś adminem!!");
  5.  
  6. //tutaj juz rzeczy które może widzieć tylko admin
  7. ?>


takie proste rozwiązanie winksmiley.jpg
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.