szyn33k
3.01.2013, 23:32:22
Witam!
Mam pewien skrypt i w nim kawałek kodu:
<?php
if(empty($_GET['page']) or
$_GET['page']=='newsy') { include('newsy.php'); } elseif($_GET['page']=="rejestracja") { include("rejestracja.php"); }
elseif($_GET['page']=="logowanie") { include("panel-uzytkownika.php"); }
elseif($_GET['page']=="admin") { include("panel-admina.php"); }
elseif($_GET['page']=="wyloguj") { include("wyloguj.php"); }
elseif($_GET['page']=="login") { include("newsy.php"); }
elseif($_GET['page']=="komentarz") { include("komentarz.php"); }
elseif($_GET['page']=="lista") { include("lista.php"); }
elseif($_GET['page']=="profil") { include("profil.php"); }
elseif($_GET['page']=="mecze") { include("mecze.php"); }
elseif($_GET['page']=="galeria") { include("galeria.php");; }
elseif($_GET['page']=="druzyny") { include("druzyny.php"); }
elseif($_GET['page']=="kadra") { include("kadra.php"); }
elseif($_GET['page']=="kontakt") { include("kontakt.php"); }
elseif($_GET['page']=="moj-profil") { include("moj-profil.php"); }
elseif($_GET['page']=="newmail") { include("newmail.php"); }
elseif($_GET['page']=="mymail") { include("mymail.php"); }
elseif($_GET['page']=="sentmail") { include("sentmail.php"); }
elseif($_GET['page']=="przypomnij") { include("przypomnij-haslo.php"); }
?>
według mnie nie wygląda to zbyt ładnie. Jest jakiś sposób aby to uprościć i aby to wyglądało w miarę profesjonalnie?
Pozdrawiam
aras785
3.01.2013, 23:35:11
może switch lub dynacznie ale wtedy musisz troche zabezpieczyć skrypt
mieszkos
3.01.2013, 23:42:36
edit: @down : racja napisałem głupotę, nie pomyślałem.
peter13135
4.01.2013, 00:21:45
@up. Sprawdź sam jak to zadziała

$list = array('rejestracja.php' => 'rejestracja', 'logowanie.php' => 'logowanie');//uzupełnij sobie sam ;) $get = $_GET['page'];
{
include $filename;
}
else
{
//error 404, chyba masz bana
}
mieszkos
4.01.2013, 01:00:10
Walnąłem głupotę więc się poprawiam
<?php
$list = array('rejestracja' => 'rejestracja.php', 'logowanie' => 'panel-uzytkownika.php'); $get = $_GET['page'];
switch($get) {
include($list[$get]);
break;
default:
include('error-page.php');
break;
}
?>
mokry
4.01.2013, 01:10:45
Bardzo dużo elementów tablicy posiada taki sam klucz i nazwę pliku (tyle, że z rozszerzeniem .php).
Możesz zrobić tablicę, w której przechowywać będzies tylko te strony, które posiadają różne pliki w stosunku do nazwy w adrsie URL.
I teraz tak: sprawdzać, czy istnieje w tablicy wyjątek ('logowanie' => 'panel-uzytkownika.php') i jeśli tak, ładować te pliki, a jeśli nie ma w tablicy, to ma załadować plik o tej samej nazwie co request , tylko dodać .php na końcu.
Oczywiście ze względów bezpieczeństwa proponuję sprawdzić, czy nie ma nigdzie w przekazanej wartości żadnych niebezpiecznych ciągów, oraz czy plik istnieje (np. w określonej na sztywno lokalizacji).
Jeżeli nie będzie pliku na serwerze, wtedy include jakiejś strony z błędem.
peter13135
4.01.2013, 02:54:46
@mieszkos
Cytat
Walnąłem głupotę więc się poprawiam
tzn. walisz większą głupotę ?
CuteOne
4.01.2013, 15:17:50
'default' => 'default.php',
'reg' => 'rejestracja.php',
'graph' => 'graph/graph.php'
);
$id = !empty($_GET['id']) ?
$_GET['id'] : 'default';
if(isset($modules[$id])) {
require_once $modules[$id];
}
else {
require_once $modules['default'];
}