Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przenosiny z ereg na preg
Forum PHP.pl > Forum > Przedszkole
DestiX
Witajcie, mam do napisania pewien skrypt i potrzebne jest mi tutaj wyszukiwanie słów w pliku. Udało mi się to zrobić przy pomocy jak się okazało przestarzałego "ereg". Próbowałem samemu przerobić to na "preg_match" no ale niestety nie potrafię. Zamieszczam poniżej mój kod i liczę na jak najszybszą pomoc.

  1. <?php
  2. if (isset($_POST['loguj'])){
  3. if ($_POST['login'] == '' || $_POST['pass'] == ''){
  4. echo ('Musisz uzupełnić pola.');
  5. } else {
  6. $login = $_POST['login'];
  7. $haslo = $_POST['pass'];
  8.  
  9.  
  10.  
  11. //wczytuje plik
  12. $tekst=file_get_contents('db/konta.haha.gif');
  13.  
  14. //czy zmienne są puste
  15.  
  16. if($login!='' || $haslo!='')
  17. {
  18.  
  19. //szukanie konta
  20. if(ereg($login,$tekst)|| ereg($haslo,$tekst))
  21. {
  22. echo 'Zalogowałeś się na konto:'.$login;
  23. }
  24. else
  25. {
  26. echo 'Konto: '.$login.'nie istnieje';
  27. }
  28. }
  29. }
  30. }
  31. ?>
Turson
Nie masz żadnego wzorca więc samo strpos wystarczy.
nospor
@Turson wystarczyc moze i wystarczy, co nie zmienia faktu, ze bedzie do kitu....

przyklad:
koles wpisujesz w pole LOGIN 'bam'
a w "bazie" ma 'bambus'
i ups, zalogouje sie
Daimos
nospor, ale chyba o to autorowi tematu chodzi wink.gif bo z tego co widzę, to chce szukać loginu w jakimś tekście. Po co i dlaczego, to już nie nam oceniać, ale jeśli to system logowania, to faktycznie...
nospor
@Daimos to że autor robi logicze bledy nieznaczy, że mamy mu ich niewypomnieć wink.gif
DestiX
Robię prosty skrypt sklepu do szkoły, nie musi to być nie wiadomo co dlatego też proszę nie wnikać w to jak to jest napisane albo co w czym szukam bo jest to nie istotne. Kod, który wstawiłem wyżej działa w sposób dla mnie odpowiedni. Jedyne co jest nie tak to fakt, że na stronie mam info o tym, że funkcja ereg jest przestarzała dlatego też proszę was o zamienienie tej funkcji na ponoć nowszą "preg". To wszystko smile.gif
nospor
NO to dostales odpowiedz: strpos... Ile razy mozna pisac o tym?
DestiX
No ale wyczytałem też jak sam podałeś, że można podać "bam" a zaloguje się na konto "bambus". W ereg tego nie było, jeżeli nie znalazło dokładnie całego "bambus" to nie logowało.
nospor
A, zrozumialem, ze w ereg miales podobny blad smile.gif

edit: no ale chwila... w ereg miales wpisac BAM a nie BAMBUS. Jak wpisales BAM to ci nie znalazl mimo ze byl BAMBUS? cos krescisz wink.gif

edit:
if (ereg('bam','blabla bambus blala')) echo 'ok'; else echo 'nieok';
nom, czyli jest jak mowilem, wiec rownie dobrze mozesz stosowac STRPOS
DestiX
Rzeczywiście, wpisuje "bam" i loguje na "bambusa". Widocznie mi się tylko wydawało. No dobra to niech już tak to zostanie.

  1. if(strpos($login, $tekst)|| strpos($haslo, $tekst))


Tak to ma/może wyglądać?
Turson
Zajrzyj do manuala. Zobaczysz, że strpos jest pehapowym wyjątkiem od reguły i kolejność argumentów jest inna
DestiX
  1. <?php
  2. if (isset($_POST['loguj'])){
  3. if ($_POST['login'] == '' || $_POST['pass'] == ''){
  4. echo ('Musisz uzupełnić pola.');
  5. } else {
  6. $login = $_POST['login'];
  7. $haslo = $_POST['pass'];
  8.  
  9.  
  10.  
  11. //odczyt pliku - wczytanie jego treści do stringa
  12. $tekst=file_get_contents('db/konta.haha.gif');
  13.  
  14. //Warunek: Czy w zmiennej $wyraz coś istnieje?
  15.  
  16. if($login!='' || $haslo!='')
  17. {
  18. $log = strpos($tekst, $login);
  19. $pas = strpos($tekst, $haslo);
  20.  
  21. if($log !== FALSE|| $pas !== FALSE)
  22. {
  23. echo 'Zalogowałeś się na konto:'.$login;
  24. $plik = "db/logged.haha.gif";
  25. $fp = fopen($plik, "a+");
  26. fwrite($fp, $login);
  27. fclose($fp);
  28. }
  29. else
  30. {
  31. echo 'Konto: '.$login.'nie istnieje';
  32. }
  33. }
  34. }
  35. }
  36. ?>


No teraz to nie wiem ocb. Za każdym razem dostaje info, że zalogowano na konto. Zmieniałem "FALSE" na "TRUE", usuwałem i dodawałem"!" i jedyna różnica to taka, że albo za każdym razem loguje na konto (nawet jak nie istnieje) albo nie loguje (nawet jak istnieje).
nospor
No ale logika sie klania...
nie: if($log !== FALSE|| $pas !== FALSE)
a: if($log !== FALSE && $pas !== FALSE)

To jak miales
if($log !== FALSE|| $pas !== FALSE)
to wystarczy ze albo zgadza sie login albo haslo i juz loguje

To samo tutaj:
if($login!='' || $haslo!='')

tak ma byc:
if($login!='' && $haslo!='')
I login i haslo mają byc wypelnione
DestiX
A no fakt, myślenie o tej godzinie nie działa u mnie najlepiej. Jak na razie wszystko działa tak, że dzięki za pomoc. Gdy jeszcze coś zepsuje to napiszę smile.gif.
Daimos
Cytat(nospor @ 17.11.2014, 21:28:23 ) *
@Daimos to że autor robi logicze bledy nieznaczy, że mamy mu ich niewypomnieć wink.gif

co prawda to prawda smile.gif

Cytat(DestiX @ 17.11.2014, 21:36:49 ) *
Robię prosty skrypt sklepu do szkoły, nie musi to być nie wiadomo co dlatego też proszę nie wnikać w to jak to jest napisane albo co w czym szukam bo jest to nie istotne. Kod, który wstawiłem wyżej działa w sposób dla mnie odpowiedni...


Tak samo podejrzewam, że twierdziła słynna studentka z Łodzi, z jej prostą aplikacją za 500tys zł do liczenia głosów wink.gif
Lepiej się uczyć od razu dobrych nawyków, bo to jak jest teraz napisane, odbije się na Twoich aplikacjach w przyszłości, każdy to potwierdzi. Sam mam nawyki, za które bym się zabił, a jednak czasami z przyzwyczajenia je stosuje, żałuje, ale tak się nauczyłem i czasami ponosi smile.gif
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.