strony na access id

0

Witam, mam pewien problem natomiast chcę zrobić strony tylko dla administracji tzn. na id 1 lecz coś mi chyba w kodzie nie działa:

Config.php

<?php
 
// definiujemy dane do poӹczenia z baz٠danych
define('DBHOST', 'localhostl');
define('DBUSER', 'root');
define('DBPASS', '');
define('DBNAME', 'gra');
 
function db_connect() {
    // poӹczenie z mysql
    mysql_connect(DBHOST, DBUSER, DBPASS) or die('<h2>ERROR</h2> MySQL Server is not responding');
 
    // wyb������azy danych
    mysql_select_db(DBNAME) or die('<h2>ERROR</h2> Cannot connect to specified database');
}
 
function db_close() {
    mysql_close();
}


function clear($text) {
    // jeݬi serwer automatycznie dodaje slashe to je usuwamy
    if(get_magic_quotes_gpc()) {
        $text = stripslashes($text);
    }
    $text = trim($text); // usuwamy biaԥ znaki na poczڴku i na ko������    $text = mysql_real_escape_string($text); // filtrujemy tekst aby zabezpieczy桳iꡰrzed sql injection
    $text = htmlspecialchars($text); // dezaktywujemy kod html
    return $text;
}
 
function codepass($password) {
    // kodujemy hasԯ (losowe znaki mo࠮a zmieni桬ub caԫowicie usunڦ
    return sha1(md5($password).'#!%Rgd64');
}
 
// funkcja na sprawdzanie czy user jest zalogowany, jeݬi nie to wyݷietlamy komunikat
function check_login() {
    if(!$_SESSION['logged']) {
        die('<p>To jest strefa tylko dla użytkowników.</p>
        <p>[<a href="login.php">Logowanie</a>] [<a href="register.php">Zarejestruj się</a>]</p>');
    }
}
// Funkcja która powinna sprawdzać czy user ma odpowiednie id
function check_access(){
     if(!$_SESSION['user_access']) {
        die('<p>To jest strefa tylko dla administracji</p>');
    }
}
 
// funkcja na pobranie danych usera
function get_user_data($user_id = -1) {
    // jeݬi nie podamy id usera to podstawiamy id aktualnie zalogowanego
    if($user_id == -1) {
        $user_id = $_SESSION['user_id'];
    }
    $result = mysql_query("SELECT * FROM `users` WHERE `user_id` = '{$user_id}' LIMIT 1");
    if(mysql_num_rows($result) == 0) {
        return false;
    }
    return mysql_fetch_assoc($result);
}


 // Powinno pobierać dane usera
function get_user_access($user_access = 0){
    
    if($user_access == 0){
        $user_access = $_SESSION['user_access'];
    }
    $result1 = mysql_query("SELECT * FROM `users` WHERE `user_access` = '{$user_access}' LIMIT 1");
    if(mysql_num_rows($result1) == 1) {
        return false;
        
    }
    return mysql_fetch_assoc($result1);
}
// startujemy sesje
session_start();


 
// jeݬi nie ma jeszcze sesji "logged" i "user_id" to wypeԮiamy je domyݬnymi danymi
if(!isset($_SESSION['logged'])) {
    $_SESSION['logged'] = false;
    $_SESSION['user_id'] = -1;


}
// Jak nei ma sesji "user_access" to domyślna wartość owej sesjii
if(!isset($_SESSION['user_access'])){
    $_SESSION['user_access'] = 0;
}
?>

strony są "zabezpieczane" check_access();

1
  1. Nie używaj mysql, zainteresuj się PDO albo chociaż mysqli.
  2. Startować sesję powinieneś raczej na początku pliku.
  3. Hashowanie hasła: http://php.net/manual/en/faq.passwords.php
  4. Jak koniecznie chcesz używać funkcji to wydziel je chociaż do innego pliku.
  5. Co do problemu:
if($_SESSION['user_id'] != 1) {
        die('<p>To jest strefa tylko dla administracji</p>');
}else{
         //użytkownik ma id 1
}

Dodatkowo możesz zrobić jakieś przekierowanie później.

0

Dzięki za pomoc ale coś mi dalej nie działa ;/

tego if'a wkleiłem zamiast mojego if'a w tej funkcji user_access i nie działa, próbowałem zmieniać np. dodać ! przed $_SESSION lecz nic to nie dało ;/

1

Nic nie zmieniaj w warunku, który podałem. Przy logowaniu musisz tylko przypisać wartość tej zmiennej sesyjnej 'user_id' jako id użytkownika. Dla pewności możesz po rozpoczęciu sesji wstawić:

var_dump($_SESSION['user_id']);

i kontrolować czy zawartość jest taka, jaka powinna być.

0

wstawiłem to i moim oczom ukazała się pewna linijka int(0) to raczej oznacza że mój access jest 0 lecz w bazie danych mam 1 (mówimy o user_access a nie o user_id >.<)

1 użytkowników online, w tym zalogowanych: 0, gości: 1