Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [INCLUDE]PINI - PHP INI FILE PROCESSOR V1.1
Forum PHP.pl > Forum > PHP
grasmanek94
PINI - Include dla funkcji obslugiwania plikow INI.
Latwe w uzyciu oraz wlasne funkcje FTP!

Funkcje:
Kod
//----PHP_INI_FUNCTIONS----//
pini_Exists($filename) <- Sprawdza czy plik o danej nazwie istnieje
pini_Remove($filename)<- Usuwa plik o danej nazwie
pini_Create($filename) <- Tworzy plik o danej nazwie
pini_Get($filename,$key) <- Pobiera $key= z pliku INI jako string
pini_IntGet($filename,$key) <- Pobiera $key= z pliku INI jako int
pini_Set($filename,$key,$value) <- Ustawia $key= w pliku INI na $value
pini_IntSet($filename,$key,$value)  <- Ustawia $key= w pliku INI na $value
//----FTP_PHP_INI_FUNCTIONS----//
FTP_pini_Exists($filename,$host,$user,$password,$path)
FTP_pini_Remove($filename,$host,$user,$password,$path)
FTP_pini_Create($filename,$host,$user,$password,$path)
FTP_pini_Get($filename,$key,$host,$user,$password,$path)
FTP_pini_IntGet($filename,$key,$host,$user,$password,$path)
FTP_pini_Set($filename,$key,$value,$host,$user,$password,$path)
FTP_pini_IntSet($filename,$key,$value,$host,$user,$password,$path)
//----PHP_UDB_FUNCTIONS----//
udb_hash($buf)// hashuje STRING
udb_encode($nickname)//koduje string
udb_decode($nickname)//odkoduje string


Maly przyklad uzycia:
  1. <?php
  2. include('pini.php');
  3.  
  4. $promote = $_POST['kodpremium'];
  5. $nickname = $_POST['uzytkownik'];
  6. $pass = $_POST['haslo'];
  7. $usg = $_POST['promocja'];
  8.  
  9. $host = "127.0.0.1";
  10. $user = "admin";
  11. $password = "admin";
  12. $path = "samp/scriptfiles/";
  13. $pname = udb_encode($nickname);
  14.  
  15. $userpass = FTP_pini_Get($pname,"password",$host,$user,$password,$path);
  16. $newpass = udb_hash($pass);
  17.  
  18. $lines = file("uzytekodykupna2.txt");
  19. foreach ($lines as $line) {
  20. $line = rtrim($line);
  21. if($promote == $line){
  22. printf("ERROR:0x4B44555A!(KOD JUZ ZOSTAL ZUZYTY)<BR>");
  23. exit();
  24. }
  25. }
  26.  
  27. $found = 0;
  28. $lines = file("kodykupna2.txt");
  29. foreach ($lines as $line) {
  30. $line = rtrim($line);
  31. $line = str_replace("sha1('","",$line);
  32. $line = str_replace("');","",$line);
  33. if($promote == $line){
  34. $found = 1;
  35. }
  36. }
  37.  
  38. if($found == 0){
  39. echo("ERROR:0x5A4C4B44!(KOD NIEPOPRAWNY)<BR>");
  40. exit();
  41. }
  42.  
  43. if($userpass != $newpass){
  44. echo("ERROR:0x42444C47!(ZLE HASLO LUB LOGIN)<BR>");
  45. exit();
  46. }
  47.  
  48. if($usg == "Paczka1"){
  49. FTP_pini_Set($pname,"Testowy2","UdaloSie2",$host,$user,$password,$path);
  50. }
  51.  
  52. $f=fopen("uzytekodykupna2.txt","a+");
  53. fwrite($f,$promote);
  54. fwrite($f,"\r\n");
  55. fclose($f);
  56.  
  57. print("Zakup Udany!");
  58.  
  59. ?>


Zapraszam do sciagania:

Mirror1
Mirror2
Zyx
Wynajdowanie koła na nowo, w dodatku z dość kiepskim interfejsem i wybitnie niewydajne:

parse_ini_file()
FTP file wrapper

Byś chociaż użył tej funkcji do parsowania, jak już naprawdę chcesz się w to bawić...
grasmanek94
Cytat(Zyx @ 24.05.2010, 07:42:37 ) *
Wynajdowanie koła na nowo, w dodatku z dość kiepskim interfejsem i wybitnie niewydajne:

parse_ini_file()
FTP file wrapper

Byś chociaż użył tej funkcji do parsowania, jak już naprawdę chcesz się w to bawić...


ej co ty myslisz ze ja nie znam php.net?

ten ini parser tez do dupy. Moj latwiejszy w obsludze.
Jesli taki madry jestes to sam zrob taki include i pokaz mi jak to 'pro' robi ktory ma 600 postow i siedzi w php nie wiem ile, bo ja tylko tydzien w php sie bawie i jakos mi sie podoba.

moze i jest to wymagajacy script ale coz, jesli ty masz kompa 266MHz z 312MB ramu i karta graficzna 4MB to zyjesz w przeszlosci a nie dzisiejszych czasach, spojz na wymagania 'standardowej' dzisiejszej gry. Takie cos to nic na dzisiejsze potezne serwery.
zend
Jeśli masz zamiar robić takie zabawki to zrób to obiektowo, na odpowiednich interfejsach, wtedy sam bym chętnie z czegoś takiego skorzystał smile.gif
Mchl
Kod
if(@ftp_delete($ftp_connection, $filename))
{
    if(@ftp_put($ftp_connection, $filename,$filename, FTP_BINARY))
    {
        unlink($filename);
        ftp_close($ftp_connection);
        return 1;
    }
}
else
{
    if(@ftp_put($ftp_connection, $filename,$filename, FTP_BINARY))
    {
        unlink($filename);
        ftp_close($ftp_connection);
        return 1;
    }
}


WTF??
Zyx
Nie wiem czy znasz manuala, nie wiem, ile programujesz w PHP. Widzę, że napisałeś skrypt, w którym popełniłeś mnóstwo poważnych błędów. Aczkolwiek patrząc po tym, ile razy wynajdujesz w nim koło na nowo, śmiem twierdzić, że jednak nie znasz go tak dobrze, jak twierdzisz. Do parsowania plików INI jest gotowa funkcja i pisanie własnego parsera, w dodatku okrojonego, nie ma najmniejszego sensu - nawet jeśli potrzebowałeś "lepsze" API, wystarczyło w nim użyć gotowego parsera. Do tworzenia plików jest osobna funkcja, a nie kombinacja fopen()+fclose(). str_replace() nie trzeba wywoływać 15 razy na tym samym ciągu, by zamienić 15 sekwencji, bo funkcja ta może przyjąć tablicę. Przy modyfikacji zrzucasz wszystko do pliku tymczasowego, a później podmieniasz, mimo iż nie jest Ci on do niczego potrzebny, bo dotychczasową zawartość masz już przecież w pamięci, a nawet gdyby to miało służyć zabezpieczeniu przed przypadkowym odczytem, to od tego jest blokowanie plików. Stworzyłeś różne funkcje w stylu udb_decode() i udb_encode() podczas gdy PHP ma wbudowanych od cholery funkcji generujących hasze, konwertujących ciąg na tekst bezpieczny i nie wiadomo, co jeszcze.

Kolejna rzecz to kwiatki w stylu:

  1. $lines = file("$filename");


Zastanowiłeś się chociaż, co robi zapis "$zmienna"?

A największy zarzut jest taki, że wczytujesz te same rzeczy po 1000 razy, zamiast je sobie wczytać raz, a dobrze, zapamiętać w jakimś miejscu i wykorzystywać.

Ad. podanego przykładu - od tego są bazy danych.

Cytat
moze i jest to wymagajacy script ale coz, jesli ty masz kompa 266MHz z 312MB ramu i karta graficzna 4MB to zyjesz w przeszlosci a nie dzisiejszych czasach, spojz na wymagania 'standardowej' dzisiejszej gry. Takie cos to nic na dzisiejsze potezne serwery.


Zanim zaczniesz wypowiadać się w taki arbitralny sposób o wydajności, napisz sobie jakiś serwis, który ma więcej niż jedno wejście na dobę, a najlepiej przemnóż sobie te "wymagania standardowej gry, które są niczym na dzisiejsze potężne serwery" przez np. 10 wejść na sekundę i oblicz, przy jakim ruchu te "potężne serwery" padną. Bo jeśli chcesz dołączać do grona kolejnych pseudoprogramistów, którzy nie mają pojęcia o podstawach algorytmiki i twierdzą, że wydajność to przeżytek, naprawdę daruj sobie programowanie. Sprzątanie bałaganu informatycznego po takich ludziach to nic przyjemnego.

PS. Polecam lekturę podstawowych zasad netykiety. Nikt Cię na tym forum nie będzie głaskać po główce i mówić, jaki to jesteś fajny tylko dlatego, że Ci się samodzielnie skrypt udało napisać i obrażanie się w niczym nie pomoże.
piotr94
Cóż, ja też kiedyś zaczynałem od zera i robiłem głupie błędy typu includowanie plików z $_GET[] i umiałem przyjąć słowa krytyki z pokorą, bo uwierz mi, bez pokory i słuchania rad innych daleko nie zajdziesz. Gdybym ja zachowywał się tak jak ty to dalej tkwiłbym w zapisywaniu dat w stringach i robieniu menu na zasadzie include $_GET[].
Co do archaicznego komputera:
Wyobraź sobie, że gry nie są dobrym przykładem, taka gra to też NIC na potężne serwery, ale 10 000 skryptów czy 10 000 gier uruchomionych jednocześnie to już coś.
Dzięki temu, że zatracono zasady optymalizacji ludzie tyle narzekali na Vistę, tymczasem Linux uruchomiony na tym samym komputerze działa jak strzała.
Ty myślisz trochę jak ludzie z Microsoftu: skoro mamy mocny komputer to nie trzeba optymalizować, tymczasem twórcy Linuksa myślą tak: skoro mamy mocny komputer, to jak zoptymalizujemy system to będzie działał szybciej.
Sam zadaj sobie pytanie, który system operacyjny jest bardziej stabilny i ceniony wśród programistów.
I uwierz mi, z dużą "buzią" i obrażaniem innych daleko nie zajdziesz, bo ani Ty, ani ja nie jesteśmy wybitnymi programistami, jednak słuchając rad i krytyki innych możemy robić coś lepiej.

zwykle nie zrzędzę i jestem bardziej wyrozumiały, ale po prostu Twoja postawa tego wymaga, a teraz co do samego projektu:
podpiszę się ogólnie pod opinią kolegów, że to nic nowego, i ze jest sporo błędów
patrzę na to jednak z drugiej strony, sam też czasem piszę sobie różnego rodzaju nakładki, bo to rzeczywiście czasem ułatwia życie, ale zawsze optymalizuję tego typu nakładki i:
1. po licho dublować funkcje file_exists itp?
Kod
function pini_Exists($filename)
    {
        return file_exists($filename);
    }

    function pini_Remove($filename)
    {
        return unlink($filename);
    }

2. wywołujesz niektóre funkcje po kilka razy (szczególnie przy obsłudze ftp, przy każdej funkcji łączysz się z serwerem, a potem rozłączasz, jakbyś to zrobił obiektowo to byś nie miał z tym problemów)
3. po co komu przechowywanie danych w plikach (Twój przykład jako element sklepu internetowego), nie łatwiej w bazie MySql z cache'em??
teraz będę się czepiać szczegółów:
Kod
printf("ERROR:0x4B44555A!(KOD JUZ ZOSTAL ZUZYTY)<BR>");

4. nie <BR> tylko <br/>
5. ten kod błędu 0x4B44555A wzbudza mój szczery uśmiech ( smile.gif ) i jest kwintesencją Twoich umiejętności winksmiley.jpg
6. a co do hashowania to na prawdę nie brak innych metod (md5, sha, crc, ...)
Mchl
Cytat(piotr94 @ 24.05.2010, 11:13:22 ) *
4. nie <BR> tylko <br/>


A skąd wiadomo czy to HTML czy XHTML? ;P
Nie męczcie chłopaka za bardzo. Ja po tygodniu z PHP raczej czegoś takiego bym nie napisał. Pokory jeszcze się nauczy.
Zyx
Nie, pokora powinna iść od początku, bo później będzie tylko gorzej, a przez jej brak tak naprawdę guzik się nauczy. Dobrym programistą nie zostaje się krzycząc "jesteście głupi, mi się podoba", ale dzięki krytyce i umiejętności pomyślenia "kurde, faktycznie o tym nie pomyślałem, poszukam więc, jak można zrobić to lepiej". Zresztą zauważ, że w pierwszym poście nie ma nic o umiejętnościach autora, a jedynie hurraoptymistyczne "patrzcie, jakie świetne".
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.