Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Dodawanie danych do pliku na innym serwerze
Forum PHP.pl > Forum > Przedszkole
DiKey
Witam, wszystkich, trochę głupio, że w moim pierwszym poście proszę o pomoc, ale na usprawiedliwienie powiem, że sporo z tego forum korzystałem jako gość smile.gif
W skrócie problem wygląda tak: mam skrypt, który przechwytuje dane z formularza i zapisuje je do pliku na lokalnym serwerze, a chcę żeby robił to na innym serwerze FTP.

O to co mam:

  1. <?php
  2.  
  3. $MESSAGE_FILE = "plik.ini";
  4. // En: result file
  5. // Fr: fichier resultat.
  6.  
  7.  
  8. $DEFAULT_EXIT_PAGE = "strona wyjsciowa";
  9. // En: exit page.
  10. // Fr: page de sortie.
  11.  
  12. // End Necessary Variables section
  13. /******************************************************************************/
  14.  
  15. function error($error_message) {
  16. echo $error_message."<BR>";
  17. }
  18.  
  19. function check_referer () {
  20. global $REFERERS, $HTTP_REFERER;
  21. if ($HTTP_REFERER != "")
  22. while (list($val, $ref) = each($REFERERS))
  23. if (preg_match("/^http:\/\/$ref/", $HTTP_REFERER))
  24. return;
  25. error("Unauthorized access to: $HTTP_REFERER");
  26. }
  27.  
  28. #check_referer();
  29.  
  30. $message = "";
  31.  
  32. while (list($key, $val) = each($HTTP_POST_VARS)) {
  33. $message .= ' "'."$val".'"';
  34. }
  35.  
  36. $message = preg_replace("/\n\r*/", "<BR>", $message);
  37.  
  38.  
  39. $file_arry = file($MESSAGE_FILE); //or error("Can not open \$MESSAGE_FILE");
  40. $file = join ("", $file_arry);
  41. $message .= "\n".$file;
  42.  
  43. $fp = fopen("$MESSAGE_FILE", "w"); // error("Can not write \$MESSAGE_FILE");
  44. flock($fp, 1);
  45. fputs($fp, $message);
  46. flock($fp, 3);
  47. fclose($fp);
  48.  
  49.  
  50. if(! $exit_page)
  51. $exit_page = $DEFAULT_EXIT_PAGE;
  52.  
  53. Header("Location: ".$exit_page);
  54. // Exit -> $exit_page
  55.  
  56. ?>
  57.  


Docelowy serwer ftp nie jest publiczny, więc trzeba się jakoś przez ten skrypt zalogować... Oczywiście oba serwery są moje.
Szukałem w google, na forum.php.pl itp. ale jedyne co znalazłem to ten skrypt wyżej i taki do pobrania dowolnego pliku:

  1. <?php
  2. function getFile($server, $dir, $file)
  3. {
  4. if(!$id = ftp_connect($server)){
  5. echo("Błąd przy próbie połączenia z serwerem $server...");
  6. }
  7. if(!ftp_login($id, "uzytkownik", "haslo")){
  8. echo("Błąd przy próbie zalogowania...");
  9. }
  10. echo("Połączenie z serwerem ustanowione...");
  11.  
  12. if(!@ftp_get ($id, $file, $dir."//".$file, FTP_BINARY)){
  13. echo("Błąd przy próbie pobrania pliku $file...");
  14. }
  15. echo("Plik $file został pobrany...");
  16.  
  17. ftp_close($id);
  18. echo("Koniec połączenia...");
  19. }
  20. getFile("adres serwera", "katalog", "nazwa pliku.rozszerzenie");
  21. ?>


Ale nie bardzo wiem jak te dwa skrypty połączyć. Dziękuje za każdą pomoc.
hind
ten drugi skrypt pobiera dane z serwera ftp
jak chcesz wgrywać (w prosty sposócool.gif pliki na ftp to można to zrobić przez file_put_contents
  1. file_put_contents('ftp://login:haslo@host/adres/do/pliku.txt', 'dane'); // przyjmuje dodatkowo takie informacje jak context z timeoutem
DiKey
Hmm, ten skrypt domyślnie dopisuje dane na początek tego pliku tekstowego. I tak ma właśnie być, jakby wgrywał cały plik na ftp to zapewne by podmienił oryginał.

//Edit

Zrobiłem tak, że skrypt:
1. Pobiera plik z ftp
2. Edytuje go
3. Wysyła z powrotem na serwer

Lecz nie wydaje mi się żeby była to najbardziej optymalna wersja ;p
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.