[PHP]Zapisywanie do pliku


(Michalw148) #1

Witam!

Mam problem dotyczący zapisu danych do nowego pliku w PHP. Otóż chcę żeby na mojej stronie było miejsce gdzie użytkownik wpisuje tytuł , treść i klikając zapisz tworzy się plik .txt na serwerze. Nazwą pliku będzie to co użytkownik podał w polu nazwa a w pliku będzie się znajdowała zawartość pola treść. Najlepiej gdyby pod formularzem pojawiał się link do tego pliku(do pobrania). Czyli np. mój plik to test.txt i pod formularzem w jakimś polu pojawia się odnośnik np. http://www.moja-strona.pl/pliki_txt/test.txt . Może to być oczywiście jakiś inny link. System może generować dowolny link np nie musi to być http://www.moja-strona.pl/pliki_txt/test.txt tylko jakieś http://www.moja-strona.pl/djhi325/3532ifhdui/5752hfusd. Tak jak na przykład na rapidshare. Z góry bardzo dziękuje

:smiley:


(Drobok) #2

A co ty kufa chcesz od nas ? Mamy za ciebie napisać skrypt a ty będziesz siedział na tyłku i żerował ...


(kostek135) #3

http://www.kurshtml.edu.pl/html/form,html.html

http://www.kurshtml.edu.pl/html/input,html.html

http://www.kurshtml.edu.pl/html/textarea,html.html

przyda się do sprawdzenia, żeby ktoś komuś pliku nie nadpisał

http://php.net/manual/en/function.file-exists.php

example 1 jak zapisywać:

http://pl2.php.net/manual/en/function.fwrite.php

ewentualnie jakbyś chciał jakieś usunięcie pliku (np. po pobraniu lub kliknięciu w link plik się usuwa) to:

http://php.net/manual/en/function.unlink.php


(Michalw148) #4

Skleciłem coś takiego. Mam tylko problem z hiperłączem. Czy da się uzupełnić hiperłącze zmienną?

Np. tak

Jeżeli chcesz pobrać twój plik kliknij tutaj

[/code]




Bo mi to nie działa. Pomóżcie proszę. Drugie to czy da się żeby po kliknięciu w ten link przeglądarak przeszła do pobierania tego pliku z hiperłącza. Jak tak to jaki skrypt napisać? Z góry dziękuje. :-D 







Przy okazji droboku - jak ci się nie podoba to siedź lepiej za piecem cicho.



Kostek135 - dziękuje bardzo za pomoc.

[code] <?php if(!isset($_POST['name']) and !isset($_POST['text'])){ ?> Nazwa twojego pliku Zawartość twojego pliku <?php }else{ $dir=($_POST['name']); $text=($_POST['text']); if(file_exists("db/txt_base/$dir.php")){ die('Plik o takiej nazwie już istnieje.'); } $handle=fopen("db/txt_base/$dir.txt",'w+'); fwrite($handle,"$text"); fclose($handle); echo 'Twój plik został pomyślnie utworzony.Jeżeli chcesz pobrać twój plik kliknij tutaj'; } ?>


(Damgora) #5

po poprawieniu paru drobnych błędów kod działa:

<?php

(kostek135) #6

Przytoczę mojego posta z innego tematu jeśli chodzi o bezpieczeństwo.

Odnośnie cofania dodam tylko, np. wyrażeniami regularnymi albo sprawdzanie czy jest w naszej bazie danych taka nazwa (o ile trzymasz informacje o plikach w bazie)


(Michalw148) #7

Dziękuje bardzo za pomoc.

Mam jeszcze jeden problem. Mianowicie nie wiem co mi nie chce działać w tym kodzie:

<?php

	 if (!$_POST["name"]) {

		echo'

Podaj nazwę twojego pliku który chcesz wczytać(bez rozszerzenia):








 

		';

	}

	else{



	$dir= ($_POST["name"]);


    $fileName = 'db/txt_base/$dir.txt';

    $file = fopen($fileName, 'r');

    $fileContent = fread($file, filesize($fileName));

    fclose($file);

    echo('' . $fileContent . '');

	}



    ?>

(kostek135) #8
$fileName = 'db/txt_base/$dir.txt';

Apostrofy usuwają znaczenie, jeśli $dir to zmienna użyj cudzysłowów. A jeśli nie w tym rzecz to powiedz dokładniej co nie chce działać, bo kod jest poprawny z punktu syntaktycznego.


(Michalw148) #9

Dzięki za rade i pomoc. Działa. A czy da się coś zrobić żeby skrypt ten wyświetlał polskie znaki. Bo w tym polu są np krzaczki zamiast ó. :smiley:


(kostek135) #10

Musisz ustawić takie samo kodowanie pliku (w edytorze) co w znaczniku meta, np. UTF-8 albo ISO 8859-2. Ważne, aby były one ze sobą zgodne.


(Michalw148) #11

A da się zrobić żeby zapisywało się z takim kodowaniem za pośrednictwem

? Bo taki problem występuje plikami zapisynwanymi przez ten skrypt powyżej opublikowany. :-D