Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Skrypt na usuwanie wpisów z pliku tekstowego
Forum PHP.pl > Forum > Przedszkole
sloenthran
Witam serdecznie!

Otóż mam pewien problem a mianowicie napisałem sobie skrypt usuwający wpisy z pewnego pliku... Plik zostaje prawidłowo pobrany jednakże wpis nie zostaje mi z niewiadomych przyczyn usunięty... Jeżeli ktoś mógłby mi z tym pomóc to byłbym wdzięczny...

nick.php
  1. <?php
  2.  
  3. require_once('funkcje/MySQL.php');
  4. require_once('funkcje/Zakupy.php');
  5. require_once('funkcje/Pliki.php');
  6.  
  7. OtworzMySQL();
  8.  
  9. $Zapytanie = @mysql_query("SELECT * FROM serwery");
  10.  
  11. while($Pobieranie = @mysql_fetch_array($Zapytanie))
  12. {
  13.  
  14. $Serwer = $Pobieranie['nazwa'];
  15.  
  16. $ZapytanieDwa = @mysql_query("SELECT * FROM $Serwer");
  17.  
  18. while($PobieranieDwa = @mysql_fetch_array($ZapytanieDwa))
  19. {
  20.  
  21. $Waznosc = $PobieranieDwa['waznosc'];
  22. $UserID = $PobieranieDwa['id'];
  23. $Login = $PobieranieDwa['login'];
  24. $Haslo = $PobieranieDwa['haslo'];
  25. $Flaga = $PobieranieDwa['flaga'];
  26.  
  27. if($Waznosc < 0 || $Waznosc == 0)
  28. {
  29.  
  30. $ZapytanieTrzy = @mysql_query("SELECT * FROM serwery WHERE nazwa='$Serwer'");
  31. $PobieranieTrzy = @mysql_fetch_array($ZapytanieTrzy);
  32.  
  33. $FTPHOST = $PobieranieTrzy['ftp_host'];
  34. $FTPLOGIN = $PobieranieTrzy['ftp_login'];
  35. $FTPHASLO = $PobieranieTrzy['ftp_haslo'];
  36. $SCIEZKA = $PobieranieTrzy['sciezka'];
  37.  
  38. $SumowanieFlagJeden = @mysql_query("SELECT * FROM $Serwer WHERE id='$UserID' and login='$Login'");
  39.  
  40. while($SumowanieFlagDwa = mysql_fetch_array($SumowanieFlagJeden))
  41. {
  42.  
  43. $SumowanieFlagTrzy = $SumowanieFlagDwa['flaga'];
  44.  
  45. $Admin = $SumowanieFlagDwa['haslo'];
  46.  
  47. if($Admin = '-') { }
  48.  
  49. else
  50. {
  51.  
  52. $SumowanieFlagCztery = $SumowanieFlagCztery.$SumowanieFlagTrzy;
  53.  
  54. }
  55.  
  56. }
  57.  
  58. $FlagaZ = 'z';
  59. $SumowanieFlagPiec = $SumowanieFlagCztery.$FlagaZ;
  60.  
  61. PobierzUsers($FTPLOGIN, $FTPHASLO, $FTPHOST, $SCIEZKA);
  62.  
  63. $LinijkaUsers = SprawdzUsers($Login, $Haslo, $SumowanieFlagPiec);
  64.  
  65. UsunUsers($LinijkaUsers);
  66.  
  67. WrzucUsers($FTPLOGIN, $FTPHASLO, $FTPHOST, $SCIEZKA);
  68.  
  69. @mysql_query("DELETE FROM $Serwer WHERE flaga='$Flaga' AND id='$UserID' AND login='$Login' AND haslo='$Haslo'");
  70.  
  71. $WYNIK = @mysql_query("SELECT * FROM $Serwer WHERE login='$Login' AND id='$UserID'");
  72.  
  73. if(@mysql_num_rows($WYNIK) == 1)
  74. {
  75.  
  76. $DwaSumowanieFlagJeden = @mysql_query("SELECT * FROM $Serwer WHERE id='$UserID'");
  77.  
  78. while($DwaSumowanieFlagDwa = mysql_fetch_array($DwaSumowanieFlagJeden))
  79. {
  80.  
  81. $DwaSumowanieFlagTrzy = $DwaSumowanieFlagDwa['flaga'];
  82.  
  83. $DwaAdmin = $DwaSumowanieFlagDwa['haslo'];
  84.  
  85. if($DwaAdmin = '-') { }
  86.  
  87. else
  88. {
  89.  
  90. $DwaSumowanieFlagCztery = $DwaSumowanieFlagCztery.$DwaSumowanieFlagTrzy;
  91.  
  92. }
  93.  
  94. }
  95.  
  96. $ZsumowaneFlagi = $DwaSumowanieFlagCztery.$FlagaZ;
  97.  
  98. PobierzUsers($FTPLOGIN, $FTPHASLO, $FTPHOST, $SCIEZKA);
  99.  
  100. DodajUsers($Login, $Haslo, $ZsumowaneFlagi);
  101.  
  102. WrzucUsers($FTPLOGIN, $FTPHASLO, $FTPHOST, $SCIEZKA);
  103.  
  104. }
  105.  
  106. }
  107.  
  108. }
  109.  
  110. }
  111.  
  112. ZamknijMySQL();
  113.  
  114. ?>
  115.  


pliki.php
  1. <?php
  2.  
  3. function PobierzUsers($FTPLOGIN, $FTPHASLO, $FTPHOST, $SCIEZKA)
  4. {
  5.  
  6. $Download = curl_init('ftp://'.$FTPLOGIN.':'.$FTPHASLO.'@'.$FTPHOST.'/'.$SCIEZKA.'');
  7. $Open = fopen('users.ini', 'w');
  8. curl_setopt($Download, CURLOPT_FILE, $Open);
  9. curl_exec($Download);
  10. fclose($Open);
  11. curl_close($Download);
  12.  
  13. }
  14.  
  15. function WrzucUsers($FTPLOGIN, $FTPHASLO, $FTPHOST, $SCIEZKA)
  16. {
  17.  
  18. $Upload = curl_init('ftp://'.$FTPLOGIN.':'.$FTPHASLO.'@'.$FTPHOST.'/'.$SCIEZKA.'');
  19. $Open = fopen('users.ini', 'r');
  20. curl_setopt($Upload, CURLOPT_INFILE, $Open);
  21. curl_setopt($Upload, CURLOPT_UPLOAD, true);
  22. curl_exec($Upload);
  23. fclose($Open);
  24. curl_close($Upload);
  25.  
  26. unlink('users.ini');
  27.  
  28. }
  29.  
  30. ?>


zakupy.php
  1. <?php
  2.  
  3. function SprawdzStatusHosta($IP, $Port)
  4. {
  5.  
  6. if($Query = @fsockopen("$IP", "$Port", $errno, $errstr, 30))
  7. {
  8.  
  9. $SprawdzStatusHosta = 1;
  10. fclose($Query);
  11.  
  12. }
  13.  
  14. else
  15. {
  16.  
  17. $SprawdzStatusHosta = 0;
  18.  
  19. }
  20.  
  21. return $SprawdzStatusHosta;
  22.  
  23. }
  24.  
  25. function DodajUsers($Login, $Haslo, $Flagi)
  26. {
  27.  
  28. $OtworzPlik = fopen('users.ini', "a");
  29.  
  30. if($OtworzPlik)
  31. {
  32.  
  33. $DodajPremke = fwrite($OtworzPlik, '"'.$Login.'" "'.$Haslo.'" "'.$Flagi.'" "a"');
  34.  
  35. if($DodajPremke)
  36. {
  37.  
  38. $NowaLinia = fwrite($OtworzPlik, "\r\n");
  39.  
  40. if($NowaLinia)
  41. {
  42.  
  43. fclose($OtworzPlik);
  44. }
  45.  
  46. }
  47.  
  48. }
  49.  
  50. }
  51.  
  52. function SprawdzUsers($Login, $Haslo, $Flagi)
  53. {
  54.  
  55. $Tablica = file('users.ini', FILE_IGNORE_NEW_LINES);
  56. $PozycjaRekordu = array_search('"'.$Login.'" "'.$Haslo.'" "'.$Flagi.'" "a"', $Tablica);
  57.  
  58. return $PozycjaRekordu;
  59.  
  60. }
  61.  
  62. function UsunUsers($Linijka)
  63. {
  64.  
  65. $Dane = file('users.ini');
  66.  
  67. if($Linijka AND $Dane)
  68. {
  69.  
  70. unset($Dane[$Linijka--]);
  71.  
  72. $OtworzPlik = fopen($Plik, 'w');
  73.  
  74. if($OtworzPlik)
  75. {
  76.  
  77. $NadpiszPlik = fwrite($OtworzPlik, join('',$Dane));
  78.  
  79. if($NadpiszPlik)
  80. {
  81.  
  82. fclose($OtworzPlik);
  83.  
  84. }
  85.  
  86. }
  87.  
  88. }
  89.  
  90. }
  91.  
  92. function DodajAdmina($Login, $Flagi)
  93. {
  94.  
  95. $OtworzPlik = fopen('users.ini', "a");
  96.  
  97. if($OtworzPlik)
  98. {
  99.  
  100. $DodajPremke = fwrite($OtworzPlik, '"'.$Login.'" "" "'.$Flagi.'" "ce"');
  101.  
  102. if($DodajPremke)
  103. {
  104.  
  105. $NowaLinia = fwrite($OtworzPlik, "\r\n");
  106.  
  107. if($NowaLinia)
  108. {
  109.  
  110. fclose($OtworzPlik);
  111.  
  112. }
  113.  
  114. }
  115.  
  116. }
  117.  
  118. }
  119.  
  120. function SprawdzAdmina($Login, $Flagi)
  121. {
  122.  
  123. $Tablica = file('users.ini', FILE_IGNORE_NEW_LINES);
  124.  
  125. $PozycjaRekordu = array_search('"'.$Login.'" "" "'.$Flagi.'" "ce"', $Tablica);
  126.  
  127. return $PozycjaRekordu;
  128.  
  129. }
  130.  
  131. ?>
mlawnik
Najpierw wywal zagłuszanie błędów i daj error_reporting na E_ALL, może coś wyskoczy.
Sprawdź także prawa zapisu do plików.
b4rt3kk
Jednego jestem pewien - masz źle skonstruowaną bazę danych. Co widać po kodzie pierwszego pliku, który zamieściłeś. Tyle zapytań w pętlach, które można by śmiało zredukować do jednego. Nie prościej mieć tak?

Tabela: Serwery - id, nazwa, ftp, itd...
Tabela: Users - id, id_serwer, login, haslo, itd...

To co realizujesz tam poprzez miliard zapytań mógłbyś zrobić jednym:

  1. SELECT * FROM Serwery JOIN Users ON Serwery.id = Users.id_serwer
sloenthran
Cytat(mlawnik @ 27.06.2013, 17:04:23 ) *
Najpierw wywal zagłuszanie błędów i daj error_reporting na E_ALL, może coś wyskoczy.
Sprawdź także prawa zapisu do plików.


Nic nie wyskakuje...

Cytat(b4rt3kk @ 27.06.2013, 18:03:10 ) *
Jednego jestem pewien - masz źle skonstruowaną bazę danych. Co widać po kodzie pierwszego pliku, który zamieściłeś. Tyle zapytań w pętlach, które można by śmiało zredukować do jednego. Nie prościej mieć tak?

Tabela: Serwery - id, nazwa, ftp, itd...
Tabela: Users - id, id_serwer, login, haslo, itd...

To co realizujesz tam poprzez miliard zapytań mógłbyś zrobić jednym:

  1. SELECT * FROM Serwery JOIN Users ON Serwery.id = Users.id_serwer


Może i prościej jednakże w PHP "siedzę" dopiero od jakiegoś czasu i nie potrafię inaczej konstruować baz danych...
b4rt3kk
Ta funkcja ma usuwać ową linijkę z pliku, prawda?

  1. function UsunUsers($Linijka)
  2. {
  3.  
  4. $Dane = file('users.ini');
  5.  
  6. if($Linijka AND $Dane)
  7. {
  8.  
  9. unset($Dane[$Linijka--]);
  10.  
  11. $OtworzPlik = fopen($Plik, 'w');
  12.  
  13. if($OtworzPlik)
  14. {
  15.  
  16. $NadpiszPlik = fwrite($OtworzPlik, join('',$Dane));
  17.  
  18. if($NadpiszPlik)
  19. {
  20.  
  21. fclose($OtworzPlik);
  22.  
  23. }
  24.  
  25. }
  26.  
  27. }
  28.  
  29. }


Jakbyś przeanalizował krok po kroku ową funkcję (np. wyświetlając kawałek po kawałku wynikową tablicę, to byś zauważył, że ten warunek nie ma sensu:

  1. if($Linijka AND $Dane)


Po pierwsze, chcesz tutaj porównać tablicę (powstałą przez otwarcie pliku) ze (tak zakładam) stringiem. Wyświetlałeś jedno i drugie? A po drugie do porównania nie służy AND tylko ==, względnie ===. Jak powinna wyglądać ta funkcja?

  1. function UsunUsers($Linijka) {
  2.  
  3. $dane = file('users.ini');
  4.  
  5. foreach ($dane as $key => $value) {
  6.  
  7. // dla pewności wyświetl oba porównywane stringi!!!
  8. var_dump($value);
  9. echo ' ?= ';
  10. var_dump($Linijka);
  11.  
  12. if ($value == $Linijka) {
  13. $dane[$key] = '';
  14. unset($dane[$key]);
  15. }
  16.  
  17. }
  18.  
  19. // teraz możesz zapisać wynik do pliku
  20. file_put_contents($Plik, $dane);
  21. }


Tak na marginesie, nie przesadzasz z tymi zmiennymi globalnymi?

Zbudowanie ergonomicznej i wygodnej bazy danych nie wymaga znajomości PHP, wystarczy troszkę logiki.
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.