Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jak zrobić panel do edycji pliku
Forum PHP.pl > Forum > Przedszkole
gg1985
Witam

Czy ktoś zna może jakiś szablon do edycji zawartości pliku ? Chodzi mi o to, żeby plik na serwerze był wczytywany, jego zawartość edytowana przeze mnie i zapisywana, ewentualnie prosiłbym o jakieś pomocne sugestie.

Pozdrawiam
dadexix
file_get_contents" title="Zobacz w manualu PHP" target="_manual
file_put_contents" title="Zobacz w manualu PHP" target="_manual
Coś więcej trzeba? najpierw pierwszą funkcją otwierasz plik, potem wysyłasz w textarea, i wysyłasz do serwera oraz zapisujesz za pomocą drugiej funkcji

może się też przydać Ci chmod" title="Zobacz w manualu PHP" target="_manual
barthpl
No i warto jeszcze rozpatrzeć blokowanie pliku. Znaczy się aby w danym czasie mógł być edytowany tylko przez jedną osobę. Swoją drogą to właśnie się zastanawiam jak to najbardziej efektywnie wykonać.
dadexix
hmmm może by zaznaczać że plik właśnie edytowany?
  1. <?php
  2. $prems = substr(sprintf('%o', fileperms('/etc/passwd')), -4);
  3. if($prems == "0000"){
  4. echo "Plik właśnie edytowany";
  5. }else{
  6. $a = file_get_contents([...]);
  7. chmod([..],0000);
  8. }
  9. NA ZAPIS PLIKU:
  10. chmod([..],0777);
  11. ?>


To taki przykłąd, poprostu plik który nie ma praw do odczytu,zapisu,wykonywania przez nikogo to dla skryptu plik edytowany:)
gg1985
Dzięki wszystkim, zaraz biorę się do roboty.
barthpl
No tak to jest fajny pomysł... ...tylko może zamiast całkowitego blokowania zastanowiłbym się nad pozostawieniem dostęp do odczytu. W końcu w trakcie edycji przez admina może jakiś użytkownik będzie miał ochotę przejrzeć "ostatnią wersję".
golaod
http://pl.php.net/manual/pl/function.chmod.php
Ktoś już to wcześniej podawał. Jest tam all opisane.
Lub prościej. Bez chmod'ów http://pl.php.net/manual/pl/function.flock.php
gg1985
Witam ponownie

Zacząłem coś tam pisać i utkwiłem na momencie, gdy w textarea już zedytowałem plik i teraz chciałbym go nadpisać po kliknięciu w "Zapisz". Do tej pory napisałem tyle:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="pl" xml:lang="pl">
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
  5. <title>Edytor plików</title>
  6. <link href="style.css" type="text/css" rel="stylesheet" />
  7. <link rel="shortcut icon" href="ikona.jpg" />
  8. </head>
  9. <body>
  10. <div id="tcent">
  11. <?php
  12. if (count($_POST))
  13. {
  14.       $result .= $_POST['nazwa_pliku'];
  15.           if(isset($_POST['file'])) file_put_contents($result,$_POST['file']);
  16.           $file = file_get_contents($result);
  17.           echo '<form method="POST"><textarea class="area" style="width: 800px; height: 600px; padding: 5px" name="file">'.$file.'</textarea><input class="area" type="submit" value="Zapisz" /></form>';
  18. }
  19. else
  20. {
  21. ?>
  22. <form action="?" method="post">
  23. <p>
  24. Nazwa pliku do edycji:
  25. <br>
  26. <input class="area" type="text" name="nazwa_pliku" maxlength="40" />
  27. </p>
  28. <p>
  29. <input class="area" type="submit" value="wyślij" />
  30. </p>
  31. </form>
  32. <?php
  33. }
  34. ?>
  35. </div>
  36. </body>
  37. </html>
erix
Cytat
gdy w textarea już zedytowałem plik i teraz chciałbym go nadpisać po kliknięciu w "Zapisz".

Przecież file_put_contents" title="Zobacz w manualu PHP" target="_manual nadpisuje zawartość istniejącego pliku...
q3d
Gdy klikniesz zapisz skrypt nie przesyła już zmiennej $_POST['nazwa_pliku'], która próbujesz przypisać do zmiennej $result.
Jedyne co przesyłasz to $_POST['file']. Dlatego w zmiennej $result nie masz nazwy pliku i pierwszy argument funkcji file_put_contents jest błedny.
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.