Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] przeszukanie i porównanie pliku txt
Forum PHP.pl > Forum > Przedszkole
Hagen
Witam. Posiadam skrypt który pobiera z formularza adres email a następnie go zapisuje w pliku tekstowym. Chciałby dodać funkcję do tego skryptu aby nie dodawał kolejny raz tego samego adresu email. Czyli jeżeli jest podane adres email to zeby go nie zapisywał ponownie w pliku tekstowym. Mógłby ktos mi powiedzieć w ogole od czego mam zacząć?
Turson
Na przykładzie
  1. $w = "lorem ipsum bl ab lab la";
  2. $s = "ipsum";
  3. if(preg_match("/$s/",$w)){
  4. echo "znaleziono";
  5. }


ewentualnie strpos
Hagen
gdzie określileś to że funkcja ma przeszukać plik tekstowy ?
tomxx
  1. <?php
  2. function znaleziono($tekst) {
  3. $fp = fopen("file1.php", "a+");
  4. $zawartość = fread($fp, filesize("file1.php"));
  5. if(preg_match("/$tekst/",$zawartość))
  6. return 1;
  7. return 0;
  8. }
  9.  
  10. if(!znaleziono('e-mail')) {
  11. /* instrukcje zapisujące e-mail */
  12. }
  13. ?>
(zamiast "file1.php" należy podać własną nazwę pliku)
Hagen
właśnie zauwarzylem przed chwilą że mam problem w ogole z zapisanie adresu email do pliku, niby wszystko ładnie działa, plik zwiększa swoją objętość na serwerze, ale jak go otworzę to jest pusty ohmy.gif oto skrypt:

  1. <?php
  2. /*********************************************
  3. * plik formularz.php
  4. *********************************************/
  5.  
  6. $pole1 = trim($_POST['pole1']);
  7. $pole2 = trim($_POST['pole2']);
  8.  
  9. if(empty($pole1) and empty($pole2)) {
  10.  
  11. // prosty formularz zawierający dwa pola
  12. echo '<form action="" method="post">
  13. <input type="text" name="pole1" style="width: 200px;" /><br />
  14. <textarea name="pole2" style="width: 200px; height: 100px;">
  15. </textarea><br />
  16. <input type="submit" value="Zapisz" />
  17. </form>';
  18. }
  19. else {
  20.  
  21. // dane pochodzące z formularza
  22. $dane = $pole1."`".$pole2."\n";
  23. // przypisanie zmniennej $file nazwy pliku
  24. $file = "baza.txt";
  25. // uchwyt pliku, otwarcie do dopisania
  26. $fp = fopen($file, "a");
  27. // blokada pliku do zapisu
  28. flock($fp, 2);
  29. // zapisanie danych do pliku
  30. fwrite($fp, $dane);
  31. // odblokowanie pliku
  32. flock($fp, 3);
  33. // zamknięcie pliku
  34. fclose($fp);
  35.  
  36. echo "Dane zostały zapisane!<br />";
  37. echo "<a href=\"podglad.php\">Zobacz wpisane dane</a>";
  38. }
  39.  
  40. ?>
_Borys_
Jak ten plik otwierasz, skryptem ?
To tam jest błąd, ten tu zapisuje poprawnie.
Skąd wiesz że zwiększa objętość skoro nie widzisz co zapisane.
Hagen
Już ogarnołem. Widziałem w programie ftp ze plik zwieksza objetość. Teraz się męczę jak te dwa skrypty połączyć :/
tomxx
Dodaj do swojego kodu moją funkcję z postu #5 (zmieniając "file1.php" na "baza.txt"), a linijkę 19 z kodu z postu #6 zmień na:
  1. elseif(!znaleziono(/*tutaj podaj zmienną z adresem e-mail*/)) {
Hagen
działa smile.gif dziękuje ślicznie wink.gif

Ostatnie male pytanko. W poniższej linijce zapisywany jest adres email, chciałbym aby kazdy email był zapisywany z nowej linijce w pliku baza.txt

  1. $dane = $email."";


jak powyższy kod zamienię na

  1. $dane = $email."<br />";


to w pliku baza.txt zapisuje mi adres email wraz z <br />. Jak to zrobić aby mi przechodziło do następnej linii...
tomxx
  1. $dane = $email."\n";
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.