Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Prawa dostępu
Forum PHP.pl > Forum > Przedszkole
KomputeromaniaK
Witam.
Mam takowy skrypt:
index.php
Kod
<?php
session_start();
session_register("zalogowany");

if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;


require_once("../config.php");
                        mysql_select_db("account");

function ShowLogin($komunikat=""){
        echo "$komunikat<br>";
        echo "<form action='index.php' method=post>";
        echo "Login: <input type=text name=login><br>";
        echo "Hasło: <input type=password name=haslo><br>";
        echo "<input type=submit value='Zaloguj!' class=button>";
        echo "</form>";
        
}

?>
<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  <meta name="Description" content="Tu wpisz opis zawarto¶ci strony" />       <meta name="Keywords" content="Tu wpisz wyrazy kluczowe rozdzielone przecinkami" />
  <title><?php require_once('../nazwa.html'); ?> :: Administracja serwerem</title>
    <link rel="shortcut icon" href="pliki/favicon0.bmp" type="image/x-icon" />
  <link rel="stylesheet" type="text/css" href="../style.css" />
</head>
<body>
<div id="top">
<div id="logo">
<div id="logo2">
<img src="../logo2.jpg" alt="Logo"/>
</div>
</div>
<div id="menupoz">
<ul class="menu">
<li><a href="../index.php">Strona główna</a>
<li><a href="../reg.php">Rejestracja</a>
<li><a href="../changepsd.php">Zmiana hasła</a>
<li><a href="../down.php">Download</a>
<li><A href="../sieci.php">Sieci Hamchi</a>
<li><a href="../itemshop/">ItemShop</a>
<li><a href="../rank.php">Ranking</a>
</ul>
</div>
<div id="gora">
ADMINISTRACJA - Logowanie
</div>
<div id="tresc">
&nbsp;
<center>
<?php
if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałe¶ wylogowany z administracji";}
if($_SESSION["zalogowany"]!=1){
        if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
                if(mysql_num_rows(mysql_query("select * from users where user_login = '".htmlspecialchars($_POST["login"])."' AND user_haslo = '".htmlspecialchars($_POST["haslo"])."'"))){
                        echo "Zalogowano poprawnie. <a href='index.php'>PrzejdĽ na stronę główn±</a>";
                        $_SESSION["zalogowany"]=1;
                        }
                else echo ShowLogin("Podano złe dane!!!");
                }
        else ShowLogin();
}
else{
?>
</center>
<!-- Treść po zalogowaniu-->
<a href='index.php?wyloguj=tak'>Wyloguj się</a>
<?php
}
?>
  &nbsp;        
            </div>

                                                                        
<div id="koniec">
</div>
<div id="stopka">
<Center>Wszelkie prawa zastrzeżone. Serwer postawiony na FreeBSD by Rain. <Br/>
<a href="../kontakt.php" style="color: white">Kontakt</a> | <a href="index.php" style="color: white">Administracja</a></center>
</div>
</div>
<font color=white>© by <a href="http://komputeromaniak.lua.pl"><img src="../pliki/kompus.png"></a> Designed by Metin2</font>
</body>
</html>
<?php mysql_close(); ?>



oraz jakaś podstrona:
Kod
<?php
session_start();
?>

<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  <meta name="Description" content="Tu wpisz opis zawarto¶ci strony" />       <meta name="Keywords" content="Tu wpisz wyrazy kluczowe rozdzielone przecinkami" />
  <title><?php require_once('../nazwa.html'); ?> :: Administracja serwerem</title>
    <link rel="shortcut icon" href="pliki/favicon0.bmp" type="image/x-icon" />
  <link rel="stylesheet" type="text/css" href="../style.css" />
</head>
<body>
<div id="top">
<div id="logo">
<div id="logo2">
<img src="../logo2.jpg" alt="Logo"/>
</div>
</div>
<div id="menupoz">
<ul class="menu">
<li><a href="../index.php">Strona główna</a>
<li><a href="../reg.php">Rejestracja</a>
<li><a href="../changepsd.php">Zmiana hasła</a>
<li><a href="../down.php">Download</a>
<li><A href="../sieci.php">Sieci Hamchi</a>
<li><a href="../itemshop/">ItemShop</a>
<li><a href="../rank.php">Ranking</a>
</ul>
</div>
<div id="gora">
ADMINISTRACJA - Zarz±dzanie sklepami
</div>
<div id="tresc">
&nbsp;
<?php
if($_SESSION["zalogowany"]==0){echo "Nie możesz adminsitrować serwerem, jeżeli nie jeste¶ zalogowany! <a href='index.php'>Zaloguj się</a>;"; exit();}
?>
<!--Treść po zalogowaniu --><a href='index.php?wyloguj=tak'>Wyloguj się</a>
  &nbsp;        
            </div>

                                                                        
<div id="koniec">
</div>
<div id="stopka">
<Center>Wszelkie prawa zastrzeżone. Serwer postawiony na FreeBSD by Rain. <Br/>
<a href="../kontakt.php" style="color: white">Kontakt</a> | <a href="index.php" style="color: white">Administracja</a></center>
</div>
</div>
<font color=white>© by <a href="http://komputeromaniak.lua.pl"><img src="../pliki/kompus.png"></a> Designed by Metin2</font>
</body>
</html>
<?php mysql_close(); ?>


I w bazie danych moje tabelki wyglądaj tak:
tabelka users:
ma pola: user_login, user_haslo, user_id.
Chcę mieć tak, że jak będzie tabelka user_dostep, i bedzie tam wybrane np. 1 to ktoś będzie miał dostęp do wybranej podstrony, a jeżeli będzie wartość 2 to podstrona się nie wyświetli tylko komunikat "Nie masz uprawnień do tej opcji". Proszę o pomoc, na prawdę nie umiem sobie z tym poradzić ;/
Rysh
W czym problem przy logowaniu zapisać w $_SESSION dostęp i zależnie od tej rangi pokazywać/ukrywać tekst?
KomputeromaniaK
Ale jak to dodać dokładnie? Bo ja jakoś próbowałem i mi nie wyszło ;/
Rysh
Przypisać coś do zmiennej potrafisz?
Używać if również?
Nic więcej robić nie trzeba.
KomputeromaniaK
No coś tam umiem

@Edit chyba skumałem tongue.gif
Tylko jak ja mam dopisać przy logowaniu $_SESSION dostęp?

Chyba mi się udało biggrin.gif
Rysh
Poza przypisaniem $_SESSION['zalogowany'] = 1 daj jeszcze $_SESSION['ranga'] = $ranga_uzytkownika
Range oczywiście musisz uprzednio pobrać z bazy.
KomputeromaniaK
Nie udało mi sie ;/

To "$_SESSION['ranga'] = $ranga_uzytkownika" dodaje w logowaniu? a potem jeszcze w podstronie?

Nigdy tego nie zrobie ;/
Rysh
Dokładnie.
KomputeromaniaK
Nie umiem ;/
Gdzie to dokładnie dodać? Proszę powiedz jak to zrobić, bo ja jakoś tego zrobić nie umiem ;/
Rysh
  1. if($_SESSION["zalogowany"]!=1){
  2. $pytanie = mysql_query("select * from users where user_login = '".htmlspecialchars($_POST["login"])."' AND user_haslo = '".htmlspecialchars($_POST["haslo"])."'");
  3. if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
  4. if(mysql_num_rows($pytanie) == 1){
  5. echo "Zalogowano poprawnie. <a href='index.php'>PrzejdĽ na stronę główną</a>";
  6. $user = mysql_fetch_assoc($pytanie);
  7. $_SESSION['ranga'] = $user['nazwa_pola'];
  8. $_SESSION["zalogowany"]=1;
  9. }
  10. else echo ShowLogin("Podano złe dane!!!");
  11. }
  12. else ShowLogin();
  13. }

Zmień tylko nazwa_pola na swoją nazwę.
I teraz co chcesz pokazać:
  1. if($_SESSION['ranga'] == 1) {
  2. echo "widza tylko ludzie z ranga 1";
  3. }
KomputeromaniaK
mam taki błąd:
Kod
Zalogowano poprawnie. Przejdź na stronę główną
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\xampp\htdocs\metin2\admin\index.php on line 65


Wiem że jestem niedorąbany, ale bardzo tego potrzebuje

To był błąd połaczenia...
Kod
<?php
session_start();
session_register("zalogowany");

if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;



require_once("../config.php");
                        mysql_select_db("account");
                        $pytanie = mysql_query("SELECT user_dostep FROM users")
or die('Bł?d zapytania');

dodałem
Kod
                        $pytanie = mysql_query("SELECT user_dostep FROM users")
or die('Bł?d zapytania');


Ale teraz nie działa sprawdzanie dostepu, tzn. kiedy wchodzę w podstronę to wchodzi chodź powinien wyswietlic sie komunikat
Rysh
Pokaż jak wygląda Twoja podstrona.
KomputeromaniaK
Cały kod!
Kod
<?php
session_start();
?>

<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  <meta name="Description" content="Tu wpisz opis zawarto¶ci strony" />       <meta name="Keywords" content="Tu wpisz wyrazy kluczowe rozdzielone przecinkami" />
  <title><?php require_once('../nazwa.html'); ?> :: Administracja serwerem</title>
    <link rel="shortcut icon" href="pliki/favicon0.bmp" type="image/x-icon" />
  <link rel="stylesheet" type="text/css" href="../style.css" />
</head>
<body>
<div id="top">
<div id="logo">
<div id="logo2">
<img src="../logo2.jpg" alt="Logo"/>
</div>
</div>
<div id="menupoz">
<ul class="menu">
<li><a href="../index.php">Strona główna</a>
<li><a href="../reg.php">Rejestracja</a>
<li><a href="../changepsd.php">Zmiana hasła</a>
<li><a href="../down.php">Download</a>
<li><A href="../sieci.php">Sieci Hamchi</a>
<li><a href="../itemshop/">ItemShop</a>
<li><a href="../rank.php">Ranking</a>
</ul>
</div>
<div id="gora">
ADMINISTRACJA - Dodawanie przedmiotów
</div>
<div id="tresc">
&nbsp;
<?php
if($_SESSION["zalogowany"]==0){echo "Nie możesz adminsitrować serwerem, jeżeli nie jeste¶ zalogowany! <a href='index.php'>Zaloguj się</a>;"; exit( "
</div>

                                                                        
<div id=koniec>
</div>
<div id=stopka>
<Center>Wszelkie prawa zastrzeżone. Serwer postawiony na FreeBSD by Rain. <Br/>
<a href=../kontakt.php style=color: white>Kontakt</a> | <a href=index.php style=color: white>Administracja</a></center>
</div>
</div>
<font color=white>&copy; by <a href=http://komputeromaniak.lua.pl><img src=../pliki/kompus.png></a> Designed by Metin2</font>
</body>
</html>");}
if($_SESSION['ranga']==2) {
     echo "Nie masz odpowiednich uprawnień! Do tej części admnistracji mają dostęp tylko Game Admini! <br/>
     <a href=index.php>Wróć</a>";
     exit("</div>

                                                                        
<div id=koniec>
</div>
<div id=stopka>
<Center>Wszelkie prawa zastrzeżone. Serwer postawiony na FreeBSD by Rain. <Br/>
<a href=../kontakt.php style=color: white>Kontakt</a> | <a href=index.php style=color: white>Administracja</a></center>
</div>
</div>
<font color=white>&copy; by <a href=http://komputeromaniak.lua.pl><img src=../pliki/kompus.png></a> Designed by Metin2</font>
</body>
</html>");
}
?>
<li class="admin"><a href="index.php" class="link2">Strona główna administracji</a></li>
<li class="admin"><a href="add_is.php" class="link2">Edycja ItemShop</a></li>
<li class="admin"><a href="char.php" class="link2">Zarz±dzanie postaciami</a></li>
<li class="admin"><a href="acc.php" class="link2active">Zarz±dzanie kontami</a></li>
<li class="admin"><a href="mob.php" class="link2">Zarz±dzanie NPC/MOB</a></li>
<li class="admin"><a href="shop.php" class="link2">Zarz±dzanie sklepami</a></li>
<li class="admin"><a href="bons.php" class="link2">Zmiana bonusów</a></li>
<li class="admin"><a href="add_item.php" class="link2">Dodawanie itemków</a></li>
<li class="admin"><a href="add_gm.php" class="link2">Zarz±dzanie GM</a></li>
<li class="admin"><a href="edit_guild.php" class="link2">Zarz±dzanie Gildiami</a></li>
<?php
require_once("../config.php");
                        mysql_select_db("account");


$wynik = mysql_query("SELECT * FROM account")
or die('Bł±d zapytania');

$a = trim($_GET['a']);
$id = trim($_GET['id']);

if($a == 'del' and !empty($id)) {
    
    
    mysql_query("DELETE FROM account WHERE id='$id'")
    or die('Bł±d zapytania: '.mysql_error());
    
    echo 'Rekord został usunęty z bazy';
}
if(mysql_num_rows($wynik) > 0) {
    
    echo "<table class=tb cellpadding=\"2\" border=1>";
                        echo "<tr>";
    echo "<td><b>ID Konta</b></td>";
    echo "<td><b>Login</b></td>";
    echo "<td><b>Imię</b></td>";
    echo "<td><b>Kod usunięcia postaci</b></td>";
    echo "<td><b>E-mail</b></td>";
    echo "<td><b>SM</b></td>";
    echo "<td><b>Status</b></td>";
    echo "<td><b>Usuń</b></td>";
                       echo "</tr>";
    while($r = mysql_fetch_assoc($wynik)) {
                       echo "<tr>";
    echo "<td>".$r['id']."</td>";
    echo "<td>".$r['login']."</td>";
    echo "<td>".$r['real_name']."</td>";
    echo "<td>".$r['social_id']."</td>";
    echo "<td>".$r['email']."</td>";
    echo "<td>".$r['cash']."</td>";
        echo "<td>".$r['status']."</td>";
                        echo "<td>
       <a href=\"acc.php?a=del&amp;id={$r['id']}\">DEL</a><br/>
                  <a href=\"acc.php?a=edit&amp;id={$r['id']}\">EDIT</a>
       </td>";
        echo "</tr>";
        
    }
    echo "</table>";
}

$a = trim($_REQUEST['a']);
$id = trim($_GET['id']);

if($a == 'edit' and !empty($id)) {
    
    $wynik = mysql_query("SELECT * FROM account WHERE
    id='$id'")
    or die('Bł±d zapytania');
    if(mysql_num_rows($wynik) > 0) {
        
        $r = mysql_fetch_assoc($wynik);
        
        echo '<form action="acc.php" method="post">
        <input type="hidden" name="a" value="save" />
        <input type="hidden" name="id" value="'.$id.'" />
        Login:<br />
        <input type="text" name="login"
        value="'.$r['login'].'" /><br />
                        Imię:<br />
        <input type="text" name="real_name"
        value="'.$r['real_name'].'" /><br />
                        KUP:<br />
        <input type="text" name="social_id"
        value="'.$r['social_id'].'" /><br />
        E-mail:<br />
        <input type="text" name="email"
        value="'.$r['email'].'" /><br />
                        SM:<br />
        <input type="text" name="cash"
        value="'.$r['cash'].'" /><br />
                                        Status konta:<br />
                                        <select name=status>
                                        <option value=OK>Odbanowany</option>
                                        <option value=BLOCK>Zbanowany</option>
                                        </select><br/>
      
        <input type="submit" value="Zmień" class="button"/>
        </form>';
    }
}
elseif($a == 'save') {
    
    $id = $_POST['id'];
    $login = trim($_POST['login']);
        $real_name = trim($_POST['real_name']);
    $social_id = trim($_POST['social_id']);
    $email = trim($_POST['email']);
    $cash = trim($_POST['cash']);
    $status = trim($_POST['status']);
    
    mysql_query("UPDATE account SET login='$login', real_name='$real_name', social_id='$social_id',
    email='$email', cash='$cash', status='$status' WHERE id='$id'")
    or die('Bł±d zapytania');
    echo 'Dane zostały zaktualizowane';
}
?>


<br><a href='index.php?wyloguj=tak'>Wyloguj się</a>
  &nbsp;        
            </div>

                                                                        
<div id="koniec">
</div>
<div id="stopka">
<Center>Wszelkie prawa zastrzeżone. Serwer postawiony na FreeBSD by Rain. <Br/>
<a href="../kontakt.php" style="color: white">Kontakt</a> | <a href="index.php" style="color: white">Administracja</a></center>
</div>
</div>
<font color=white>&copy; by <a href="http://komputeromaniak.lua.pl"><img src="../pliki/kompus.png"></a> Designed by Metin2</font>
</body>
</html>
<?php mysql_close(); ?>
mortus
Po pierwsze używaj właściwego BBCODE (jak któryś moderator zobaczy to w takiej formie, to zamknie temat). Po drugie stosowanie funkcji exit() do wyświetlenia treści strukturalnej strony to raczej nie najlepszy pomysł. Zresztą funkcja exit() niezbyt nadaje się do rozwiązywania tego typu sytuacji, jak błąd logowania, czy brak uprawnień. Po trzecie wstaw sobie w index.php taki krótki kod na samym początku (przed session_start(), po session_start(), ale na początku)
  1. ini_set('display_errors', 1);
Zobaczysz wtedy, że masz więcej błędów, ostrzeżeń lub uwag, przede wszystkim w przypisaniach. No i po czwarte przed warunkiem if($_SESSION['ranga'] == 2) wydrukuj sobie funkcją print_r() zawartość tablicy $_SESSION
  1. echo '<pre>';
  2. print_r($_SESSION);
  3. echo '</pre>';
  4. if($_SESSION['ranga'] == 2)
  5. ...
Zobaczysz wtedy, czy ranga jest taka, jakiej się spodziewasz. (echo '<pre>'; i echo '</pre>'; spowodują, że tablica $_SESSION będzie bardziej czytelna)
KomputeromaniaK
Dobra ja prawie nic z tego nie skumałem o_O. Dobra rąbać na to, możecie zamknąć temat...
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.