witam jak juz kiedys pokazywalem ta moja mala stronke + mam teraz autoryzacje z wykorzystaniem sesji tylko jak to razem najlepiej polaczyc aby nie dalo sie obejsc (wiem wiem wszystko da sie obejsc) ale moz ktos ma jakis pomysl

index.php engine

  1. <?php
  2.  
  3.      $where = $HTTP_GET_VARS['cmd'];
  4.      $allowed_values = array
  5.      
  6.      (
  7.             &#092;"przyklad\" => \"przyklad.inc\",
  8.             &#092;"przyklad1\" => \"przyklad1.inc\",
  9.             &#092;"kolejna_przykladowa_strona\" => \"kolejna_przykladowa_strona.inc\"
  10.                         
  11.      );
  12.      
  13.      if ($allowed_values[$where] != '')
  14.      
  15.      {
  16.  
  17.             include(&#092;"main.inc\");
  18.             include(&#092;"$allowed_values[$where]\");
  19.             include(&#092;"stopka.inc\");
  20.             
  21.      }
  22.      
  23.      else
  24.      
  25.      {
  26.      
  27.             include(&#092;"main.inc\");
  28.             include(&#092;"przyklad.inc\");
  29.             include(&#092;"stopka.inc\");
  30.             
  31.      }
  32. ?>


plik index.php glowne funkcje
plik main.inc glowna strona czyli wszystko co zawarte jest w stronie
plik przyklad.inc pierwsz wyswietlana strona
plik stopka.inc stopka hehe

navigacja odbywa sie poprzez np. dodanie jakiegos dzialu test
tworzymi plik test.inc
dodajemy jego wartosc do index.php

czyli
  1. <?php
  2. &#092;"test\" => \"test.inc\",
  3. ?>


i wyswietlamy go index.php?cmd=test



a wiec przyposcmy ze chcialbym stworzyc kolejne 3 strony
1. dla admina
2. dla uzytkownika
3. dla danych ktore wyswietlane pownny byc tylko dla osob zarejestrowanych

mozliwosc dodania konta sobie nie wchodzi w gre nie jest to zaden portal tylko malutka strona a wiec konta mam zamiar dodawac recznie z shella bezposrednio na mysql-u autoryzacja z wykorzystaniem sesji jest autorstwa pana
Piotra Gutowskiego programisty firmy Blue Media Greetengs to all BM Developments jako iz kod jest na lic. GNU zamieszczam go w celach nie komercjynych i prosze o pomoc wszystkich ktorzy pomogli by mi polaczyc je z moja strona ja juz probowalem wszystkiego same czyste php ? includowac z moja strona ? dodawac do calego engine`a i wszystko lipa

baza danych do autoryzacji

  1. CREATE DATABASE baza;
  2. USE baza;
  3.  
  4. CREATE TABLE tabSession (
  5. idSession int NOT NULL AUTO_INCREMENT,
  6.  
  7. # id użytkownika zalogowanego do tej sesji lub 0 jeśli niezalogowany
  8. idUser int NOT NULL DEFAULT 0,
  9.  
  10. # unikalny identyfikator sesji
  11. sid char(32),
  12.  
  13. # czas ostatniej akcji odwiedzajacego
  14. tLastAction timestamp,
  15. # data startowa sesji
  16. tDate timestamp,
  17. # adres IP odwiedzajacego
  18. sIP char(15),
  19. # ilosc zaladowan stron w sesji
  20. nHits int NOT NULL DEFAULT 0,
  21. # czy sesja aktywna
  22. bActive tinyint NOT NULL DEFAULT 1,
  23.  
  24. PRIMARY KEY(idSession),
  25. KEY(sid(3))
  26. );
  27.  
  28. CREATE TABLE tabUser (
  29. idUser int NOT NULL AUTO_INCREMENT,
  30.  
  31. # login i haslo
  32. sLogin char(16),
  33. sPassword char(16),
  34.  
  35. # tutaj mozemy dodac dodatkowe pola
  36. # np. data rejestracji, imie i nazwisko, e-mail
  37.  
  38. PRIMARY KEY(idUser),
  39. KEY(sLogin(3))
  40. );
  41.  
  42. # dodanie przykladowego uzytkownika
  43. INSERT INTO tabUser (sLogin,sPassword) VALUES ('user','abc');


kolejny plik to index.php tak mi sie wydaje ze najlepiej jakby go mozna bylo includowac do mojego engina w postaci cosik.inc i dodac do engine`a i moglby to byc formularz logowania

  1. <?php
  2.  
  3. // plik index.php - strona glowna
  4.  
  5.    require_once &#092;"CSession.php\";
  6.  
  7.    initMysql('localhost','mysql','','baza');
  8.    $oSession = new CSession();
  9.  
  10.    if ($oSession->bLoginError) {
  11.       echo '<center><b>Zły login lub hasło!</b></center><br>';
  12.    }
  13. ?>
  14. <center>
  15. <form method=\"POST\" action=\"<?php
  16.    echo $oSession->makeLink('index.php')
  17. ?>\">
  18. <input type=\"hidden\" name=\"formname\" value=\"login\">
  19. Login: <input name=\"sLogin\" size=10><br>
  20. Hasło: <input type=\"password\" name=\"sPassword\" size=10><br>
  21. <input type=\"submit\" value=\"Zaloguj się\">
  22. </form>
  23. </center>


kolejny plik

CSession.php tutaj mozna by bylo ustawic dostep oraz wszystko polaczyc z moja strona czyli tym pierwszym plikiem index.php zrodlo wyzej tak aby dziala wszystko razem

  1. <?php
  2.  
  3. // plik CSession.php - klasa zarzadzajaca sesjami
  4.  
  5. define(PAGE_HOME,'index.php');      // strona glowna
  6. define(PAGE_START,'start.php');     // strona startowa (po zalogowaniu)
  7. define(PAGE_LOGOUT,'index.php');    // strona wyswietlana po wylogowaniu
  8. define(PAGE_TIMEOUT,'index.php');   // strona wyswietlana gdy timeout
  9.  
  10. // bezpieczny czas oczekiwania na akcje uzytkownika (w minutach)
  11. define(TIMEOUT_MINUTES,15);
  12.  
  13.  
  14. class CSession
  15. {
  16.  
  17.    var $sIP;         // IP uzytkownika
  18.    var $tDate;       // aktualna data i czas
  19.  
  20.    var $sid;         // identyfikator sesji
  21.    var $idSession;   // id sesji w bazie
  22.  
  23.    // dane zalogowanego uzytkownika
  24.    var $idUser;      // id uzytkownika, lub 0 jesli nie zalogowany
  25.    var $tabUser;     // tablica z danymi uzytkownika pobrana z bazy
  26.  
  27.    // true jesli wystapil blad podczas logowania
  28.    // (podano zly login lub haslo)
  29.    var $bLoginError;
  30.  
  31.    function CSession()
  32.    {
  33.       $this->sIP = getenv(&#092;"REMOTE_ADDR\");
  34.       $this->tDate = date(&#092;"YmdHis\");
  35.       $this->idUser = 0;
  36.  
  37.       // 1. Zarzadzanie sesjami
  38.       global $HTTP_GET_VARS;
  39.       $this->sid = $HTTP_GET_VARS['sid'];
  40.       if (!$this->sid) {
  41.          // utworz nowa sesje
  42.          // (domyslnie przypisana do niezalogowanego uzytkownika)
  43.          $this->sid = md5(uniqid(rand()));
  44.          $res = mysql_query(
  45.             &#092;"INSERT INTO tabSession (
  46.                sid, sIP, tDate, tLastAction
  47.              ) VALUES (
  48.                '\".$this->sid.\"', '\".$this->sIP.\"',
  49.                '\".$this->tDate.\"', '\".$this->tDate.\"'
  50.              )&#092;");
  51.          if (!$res) exit;
  52.          $this->idSession = mysql_insert_id();
  53.       }else {
  54.          // wczytaj dane sesji z bazy
  55.          $res = mysql_query(
  56.             &#092;"SELECT * FROM tabSession
  57.              WHERE sid='\".addslashes($this->sid).\"' AND bActive=1&#092;");
  58.          if (mysql_num_rows($res)==0) {
  59.             // jesli brak sesji o danym sid lub sesja nieaktywna
  60.             header(&#092;"Location: \".PAGE_HOME);
  61.             exit;
  62.          }
  63.          $tabSession = mysql_fetch_array($res,MYSQL_ASSOC);
  64.          if ($tabSession['sIP']!=$this->sIP) {
  65.             // Rozny IP odwiedzajacego i sesji, tutaj mozna dodac
  66.             // przekierowanie na strone z informacja o bledzie
  67.             $this->logout(PAGE_HOME);
  68.          }
  69.          // oblicz maksymalny dopuszczalny czas ostatniej akcji
  70.          $y = substr($this->tDate,0,4);
  71.          $m = substr($this->tDate,4,2);
  72.          $d = substr($this->tDate,6,2);
  73.          $hour = substr($this->tDate,8,2);
  74.          $min = substr($this->tDate,10,2) - TIMEOUT_MINUTES;
  75.          $sec = substr($this->tDate,12,2);
  76.          $tDate = date(&#092;"YmdHis\", mktime($hour,$min,$sec,$m,$d,$y));
  77.          if ($tabSession['tLastAction']<$tDate) {
  78.             // od ostatniej akcji minelo za duzo czasu - wylogowanie
  79.             $this->logout(PAGE_TIMEOUT);
  80.          }
  81.          $this->idSession = $tabSession['idSession'];
  82.          // identyfikator uzytkownika przypisanego do tej sesji
  83.          $this->idUser = $tabSession['idUser'];
  84.       }
  85.  
  86.       // 2. Zarzadzanie uzytkownikami
  87.       if ($this->idUser) {
  88.          // jesli do tej sesji przypisany jest uzytkownik
  89.          // obsluz ewentualne wylogowanie
  90.          $this->handleLogout();
  91.          // jesli sie nie wylogowal, wczytaj jego dane z bazy
  92.          $res = mysql_query(
  93.             &#092;"SELECT * FROM tabUser WHERE idUser=\".$this->idUser);
  94.          $this->tabUser = mysql_fetch_array($res,MYSQL_ASSOC);
  95.       }else{ 
  96.          // w przeciwnym wypadku sprawdz czy uzytkownik wlasnie sie zalogowal
  97.          $this->handleLogin();
  98.       }
  99.  
  100.       // 3. Aktualizacja danych sesji
  101.       // inkrementacja licznika zaladowan stron dla tej sesji
  102.       // oraz uaktualnienie czasu ostatniej akcji
  103.       mysql_query(
  104.          &#092;"UPDATE tabSession
  105.           SET nHits=nHits+1,
  106.               tLastAction='\".$this->tDate.\"',
  107.               idUser=&#092;".$this->idUser.\"
  108.           WHERE idSession=&#092;".$this->idSession);
  109.  
  110.    }
  111.  
  112.    // obsluga logowania uzytkownika
  113.    function handleLogin()
  114.    {
  115.       global $HTTP_POST_VARS, $REQUEST_METHOD;
  116.       // sprawdz czy przesłano metodą POST formularz logowanie
  117.       if ( ($REQUEST_METHOD=='POST') &&
  118.            ($HTTP_POST_VARS['formname']=='login') ) {
  119.          // sprawdz czy przesłany login i hasło odpowiadają
  120.          // jednemu z użytkowników zapisanych w bazie
  121.          $res = mysql_query(
  122.             &#092;"SELECT *
  123.              FROM tabUser
  124.              WHERE
  125.                sLogin='\".addslashes($HTTP_POST_VARS['sLogin']).\"' AND
  126.                sPassword='\".addslashes($HTTP_POST_VARS['sPassword']).\"'&#092;" );
  127.          if (mysql_num_rows($res)==1) {
  128.             // uzytkownik poprawnie zalogowany
  129.             // przypisz jego idUser do aktualnej sesji
  130.             $this->tabUser = mysql_fetch_array($res,MYSQL_ASSOC);
  131.             $this->idUser = $this->tabUser['idUser'];
  132.             mysql_query(
  133.                &#092;"UPDATE tabSession SET idUser=\".$this->idUser.\"
  134.                 WHERE idSession=&#092;".$this->idSession);
  135.             // przekieruj przegladarke na strone startowa
  136.             header(&#092;"Location: \".PAGE_START.\"?sid=\".$this->sid);
  137.             exit;
  138.          }else {
  139.             // brak uzytkownika o podanym loginie i hasle
  140.             $this->bLoginError = true;
  141.          }
  142.       }
  143.    }
  144.  
  145.    // obsluga wylogowania na zadanie uzytkownika
  146.    function handleLogout()
  147.    {
  148.       global $HTTP_GET_VARS;
  149.       if ($HTTP_GET_VARS['bLogout']) {
  150.          $this->logout();
  151.       }
  152.    }
  153.  
  154.    // wylogowanie uzytkownika
  155.    function logout($page=PAGE_LOGOUT)
  156.    {
  157.       mysql_query(
  158.          &#092;"UPDATE tabSession SET bActive=0
  159.           WHERE idSession=&#092;".$this->idSession);
  160.       header(&#092;"Location: \".$page);
  161.       exit;
  162.    }
  163.  
  164.    function makeLink($sPage,$sParam='')
  165.    {
  166.       return $sPage.'?sid='.$this->sid.'&'.$sParam;
  167.    }
  168.  
  169. }
  170.  
  171. // polaczenie z baza MySQL
  172. function initMysql($sHost,$sUser,$sPassword,$sDatabase)
  173. {
  174.    $this->handle = @mysql_connect($sHost, $sUser, $sPassword);
  175.    if (!$this->handle) exit;
  176.    if (!@mysql_select_db($sDatabase, $this->handle)) exit;
  177. }
  178.  
  179. ?>


no i start.php
czyli wszystko co widoczne po zalogowaniu

  1. <?php
  2.  
  3. // plik start.php - strona startowa, widoczna po zalogowaniu
  4.  
  5.    require_once &#092;"CSession.php\";
  6.  
  7.    initMysql('localhost','mysql','','baza');
  8.    $oSession = new CSession();
  9.  
  10.    // wyjscie jesli proba wyswietlenia tej strony
  11.    // przez niezalogowanego uzytkownika
  12.    if ($oSession->idUser==0) exit;
  13.  
  14. ?>
  15. <center>
  16. <b>Użytkownik zalogowany</b><br>
  17. <a href=\"<?php echo $oSession->makeLink('index.php','bLogout=1') ?>\">wyloguj się</a>
  18. <br><br>
  19. <a href=\"<?php echo $oSession->makeLink('start.php') ?>\">jakis link</a>
  20. </center>


prosze o pomoc osoby ktore wiedzialby jak to polaczyc z moja strona czyli tym co wyzej jest napisane aha dziekuje za wyrozumialosc i jakby ktos mogl looknac na moj poprzedni problem bylo by GIT
http://forum.php.pl/index.php?showtopic=21057

NIE WIECE OCO CHODZI questionmark.gif SOMEBODY HELP