Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Operacje na plikach tekstowych.
Forum PHP.pl > Forum > Przedszkole
fenox
Witam,

Chcę, żeby skrypt pobierał zmienną z formularza, a następnie wrzucał mi ją do pliku tekstowego hardwareid.txt TYLKO, gdy jej tam jeszcze nie ma. Napisałem taki oto kodzik:
  1. <?php
  2. $path = &#092;"../hardwareid.txt\";
  3. $ile = count(file($path));
  4. $petla = 0;
  5.  
  6. while ($petla <= $ile)
  7. {
  8. $handle = fopen($path, &#092;"r\");
  9. $lines = file($path); 
  10. $checkit = htmlentities($lines[$petla]);
  11. if ($hardwareid == $checkit)
  12. {
  13. $hardwarestate = &#092;"HardwareID był już użyty!\";
  14. break;
  15. }
  16. if ($petla == $ile and $hardwareid != $checkit)
  17. {
  18. $hardwarestate = &#092;"HardwareID nie był użyty!\";
  19. file_InsertLine($path, $hardwareid);
  20. }
  21. $petla++;
  22. }
  23. ?>

Jednak nie bardzo chce mi to działać - zapisuje mi zmienną $hardwareid do pliku bez względu, czy ona już tam jest, czy też nie. Proszę o jakieś wskazówki. Zaznaczam też, że na codzień kodzę w czymś innym, aktualnie męczę się nad stroną mojego projektu, więc powyższy kod może być trochę nieudolnie napisany ; )

Pozdrawiam!
Pilsener
Zakładam, że zmienna ma być dopisywana do pliku, jeśli w nim nie występuje?

  1. <?php
  2. $tablica = file('plik.txt'); //wrzucamy plik do tablicy
  3. if (!in_array("zmienna", $tablica)) { //sprawdzamy, czy wartosc nie istnieje w tablicy
  4. $plik=fopen('plik.txt', 'a'); //otwieramy plik w trybie dopisywania
  5. flock($plik, 2); //blokujemy na czas zapisu
  6. $puts = $zmienna."\n";
  7. fputs($plik, $puts);
  8. flock($plik, 3);
  9. fclose($plik);
  10. }
  11. ?>
-fenox-
Kurcze no, coś tu jest źle. Zawsze zapisze do tego pliku zmienną, nawet jak ona już tam siedzi :\

  1. <?php
  2. $path = "/srv/www/vhosts/anarchybot.na11.pl/httpdocs/notyet/hardwareid.txt";
  3.  
  4. $tablica = file($path); //wrzucamy plik do tablicy
  5. if (!in_array($hardwareid, $tablica)) 
  6. {
  7. $plik=fopen($path, 'a'); //otwieramy plik w trybie dopisywania
  8. flock($plik, 2);
  9. $puts = $hardwareid."\n";
  10. fwrite($plik, $puts);
  11. flock($plik, 3);
  12. fclose($plik);
  13. $hardwarestate = "Ten HardwareID nie był jeszcze użyty!";
  14. }
  15. else
  16. {
  17. $hardwarestate = "Ten HardwareID ZOSTAŁ już użyty!";
  18. }
  19. ?>


Co robię źle? :\
Kicok
w pliku nie siedzi $hardwareid tylko $hardwareid."\n"
fenox
Dzięki wielkie! Teraz działa : )

Pozdrawiam!
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.