Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wływ zjawisk atmosferycznych na działanie funkji fwrite()
Forum PHP.pl > Forum > PHP
Boski
A teraz zgodnie z tematem kiedy zaczął padać śnieg skrypt przestał działać jak to sie zwykle w przyrodzie dzieje. Ale co zrobić żeby zaczął. Skrypt działał 2 miesiąc bezbłędnie. A teraz kiełbasa.

  1. <?php
  2. if ($_GET['funkcja'] == "edytuj"){
  3.  
  4. // zrzut do zmiennej bez usunięcia tagów html ponieważ właśnie kod html ma to zapa
    sywać
  5.  
  6. $text = $_POST['text'];
  7.  
  8. //usunięcie backslash'y
  9.  
  10. $backslfile = fopen("backslash.txt","r");
  11. $replace = fread($backslfile, filesize("backslash.txt"));
  12. fclose($backslfile);
  13. $text = str_replace($replace,"",$text);
  14.  
  15. //usunięcie ampersandów 
  16.  
  17. $text = str_replace("&","&amp;",$text);
  18.  
  19. //ustawienie ścieżki dostępowej pliku
  20.  
  21. $plik = "../page/".$_GET['page'].".php";
  22.  
  23. //Warunek plik istnieje
  24.  
  25. if (file_exists($plik)) {
  26.  
  27. //zapis do pliku
  28.  
  29. $file = fopen($plik,"w");
  30.  
  31. //Warunek zapisano
  32.  
  33. if (fwrite($file,$text) == FALSE) {
  34. echo "<a href='http://25.zhr.pl/admin/index.php?page=".$_GET['page']."'>Nie mogę zapisać do pliku</a>";
  35. fclose($file);
  36. }
  37.  
  38. // warunek nie zapisano
  39.  
  40. else{ 
  41. fclose($file);
  42. $_GET['zapis'] = 1;
  43. }
  44. }
  45.  
  46. // warunek lik nie istnieje
  47.  
  48. else{
  49. echo "<a href='http://25.zhr.pl/admin/index.php?page=".$_GET['page']."'>Błąd zapisu pliku. Plik nie istnieje.</a>"; 
  50. }
  51. }
  52. ?>

Dziwne kiedyś działał teraz nie. Nie zwraca błędu. A plik otwiera kasuje jego zawartość ( parametr "w") jednak nic w nim nie zapisuje. Z góry dziękuje za wyjaśnienie tego zjawiska.

P.S. chmod dla pliku jest "777"
b_chmura
  1. <?php
  2. if ($_GET['funkcja'] == "edytuj")
  3. {
  4. $text = $_POST['text'];
  5. /////////////////////////////////////////////////////////////////
  6. $backslfile = fopen("backslash.txt","r"); //
  7. $replace = fread($backslfile, filesize("backslash.txt")); // co to robi?
  8. fclose($backslfile);  //
  9. $text = str_replace($replace, "",$text);  //
  10. /////////////////////////////////////////////////////////////////
  11. $text = str_replace("&","&amp;",$text);
  12. $plik = "../page/".$_GET['page'].".php";
  13.  
  14. if(file_exists($plik))
  15. {
  16. $file = fopen($plik,"w");
  17. if(fwrite($file,$text) === FALSE) //tu powinny być 3 znaki = (tak jak jest teraz)
  18. {
  19. fclose($file);
  20. exit("<a href='http://25.zhr.pl/admin/index.php?page=".$_GET['page']."'>Nie mogę zapisać do pliku</a>");
  21. }
  22. else
  23. { 
  24. fclose($file);
  25. $_GET['zapis'] = 1;
  26. }
  27. }
  28. else
  29. {
  30. exit("<a href='http://25.zhr.pl/admin/index.php?page=".$_GET['page']."'>Błąd zapisu pliku. Plik nie istnieje.</a>"); 
  31. }
  32. }
  33. ?>
Boski
ponieważ nie mogę wstawić backslasha do zmiennej ponieważ cudzysłów który się za nim znajduje zostanie potraktowany jak string i error parsera Unexpected T_ String exected " or ;

  1. <?php
  2. $zmienna = "\";
  3. ?>


dlatego stworzyłem plik testowy o długości 1 znaku który zawiera backslasha winksmiley.jpg
po odczytaniu tego pliku mogę wszystkie backslashe ze zmiennej zamienić na pusty string

  1. <?php
  2. $backslfile = fopen("backslash.txt","r");
  3. $replace = fread($backslfile, filesize("backslash.txt"));
  4. fclose($backslfile);
  5. $text = str_replace($replace,"",$text);
  6. ?>
b_chmura
Cytat(Boski @ 22.12.2007, 13:56:21 ) *
ponieważ nie mogę wstawić backslasha do zmiennej ponieważ cudzysłów który się za nim znajduje zostanie potraktowany jak string i error parsera Unexpected T_ String exected " or ;

  1. <?php
  2. $zmienna = "\";
  3. ?>


dlatego stworzyłem plik testowy o długości 1 znaku który zawiera backslasha winksmiley.jpg
po odczytaniu tego pliku mogę wszystkie backslashe ze zmiennej zamienić na pusty string

  1. <?php
  2. $backslfile = fopen("backslash.txt","r");
  3. $replace = fread($backslfile, filesize("backslash.txt"));
  4. fclose($backslfile);
  5. $text = str_replace($replace,"",$text);
  6. ?>



poczytaj o addslashes" title="Zobacz w manualu PHP" target="_manual oraz stripslashes" title="Zobacz w manualu PHP" target="_manual
Boski
Fakt. Często to stosuje ale że robiłem to dawno, szybko , i działo to tego zapomniałem o stripslashes(). Lecz nadal nie zapisuje poprawnie do pliku.
b_chmura
  1. <?php
  2. if ($_GET['funkcja'] == "edytuj")
  3. {
  4. $text = str_replace("&","&amp;",stripslashes($_POST['text']));
  5. $plik = "../page/".$_GET['page'].".php";
  6.  
  7. if(file_exists($plik))
  8. {
  9. if(!file_put_contents($plik, $text))
  10. {
  11. exit("<a href='?page=".$_GET['page']."'>Nie mogę zapisać do pliku</a>");
  12. }
  13. else
  14. { 
  15. $_GET['zapis'] = 1;
  16. }
  17. }
  18. else
  19. {
  20. exit("<a href='?page=".$_GET['page']."'>Błąd zapisu pliku. Plik nie istnieje.</a>"); 
  21. }
  22. }
  23. ?>
Boski
Sprytne co nie zmienia faktu ze ten sam efekt co na poczatku.smile.gif
b_chmura
  1. <?php
  2. echo $_GET['funkcja'];//sprawdz czy faktycznie $_GET['funkcja'] równa sie "edytuj"
  3.  
  4. if ($_GET['funkcja'] == "edytuj") 
  5. {
  6. $text = str_replace("&","&amp;",stripslashes($_POST['text']));
  7. $plik = "../page/".$_GET['page'].".php";
  8.  
  9. if(file_exists($plik))
  10. {
  11. if (is_writable($plik)) //dddaj taki warunek
  12. { //
  13. if(!file_put_contents($plik, $text))
  14. {
  15. exit("<a href='?page=".$_GET['page']."'>Nie mogę zapisać do pliku</a>");
  16. }
  17. else
  18. { 
  19. $_GET['zapis'] = 1;
  20. }
  21. } //
  22. else //
  23. { //
  24. exit('Błąd, plik nie jest zapisywalny'); //
  25. } //
  26. }
  27. else
  28. {
  29. exit("<a href='?page=".$_GET['page']."'>Błąd zapisu pliku. Plik nie istnieje.</a>"); 
  30. }
  31. }
  32. ?>
Boski
Funkcja równa się edytuj a plik dalej otwiera kasując zawartość pliku po czym nic w nim nie zapisuje.

Dodam tylko że:
  1. <?php
  2. $text = str_replace("&","&amp;",stripslashes($_POST['text']));
  3. echo $text ;
  4. ?>


poprawnie wyświetla zawartość zmiennej
phpion
Wyświetl sobie zawartość $_POST['text'] i zobacz co Ci wypisze.
b_chmura
widocznie zmienna $_POST['text'] jest pusta
Boski
no nie. Wyświetla dobrze całą treść zmiennej z wszystkimi wprowadzonymi zmianami...
b_chmura
w takim wypadku wina leży po stronie serwera, sprawdź czy masz na nim jeszcze miejsce ewentualnie skontaktuj sie z administratorem.
Boski
miejsce powinno być głowy nie dam spoko dzięki bo już myślałem że to mi coś umysł zamroczyło czy porostu coś sie zachrzaniło:)
phpion
Zmień:
  1. <?php
  2. if(!file_put_contents($plik, $text))
  3. ?>

na:
  1. <?php
  2. if(!file_put_contents($plik, 'nanana'))
  3. ?>

Może później w kodzie czyścisz zawartość pliku?
Boski
wtedy poprawnie zapisuje "nanaanan"
b_chmura
Cytat(Boski @ 22.12.2007, 16:07:52 ) *
wtedy poprawnie zapisuje "nanaanan"


to upewnij się czy masz coś w $_POST['text']'

przy
  1. <?php
  2. $_GET['zapis'] = 1;
  3. ?>

dopisz
  1. <?php
  2. echo $_POST['text'];
  3. ?>
Boski
pisałem wcześniej niezależnie gdzie zmienną wyświetla dobrze...
b_chmura
w takim razie sprawdź jeszcze raz czy manualnie czy zapisze np"
Kod
text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text
Boski
sprawą zajął się administrator serwera więc spoko damy rade
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.