Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wysłanie pliku PDF/ZIP przez formularz WWW
Forum PHP.pl > Forum > Przedszkole
koperkuba
Potrzebuje do mojej strony dodać funkcjonalność:

Użytkownik loguje się za pomocą login/pass i wyświetla mu się formularz umożliwiający dodanie pliku .pdf lub .zip. Plik ma być zapisany w odpowiednim folderze na komputerze zdalnym na którym jest cała strona. Uprawnienia do tego folderu są ustawione na 775. Jak w prosty sposób zrobić przesyłanie, bo z logowaniem itp sobie dałem radę?
nospor
No ale czego nie wiesz? Nie wiesz jak się wgrywa pliki? Proszę bardzo:
http://uk3.php.net/manual/pl/features.file...post-method.php
Dokumentacja oraz przykłady
koperkuba
Zrobiłem podobnie jak manualu, teraz mam problem, bo nie wiem jak zmienić "w locie" nazwę przesyłanego pliku.
Np wpisujący wrzuca jakiś plik o nazwie x.pdf a chciałbym zmienić jego pliku na y.pdf
nospor
Zrobiłeś dokładnie jak w manualu.... super. Szkoda tylko ze nie myślałeś nad tymi paroma linijkami co skopiowałeś

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
Przecież o to przenosi plik tam gdzie chcesz i nazywa go tak jak chcesz....

if (move_uploaded_file($_FILES['userfile']['tmp_name'], 'tam/gdzie/chcesz/o_nazwie_takiej_jak_chcesz'))
Korzystając z manuala masz też patrzeć co robią te dwie funkcję na skrzyż których używasz a nie tylko kopiować...
koperkuba
Zrobiłem, i działa ale tylko na localhost. Jeżeli chce zrobić to na serwerze gdzie mam strony występuje błąd z uprawnieniami do tworzenia plików.
Czy w takim razie nie lepiej byłoby użyć: http://php.net/manual/pl/function.ftp-put.php ?
Czy bezpiecznie jest zamieszczać na serwerze plik php z loginem i hasłem ftp?
nospor
Poprostu nadaj właściwe prawa na katalog, do którego wrzucasz pliki.
koperkuba
Podejrzewam, ze właściwe prawa na katalog to nie będą 777:P
nospor
To może podaj DOKŁADNIE błąd jaki dostajesz a nie się tu wymądrzasz...
koperkuba
failed to open stream: Permission denied in /www/site/zp.php on line 71
Jeśli ustawie prawa 666 to działa. Ale nie wiem czy to dobre rozwiązanie...
nospor
A co masz w linii nr 71? Pokaz caly kod z zaznaczeniem która to linia.

ps: blad raczej wskazuje na brak praw. Może źle nadajesz te 777?

777 nie dziala a 666 dziala? Coś tu szatan miesza.... wink.gif
666 też może być.
koperkuba
777 działa. 666 też - bo musi. Tylko czy 666 to jest dobre ustawienie, tzn. czy na tyle bezpieczne żebym mógł sobie to tak zostawić?smile.gif
nospor
A widzisz, to źle zrozumiałem twoj post:
Cytat
Podejrzewam, ze właściwe prawa na katalog to nie będą 777

smile.gif

No to skoro działa to się ciesz a nie pościsz i pościsz.... post jest dobry w wielki post a nie na codzień wink.gif

Zostaw te 666
abort
Ja tylko dopowiem, że jeśli chodzi o uniksy (Linux też) i prawa do katalogów, to prawa dostępu zapisujemy w trzech liczbach ósemkowych:
- pierwsza sekcja odpowiada za prawa dla użytkownika/właściciela pliku
- druga sekcj odpowiada za wszystkich członków grupy, do której należy plik
- trzecia sekcja odpowiada za, ogólnie nazywając, "wszystkich pozostałych".

I tak, jeśli chodzi o prawa dostępu do katalogów, to zasady są takie:
- "r" pozwala na czytanie katalogu
- "w" pozwala na zapisanie do katalogu
- "x" pozwala na WEJŚCIE do katalogu (i wykonywanie w nim operacji zgodnie z prawami j/w)

Odnośnie plików, to:
- "r" pozwala na odczyt
- "w" pozwala na zapis
- "x" pozwala na uruchomienie programu (w odróżnieniu od Windows, to atrybut "x", a nie rozszerzenie decyduje o tym, czy dany plik można uruchomić)

samo "x" na katalogu pozwala nam na robienie wszystkiego w trybie "READ-ONLY", chyba że prawa dostępu do pliku nam to ograniczają
"w" na katalogu pozwala nam na SKASOWANIE PLIKU nawet wtedy, gdy nie jesteśmy jego właścicielem (uwaga: czasami do polecenia "rm" należy dodać opcję "-f" - force). Wynika to z faktu, że skasowanie pliku to tak naprawdę skasowanie wpisu w strukturze katalogu odnośnie istnienia pliku.

Można sobie wyobrazić sytuację, kiedy na katalogu będziemy mieli prawo "x" (i tylko "x"), a na pliku prawa "rw" - tu jest (dla nieobznajomionych) ciekawa rzecz: pliku nie możemy skasować (nie mamy praw zapisu do katalogu), ale... możemy go wyzerować - wszak prawo dostępu do pliku posiadamy smile.gif

Oczywiście posiadanie UID=0 (czyli praw administratora systemu) usuwa wszelkie restrykcje.

W Twoim przypadku myślę, że minimalnym wymaganiem jest, byś nadał:
- na katalog nadasz prawa "wx" dla "other" (musisz odczytać z niego zawartość i move_uploaded_file() musi umieć coś w nim zapisać)
- na pliki nadasz prawa "r"

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.