Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]EDYTOR PLIKOW TXT
Forum PHP.pl > Forum > Przedszkole
marcio
Witam mam takie male pytanie skoro na opcjach plikowych zabardzo sie nie znam chce napisac taki maly edytor jednak mam problem a wiec robie petle while ktore wczytuje wszystkie pliki i przy kazdym pliku robie link "edytuj" chodzi o to ze jak skrypt ma wiedziec o jaki plik chodzi??
  1. <?php
  2. $katalog = '/var/www/kat/';
  3. $kat = opendir($katalog);
  4. while($plik = readdir($kat)) {
  5. echo('<li>'.$plik.'</li><a href="?action=edytuj">edytuj</a>');
  6. }
  7. closedir($kat);
  8. ?>

Mniej wiecej o cos takiego potem robie switch dla action=edytuj jednak wiem jak wczytac zawartosc pliku to textarea lecz czy robvia tak jak mowie skrypt wie o jaki plik chodzi.Pytam bo robiac to na bazie jest id posta i wtedy daje sie go w get i nie problemu jak tu to rozwiazac??
webdice
  1. <?php
  2. $katalog = '/var/www/kat/';
  3. $kat = opendir($katalog);
  4. while($plik = readdir($kat)) {
  5. echo('<li>'.$plik.'</li><a href="?action=edytuj&file=' . $plik . '">edytuj</a>');
  6. }
  7. closedir($kat);
  8. ?>


EDIT: ~phpion po co śmiecić w adresie? Katalog i tak jest stały więc przy otwieraniu pliku można dodać ścieżkę do katalogu.
phpion
Musisz przekazać w linku ścieżkę do pliku:
  1. <?php
  2. echo('<li>'.$plik.'</li><a href="?action=edytuj&plik='.$katalog.$plik.'">edytuj</a>');
  3. ?>

Zabezpiecz to sobie jakoś żeby nie można było edytować wszystkich plików winksmiley.jpg
marcio
Potem bede zabiepieczal teraz tylko tak sobie to robie smile.gif dzieki

P.S nie usuwajcie zaraz bedzie nastepne pytanko

EDTI juz mam smile.gif

  1. <?php
  2. echo('<html>
  3. <head><meta http-equiv="content-type" charset="utf-8" /></head>
  4. <title>EdYtOr bY MARCIO</title>
  5. <body>
  6. <center><h1>EDYTOR PLIKOW TXT.</h1></center>
  7. ');
  8.  
  9. $action = $_GET['action'];
  10. switch($action) {
  11.  
  12. case 'edytuj':
  13.  
  14. global $plik;
  15. global $katalog;
  16.  
  17. $wp = fopen($katalog.$plik, 'r');
  18. $zawartosc = fread($wp, filesize($katalog.$plik));
  19. fclose($wp);
  20. echo('<html>
  21. <head><meta http-equiv="content-type" charset="utf-8" /></head>
  22. <title>EdYtOr bY MARCIO</title>
  23. <body>
  24. <form method="post">
  25. <table align="center">
  26. <tr><td>
  27. <textarea name="message" rows="3" cols="70" style="background-color:#000000; color:#CCCCCC";>'.stripslashes($zawartosc).'</textarea></td></tr>
  28. <tr>
  29. <td align="center" valign="top"><input type="submit" value="Aktualizuj" /></td></tr>
  30. </table>
  31. ');
  32. if(!empty($_POST['message'])) {
  33. $fp = fopen($katalog.$plik, 'ab');
  34. fwrite($fp, $_POST['message']);
  35. fclose($fp);
  36. echo('<script>alert("Dodano");</script>');
  37. }
  38. else echo('<script>alert("Blad");</script>');
  39. break;
  40. }
  41.  
  42. $katalog = '/var/www/kat/';
  43. $kat = opendir($katalog);
  44. while($plik = readdir($kat)) {
  45. echo('<li>'.$plik.'|<a href="?action=edytuj&&plik='.$katalog.$plik.'">edytuj</a></li>');
  46. }
  47. closedir($kat);
  48. echo('</body></html>');
  49. ?>

Nie wiem jaki resource mam dac kombinuje juz 30min i sie pogubilem smile.gif mam takie blad
Cytat
Warning: fread(): supplied argument is not a valid stream resource in /var/www/edytor.php on line 18

Warning: fclose(): supplied argument is not a valid stream resource in /var/www/edytor.php on line 19
Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/edytor.php on line 34

Warning: fclose(): supplied argument is not a valid stream resource in /var/www/edytor.php on line 35

Zly uchwyt pliku to jaki mam dac??
John
  1. <?php
  2. $wp = fopen($katalog.$plik, 'r');
  3. ?>

czy zmienna katalog zawiera separator ścieżki ( np. / ) ?

ja bym proponował
  1. <?php
  2. $wp = fopen($katalog.DIRECTORY_SEPARATOR.$plik, 'r');
  3. ?>
marcio
EDIT:Nowy kod == nowe problemy smile.gif
Ogolnie to mi opornie idzie z tymi plikami wiec prosze o pomoc po pierwsze wiem ze napewno daje zly uchwyt pliku do fopen,fwrite etc... poniewaz widac bledy ale sam juz nie wiem co mam dac mam nadzieje ze ktos pomoze bo pliki to nie moja mocna strona w php

P.S do tego nie wiem czemu nie moge wykonwac funckji chmod z tego co widze po innych bledach w kodzie to chodzi o to ze przekazuje do wszystkich argumentow tylko katalog tak jakby zmienna $plik by byla pusta ale dlaczego daje global $plik; a zmnienna przeciez ma przypisana wartosc??
  1. <?php
  2. echo('<html>
  3. <head><meta http-equiv="content-type" charset="utf-8" /></head>
  4. <title>EdYtOr bY MARCIO</title>
  5. <body>
  6. <center><h1>EDYTOR PLIKOW TXT.</h1></center>
  7. ');
  8.  
  9. $action = $_GET['action'];
  10. switch($action) {
  11.  
  12. case 'edit':
  13.  
  14. global $plik;
  15.  
  16. if(is_readable($plik)) {
  17.  
  18. $wp = fopen("/var/www/kat/".$plik, 'r');
  19.  
  20. while(!feof($wp)) 
  21. $zawartosc = fgets($wp, 1024);
  22. fclose($wp);
  23. echo('<html>
  24. <head><meta http-equiv="content-type" charset="utf-8" /></head>
  25. <title>EdYtOr bY MARCIO</title>
  26. <body>
  27. <form method="post" action="?action=edit&file='.$_GET['plik'].'">
  28. <table align="center">
  29. <tr><td>
  30. <textarea name="message" rows="10" cols="70" style="background-color:#000000; color:#CCCCCC";>'.$zawartosc.'</textarea></td></tr>
  31. <tr>
  32. <td align="center" valign="top"><input type="submit" value="Aktualizuj" /></td></tr>
  33. </table>
  34. </form>
  35. ');
  36. }
  37.  
  38. if(!empty($_POST['message']) && is_writable($plik)) {
  39.  
  40.  $fp = fopen("/home/marcio/kat/".$plik, 'w');
  41. fwrite($fp, $_POST['message']);
  42.  fclose($fp);
  43.  echo('<script>alert("Dodano");</script>');
  44. }
  45. else {
  46.  
  47. if(chmod("/var/www/kat/".$plik, 0777)) {
  48.  $fp = fopen("/var/www/kat/".$plik, 'w');
  49. fwrite($fp, $_POST['message']);
  50.  fclose($fp);
  51. echo('<script>alert("Dodano");</script>');
  52.  }
  53. }
  54. break;
  55.  
  56. case 'delete':
  57.  
  58. if(is_writable($plik)) {
  59.  if(unlink("/var/www/kat/".$plik)) 
  60. echo('<script>alert("Usunieto plik!!");</script>');
  61. }
  62. else if(is_writable($plik) && chmod("/home/marcio/kat/".$plik, 0777)) {
  63.  if(unlink("/var/www/kat/".$plik)) 
  64. echo('<script>alert("Usunieto plik!!");</script>');
  65. }
  66. break;
  67. }
  68.  
  69. $katalog = '/var/www/kat/';
  70. $kat = opendir($katalog);
  71.  
  72. while($plik = readdir($kat)) {
  73.  
  74. $file = $_GET['file'];
  75. $plik = basename($katalog.$plik);
  76. echo('<li>'.$plik.'|<a href="?action=edit&file='.$plik.'">edytuj</a>|<a href="?action=delete&file='.$plik.'">usun</a></li>
  77. <table>
  78. <tr><td>
  79. Rozmiar: '.@filesize($plik).'B<Br>
  80. Typ pliku: '.@filetype($plik).'<Br>
  81. Chmod: '.decoct(@fileperms($plik)).'<Br>
  82. Do odczytu: '.(@is_readable($plik)'tak' : 'nie').'<Br>
  83. Do zapisu: '.(@is_writable($plik)'tak' : 'nie').'<Br>
  84. </td></tr>
  85. </table>
  86. ');
  87. }
  88. closedir($kat);
  89. echo('</body></html>');
  90. ?>

Po pierwsze nie ma zawartosci pliku w textarea po drugie sa takie bledy przy dodawaniu:
Cytat
Warning: fopen(/var/www/kat/) [function.fopen]: failed to open stream: Is a directory in /var/www/edytor.php on line 33

Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/edytor.php on line 34

Warning: fclose(): supplied argument is not a valid stream resource in /var/www/edytor.php on line 35
Warning: chmod() [function.chmod]: Operation not permitted in /var/www/edytor.php on line 47

Znowu cos zle z uchwytami i ze argument w fopen jest katalogiem czy cos i nie wiem jak zawsze co jest zle pytam bo na plikach sie tak dobrze nie znam

P.S tylko nie krzyczcie po mnie smile.gif

To jak??Dalem nawet chmod 77 na katalog i dalej nic
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.