Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Prosty system modułów
ghastblood
post 17.07.2012, 20:54:23
Post #1





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam,
poszukuje prostego systemu modułów lub podpowiedzi jak taki system powinien działać. Interesował bym mnie kod Proceduralny ponieważ jeszcze się nie przyzwyczaiłem do programowania obiektowego. Zrobiłem sobie coś takiego.
  1.  
  2. if(isset($_SESSION['zalogowany'])) {
  3. }else{
  4. header('location: index.php?id=2');
  5. }
  6. $sql_wynik = dbquery("SELECT * FROM plugins WHERE plugin_number='".$_GET['id']."' && plugin_side = '2'");
  7.  
  8. $r = dbarray($sql_wynik);
  9. if($r == NULL){
  10. echo 'plugin nie istnieje';
  11. } else{
  12. include $r['plugin_path']."/".$r['plugin_start'];
  13. }


Problem w tym że przeglądarka zwraca mi błąd że Ta strona internetowa zawiera pętlę przekierowań. Gdy robię przekierowanie na inny plik w header to jest dobrze gdy chce przekierować na index.php?id=2 czy każde inne id to wywala mi błąd.
Go to the top of the page
+Quote Post
CuteOne
post 17.07.2012, 21:22:00
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


  1. $modules = array(
  2. 'index' => 'index.php',
  3. 'login' => 'module/login.php'
  4. ...
  5. );
  6.  
  7. $id = strtolower($_GET['id']);
  8.  
  9. if(array_key_exists($id, $modules)) {
  10.  
  11. include $modules[$id];
  12. }


do tego podepnij bazę danych, sprawdzanie czy plik istnieje

Ten post edytował CuteOne 17.07.2012, 21:22:20
Go to the top of the page
+Quote Post
SmokAnalog
post 18.07.2012, 00:14:57
Post #3





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


No nie wiem czy index.php to moduł. Ja bym to rozwiązał na jeden z dwóch sposobów:

1. Oparty na liście modułów - sam wybierasz które mają działać, a które nie:
  1. $module = null;
  2. if(isset($_GET['module'])) {
  3. switch($_GET['module']) {
  4. case 'login':
  5. case 'register':
  6. case 'gallery':
  7. case 'logout':
  8. $module = $_GET['module'];
  9. break;
  10. }
  11. }
  12. if( ! isset($module)) {
  13. $module = 'main';
  14. }
  15. require('modules/'.$module.'.php');


2. Oparty na sprawdzaniu czy plik istnieje - proste w użyciu, jeśli plik istnieje to ładujemy moduł:
  1. $module = (isset($_GET['module']) AND file_exists('modules/'.$_GET['module'].'.php')) ? $_GET['module'] : 'main';
  2. require('modules/'.$module.'.php');


Oczywiście można połączyć obie te metody.
Go to the top of the page
+Quote Post
CuteOne
post 18.07.2012, 00:48:28
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


to był tylko przykład.. i lepszy niż te twoje switche - tak to już chyba nikt nie pisze ;p

a to czy ma działać czy nie robisz w równie prosty sposób
  1. $modules = array(
  2. 'index' => array('file' => 'module/index.php', 'status' => 1),
  3. 'login' => array('file'=>'module/login.php', 'status' => 0),
  4. 'reg' => array('file'=>'module/auth/register.php', 'status' => 1)
  5. );
  6.  
  7. $id = strtolower($_GET['id']);
  8.  
  9. if(array_key_exists($id, $modules) && $modules[$id]['status'] == 1) {
  10.  
  11. include $modules[$id];
  12. }


Ten post edytował CuteOne 18.07.2012, 00:51:28
Go to the top of the page
+Quote Post
SmokAnalog
post 18.07.2012, 08:21:40
Post #5





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat(CuteOne @ 18.07.2012, 01:48:28 ) *
to był tylko przykład.. i lepszy niż te twoje switche - tak to już chyba nikt nie pisze ;p

Akurat ten switch to jest świetny i bardzo czytelny sposób dla prostego systemu. Mam wrażenie, że czasem nie wiesz co piszesz. Kolega wyżej nie potrzebuje dynamicznego dołączania modułów w czasie wykonywania, ani też rozdzielania nazwy modułu od nazwy jego pliku. Nie komplikuj mu życia tylko dlatego, że Tobie się wydaje, że "tak już się nie pisze". Rozbawiłeś mnie, nie powiem smile.gif
Go to the top of the page
+Quote Post
ghastblood
post 18.07.2012, 11:37:41
Post #6





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(CuteOne @ 18.07.2012, 01:48:28 ) *
to był tylko przykład.. i lepszy niż te twoje switche - tak to już chyba nikt nie pisze ;p

a to czy ma działać czy nie robisz w równie prosty sposób
  1. $modules = array(
  2. 'index' => array('file' => 'module/index.php', 'status' => 1),
  3. 'login' => array('file'=>'module/login.php', 'status' => 0),
  4. 'reg' => array('file'=>'module/auth/register.php', 'status' => 1)
  5. );
  6.  
  7. $id = strtolower($_GET['id']);
  8.  
  9. if(array_key_exists($id, $modules) && $modules[$id]['status'] == 1) {
  10.  
  11. include $modules[$id];
  12. }


wywala i taki błąd

  1. Notice: Array to string conversion in C:\xampp\htdocs\mtgcon_ver.0.1\index.php on line 27
  2.  
  3. Warning: include(Array) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\mtgcon_ver.0.1\index.php on line 27
  4.  
  5. Warning: include() [function.include]: Failed opening 'Array' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\mtgcon_ver.0.1\index.php on line 27


dobra mam powinno być tak
  1. if(array_key_exists($id, $modules) && $modules[$id]['status'] == 1) {
  2.  
  3. include $modules[$id]['file'];
  4. }


Ten post edytował ghastblood 18.07.2012, 11:38:15
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 30.07.2025 - 12:28