Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Optymalizacja kodu, poprawa skryptu
unlock
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 31.08.2008

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


Kod
<?php
addslashes($_GET['ajdi']);
htmlspecialchars($_GET['ajdi']);
strip_tags($_GET['ajdi']);
addslashes($_GET['ajdi']);
stripslashes($_GET['ajdi']);
if(!isset($_GET['ajdi'])) {
include"start.php"; }
else if ($_GET['ajdi']=='1') {
include"wstaw/me.php"; }
else if($_GET['ajdi']=='2') {
include"wstaw/sikret.php"; }
else if($_GET['ajdi']=='3') {
include"wstaw/nius.php"; }
else if($_GET['ajdi']=='5') {
include"wstaw/ziomki.php"; }
else if($_GET['ajdi']=='6') {
include"wstaw/kontakt.php"; }
else if($_GET['ajdi']=='7') {
include"wstaw/prodzekt.php"; }
else if($_GET['ajdi']=='8') {
include"wstaw/artikles.php"; }
else if($_GET['ajdi']=='9') {
include"wstaw/propsy.php"; }
else if($_GET['ajdi']=='4' && $_GET['nius']=='1') {
include"nius/n1.php"; }
else if($_GET['ajdi']=='4' && $_GET['nius']=='2') {
include"nius/n2.php"; }
else if(ereg('../', $_GET['ajdi'])) {
include"lfi.php"; }
else if(ereg('../', $_GET['artikles'])) {
include"lfi.php"; }
else if(ereg('../', $_GET['nius'])) {
include"lfi.php"; }
else if(ereg('http://', $_GET['ajdi'])) {
include"lfi.php"; }
else if(ereg('http://', $_GET['artikles'])) {
include"lfi.php"; }
else if(ereg('http://', $_GET['nius'])) {
include"lfi.php"; }
else if(ereg('union', $_GET['artikles'])) {
echo 'sqlite'; }
else if(ereg('union', $_GET['nius'])) {
echo 'sqlite'; }
else if(ereg('union', $_GET['ajdi'])) {
include"sql.php"; }
else{
include"shit.php"; }
?>


to mój skrypt, troche go połatałem, działa następująco, w indexie jest funckja include z oto tym skryptem, a odnosniki wygladaja nastepujaco : index.php?ajdi=1.
Moje pytanie : czy da sie jakos zoptymalizowac ten skrypt? bo uciążliwe jest dodawanie w tym skrypcie ciagle nowego warunku if

Ten post edytował unlock 31.08.2008, 16:51:41
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Użyć switch....


--------------------
Go to the top of the page
+Quote Post
unlock
post
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 31.08.2008

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


no to praktycznie na to samo wyjdzie
Go to the top of the page
+Quote Post
LBO
post
Post #4





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Napisz klasę, funkcję która ci jakoś uporządkuje mapowanie $_GETów do plików.
Spróbuj jakąś konwencję wymyślić. Jakiś wzór, który będzie się powtarzał, tylko zmienne będą inne - na początek.
Go to the top of the page
+Quote Post
michaJlS
post
Post #5





Grupa: Zarejestrowani
Postów: 83
Pomógł: 9
Dołączył: 21.05.2004
Skąd: Glogau/Breslau

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


Nie do końca na to samo, bo switch jest czytelniejszy.

Na początek zamiast tego dziwnego filtrowania ajdi lepiej daj jakieś $ajdi=(int)$_GET['ajdi'];

I przemyśl jeszcze raz tą całą strukturę, bo za pomocą jednego ciągu ifów chcesz dołączać pliki (tj wykonywać akcje) z różnych poziomów drzewa strony. I w tym momencie ciężko o jakąś optymalizacje tego.
Go to the top of the page
+Quote Post
unlock
post
Post #6





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 31.08.2008

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


do filtracji ajdi dam preg_math,
no wlasnie, dlatego moze ktos ma jakis pomysl na optymalizacje ? wchodzi w gre calkowita przebudowa
Go to the top of the page
+Quote Post
LBO
post
Post #7





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


To czego szukasz to Router. Poszukaj na forum
Go to the top of the page
+Quote Post
FliSs_tCv
post
Post #8





Grupa: Zarejestrowani
Postów: 198
Pomógł: 3
Dołączył: 27.02.2007
Skąd: Tczew

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


masz tutaj przykład następnym razem google i szukaj! http://forum.dobreprogramy.pl/viewtopic.ph...8&p=1791053


--------------------
Go to the top of the page
+Quote Post
wookieb
post
Post #9





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Swithc czytelniejsz, szybszy.


--------------------
Go to the top of the page
+Quote Post
FliSs_tCv
post
Post #10





Grupa: Zarejestrowani
Postów: 198
Pomógł: 3
Dołączył: 27.02.2007
Skąd: Tczew

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


teraz sam się zainteresowałem wookieb a mógłbyś pokazać przykład zastosowania switch ;>


--------------------
Go to the top of the page
+Quote Post
ErrorMessage
post
Post #11





Grupa: Zarejestrowani
Postów: 13
Pomógł: 1
Dołączył: 1.04.2008
Skąd: WARSZAWA

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


Nie jest to switch ale możne ci się przyda. Znalazłem go w starych plikach u siebie na dysku smile.gif
Kod

                @$go=$_GET['go'];
                if (file_exists(''.$go.'.php')){
                include(''.$go.'.php'); // a tutaj includowane są pliki
                }
                else if (($go != null) && (!file_exists(''.$go.'.php'))){
                include('error.php');j // jeżeli brak pliku o podanej nazwie lub ktoś poda błędny link wyświetli błąd
                } else{
                include('glowna.php'); // tutaj wyświetla ci sie strona główna czyli jak wejdziesz na stronę to właśnie to bedzie widoczne
                }

a linki będą wyglądać następująco
  1. <a href="index.php?go=dowolnyplik">nazwa pliku</a>

i nie dajesz rozszerzenia , rozszerzenie dopisywane jest w include(''.$go.'.php'); możesz dowolnie modyfikować te rozszerzenia. Skrypt dajesz w miejscu w którym maja się pojawiać includowane pliki. To na tyle myślę ze się skrypt przyda haha.gif . Może zawierać błędy przetestuj.

Ten post edytował ErrorMessage 31.08.2008, 20:40:29


--------------------
Go to the top of the page
+Quote Post
unlock
post
Post #12





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 31.08.2008

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


bardzo podoba mi sie propozycja ErrorMessage, dziękuje smile.gif tylko trzeba go zabezpieczyć
PS: ale jezeli ktoś będzie znał nazwe pliku, to może go wywołać z poziomu przeglądarki a napisalem skrypt logowania :

Kod
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($_POST['user']) && isset($_POST['pass']))
  {
addslashes($_POST['user']);
htmlspecialchars($_POST['user']);
strip_tags($_POST['user']);
addslashes($_POST['pass']);
htmlspecialchars($_POST['pass']);
strip_tags($_POST['pass']);

$podany_login = md5(md5($_POST['user']));
$podane_haslo = md5(md5($_POST['pass']));
$login = '5d11d0ba47a80b25d819f86557d662a7';
$haslo = 'c88b2f7570949ab69c96f7674b25fbd4';
if($login == $podany_login && $haslo == $podane_haslo)
   { include('wstaw/666.php'); }
else
   { header("Location: http://www.domain.com/8337"); }
  }
else
   { header("Location: http://www.domain.com/8337"); }
}
else
  { header("Location: http://www.domain.com/8337"); }
?>

i chodzi mi o to by ktos byl przekierowany na strone 666.php, ale nie mogl jej wywolac z poziomu przegladarki, jak to zrobic ?
jakie uprawniena nadac plikowi 666.php ?
hasła są wziete 2 razy w md5 bo z praktyki wiem ze proste hasła można złamać a md5 w md5 to pare milionow lat ;dd
Powód edycji: Zmoderowałem linki w skrypcie, na przyszłość patrz co dodajesz. /webdicepl
Go to the top of the page
+Quote Post
ErrorMessage
post
Post #13





Grupa: Zarejestrowani
Postów: 13
Pomógł: 1
Dołączył: 1.04.2008
Skąd: WARSZAWA

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


Zaszalejmy wprowadźmy parę modyfikacji a mianowicie:
wprowadź sesje:
Kod
       <?php
           session_start(); //to musisz zostawić bo pracujesz na sesjach
           ob_start(); //to musisz zostawić bo pracujesz na sesjach
          
           ........... //reszta kodu
          
              if($login == $podany_login && $haslo == $podane_haslo){
             $_SESSION['user'] = $login;
             echo 'Zostałe¶ zalogowany';
                header("Refresh:3; URL = 666.php");
             } else {
               echo 'Zły login lub hasło!';
             }
          
           ............. //reszta kodu
          
           ob_end_flush(); //to musisz zostawić bo pracujesz na sesjach
           ?>

a w pliku 666.php sprawdzaj czy sesja istnieje
Kod
      
  
  session_start(); //to musisz zostawić bo pracujesz na sesjach
   ob_start(); //to musisz zostawić bo pracujesz na sesjach
      
   if(isSet($_SESSION['user'])){
           // tu wprowadzasz treśc która ma sie pojawiac po zalogowaniu
           } else{
           // no to tu wiadomo co
           }
         ob_end_flush(); //to musisz zostawić bo pracujesz na sesjach


no i wylogowanie tworzysz plik logout.php

Kod
     session_destroy();
         if (empty($_SESSION['user'])){
            echo 'Zostale¶ poprawnie wylogowany!';
            header("Refresh:2; URL = gdzie ma przenosić");
         } else {
         echo 'Wylogowanie nie powiodło się!';
         }



to chyba tyle. Powinno być w miarę bezpieczne i przyjazne dla środowiska tongue.gif

Ten post edytował ErrorMessage 31.08.2008, 21:24:33


--------------------
Go to the top of the page
+Quote Post
unlock
post
Post #14





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 31.08.2008

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


pomysłowe, ale mam pare pytan, mianowicie, czy jezeli sesja istnieje w pliku 666.php to zawartosc strony bede musial dac w echo ' '; ? czy jest jakis inny sposób ?
Pytanie 2 : jak bedzie wyglądał odnosnik do logout.php?
Go to the top of the page
+Quote Post
FliSs_tCv
post
Post #15





Grupa: Zarejestrowani
Postów: 198
Pomógł: 3
Dołączył: 27.02.2007
Skąd: Tczew

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


odwołujesz się linkiem do logout np z menu smile.gif


--------------------
Go to the top of the page
+Quote Post
ErrorMessage
post
Post #16





Grupa: Zarejestrowani
Postów: 13
Pomógł: 1
Dołączył: 1.04.2008
Skąd: WARSZAWA

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


Moze inaczej przykład:
Kod
session_start(); //to musisz zostawić bo pracujesz na sesjach
  ob_start(); //to musisz zostawić bo pracujesz na sesjach
        
  if(isSet($_SESSION['user'])){
  echo 'Witaj świecie'; // to będą widzieć osoby które się zalogowały
  echo '<a href="logout.php">Wyloguj</a>'; // to będą widzieć osoby które się zalogowały
  } else{
  echo 'Nie jesteś zalogowany';
  }
  ob_end_flush(); //to musisz zostawić bo pracujesz na sesjach


Ten post edytował ErrorMessage 31.08.2008, 21:47:24


--------------------
Go to the top of the page
+Quote Post
unlock
post
Post #17





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 31.08.2008

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


okej, kodzik działa wszystko gra, ale pytanie czy po zalogowaniu w pliku 666.php tresc strony html musze wstawiac w echo ? czy jest inne rozwiazanie ?
Go to the top of the page
+Quote Post
Pilsener
post
Post #18





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


A moja propozycja co do tego stada inkludów - wrzuć te wszystkie includowane pliki do jednego folderu, zrób z nich tablicę funkcją glob, a następnie podstawiaj tylko numer ze zmiennej $_GET:

  1. <?php
  2. $numer = $_GET['cos'];
  3. $plik = $tablica[$numer];
  4. include($plik);
  5. ?>


Proste i wydajne. Ale jeszcze lepiej, żebyś zrobił sobie tablicę z opisami, anchorami etc. i trzymał ją w bazie/pliku, coś w stylu:

ID||Nazwa||Title||Link do pliku
1||pozycja 1||kliknij, by coś tam||includy/plik1.php
2||pozycja 2||kliknij, by coś tam||includy/plik2.php

Na podstawie takiej tablicy generujesz menu i wybraną pozycję.
Zalecam takie rozwiązania dlatego, że nikt Ci nie zainkluduje czegoś, czego nie ma na Twoim serwerze.
Go to the top of the page
+Quote Post
ErrorMessage
post
Post #19





Grupa: Zarejestrowani
Postów: 13
Pomógł: 1
Dołączył: 1.04.2008
Skąd: WARSZAWA

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


Cytat(unlock @ 31.08.2008, 22:59:30 ) *
okej, kodzik działa wszystko gra, ale pytanie czy po zalogowaniu w pliku 666.php tresc strony html musze wstawiac w echo ? czy jest inne rozwiazanie ?


Możesz wstawiać w echo " title="Zobacz w manualu PHP" target="_manual lub print " title="Zobacz w manualu PHP" target="_manual

Ten post edytował ErrorMessage 31.08.2008, 22:15:10


--------------------
Go to the top of the page
+Quote Post
unlock
post
Post #20





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 31.08.2008

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


powstawiałem, ale podczas wylogowywania dostaje :

Kod
[b]Fatal error[/b]:  Call to undefined function session_destory() in [b]/var/www/logout.php[/b] on line [b]2[/b]


Ten post edytował unlock 31.08.2008, 22:45:04
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Aktualny czas: 19.08.2025 - 20:19