Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][HTML][PHP]Formularz + upload zdjęć
daniel55
post 20.11.2019, 13:34:16
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 20.11.2019

Ostrzeżenie: (0%)
-----


Witam wszystkich.

Planuję zrobić prostą stronę - informacja o imprezie.
Na stronie chciałbym umieścić formularz z możliwością rejestracji (kilka danych :Imię , nazwisko, nick, email, tel).
Dodatkowo chcę aby była możliwość przesłania zdjęcia - Avatar uczestnika.
Kod testuję lokalnie na xampp serwer Apache.
Na stronce wpisuję dane ,otwiera się okno uploadu, wybieram plik i klikam wyślij.
Wpisane do formularza dane tekstowe Imię i nazwisko ... wyświetlają się na stronie, natomiast mam problem z lokalizacją i zapisem zdjęcia na serwerze.
Kod php którego używam :

wysyłanie pliku :
<form enctype="multipart/form-data" action="plik.php"
method="post" >
<input type="hidden" name="MAX_FILE_SIZE" value="512000" />
<input type="file" name="obrazek" />
<input type="submit" value="wyślij" />
</form>

zapis na serwerze odebranego plku:
<?php

function zapisz_plik()
{
$lokalizacja = './temp/plik_obrazkowy.jpg';

if(is_uploaded_file($_FILES['obrazek']['tmp_name']))
{
if(!move_uploaded_file($_FILES['obrazek']['tmp_name'], $lokalizacja))
{
echo 'problem: Nie udało się skopiować pliku do katalogu.';
return false;
}
}
else
{
echo 'problem: Możliwy atak podczas przesyłania pliku.';
echo 'Plik nie został zapisany.';
return false;
}
return true;
}

?>

Plik nie zapisuje się nigdzie, nie jestem pewien czy dobrze podaję ścieżkę zapisu i drugi parametr['tmp_name'].
Kolejna kwestia, to zapis tych danych w bazie danych na serwerze i ich wyświetlenie w formie listy uczestników(Imię, nazwisko, nick) z avatarem.
Dodatkowo podczas rejestracji można by dodać pole wyboru darmowego gadżetu z pośród kilku dostępnych w formie pola wyboru "radio", info dostępne tylko dla organizatora.
Jak najprościej zrealizować taką funkcję na stronie?
Będzie to mała impreza max kilkadziesiąt osób.
Z góry dzięki .
Pozdrawiam.
Go to the top of the page
+Quote Post
dublinka
post 20.11.2019, 13:49:07
Post #2





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

Ostrzeżenie: (0%)
-----


  1. $target_path = $target_path . "/" . basename( $_FILES['uploadedfile']['name']);
  2.  
  3. if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
  4. echo "ok";
  5. } else{
  6. echo "error";
  7. }


Lokalizacja to chyba wiesz co oznacza.


  1. if(isset($_FILES["uploadedfile"]["type"]) && ($_FILES["uploadedfile"]["size"] < 5000000)){
  2. $sourcePath = $_FILES['uploadedfile']['tmp_name'];
  3. $file = $_FILES['uploadedfile']['name'];
  4. $targetPath = "/uploads/".$file;
  5. if(move_uploaded_file($sourcePath,$targetPath)){
  6. echo "plik: ".$_FILES['uploadedfile']['name']." został przeslany";
  7. }else{
  8. echo "error.";
  9. }
  10. }else{
  11. echo "Nie dodales pliku lub jest za duzy max 5mb.";
  12. }


Ten post edytował dublinka 20.11.2019, 14:01:26


--------------------
Go to the top of the page
+Quote Post
daniel55
post 21.11.2019, 16:06:35
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 20.11.2019

Ostrzeżenie: (0%)
-----


Ok.
Ogarnąłem funkcję uploadu, okazało się, że deklarowałem funkcję, natomiast już jej nie wywoływałem w kodzie.
Traktowałem deklarację jako wywołanie funkcji.
Jednak o ile podczas testów na lokalnym serwerze Apache wszystko działa Ok, to już po przeniesieniu strony na serwer .prv.pl i zmianie ścieżki zapisu pliku dostaję komunikat:
problem: Nie udało się skopiować pliku do katalogu.
Nie wiem czy to wina kodu, czy może serwer nie obsługuje funkcji PHP lub złą wersja?
Pozdrawiam.
Go to the top of the page
+Quote Post
nospor
post 21.11.2019, 16:17:33
Post #4





Grupa: Moderatorzy
Postów: 36 447
Pomógł: 6292
Dołączył: 27.12.2004




Cytat
Nie wiem czy to wina kodu, czy może serwer nie obsługuje funkcji PHP lub złą wersja?

A moze poprostu zle nadane prawa zapisu do katalogu ./temp ?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
daniel55
post 21.11.2019, 17:35:57
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 20.11.2019

Ostrzeżenie: (0%)
-----


tylko, że nie widzę na serwerze takiego katalogu
Go to the top of the page
+Quote Post
nospor
post 21.11.2019, 18:05:54
Post #6





Grupa: Moderatorzy
Postów: 36 447
Pomógł: 6292
Dołączył: 27.12.2004




to tym bardziej jak php ma tam cokolwiek wrzucic skoro go nie ma?

ps: ja mowie o tym
$lokalizacja = './temp/plik_obrazkowy.jpg';

wiec sam tworzysz lokalizacje a nie stworzyles katalogow odpowiednich? W ogole rozumiesz kod, ktory piszesz?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
daniel55
post 21.11.2019, 20:53:29
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 20.11.2019

Ostrzeżenie: (0%)
-----


Utworzyłem odpowiednie katalogi , do których odnosiła się lokalizacja i do których powinien się zapisać plik . U mnie było to $lokalizacja = './testy/grafika/obrazek.jpg.';
Nadałem prawa do zapisu i nadal występuje problem podczas próby zapisu.

Wkleiłem też do php kod:
<?php

// wyświetlanie typu pliku
echo $_FILES['obrazek']['type'];

// wyświetlanie rozmiaru
echo $_FILES['obrazek']['size'];

// wyświetlanie nazwy pliku
echo $_FILES['obrazek']['name'];

// wyświetlanie nazwy tymczasowej
echo $_FILES['obrazek']['tmp_name'];

// wyświetlanie ewentualnych błędów
echo $_FILES['obrazek']['error'];

?>

W odpowiedzi pokazuje : image/jpeg19612zdj.jpg/tmp/phpoyDuP10

Czyli z tego z rozumiem plik jest w katalogu tymczasowym na serwerze ale nie może zostać zapisany do katalogu docelowego

OK.
Już działa.
Problem polegał na tym, że do testów utworzyłem na serwerze katalog testy i tam kopiowałem pliki upload.html i upload.php.
Po wklepaniu strony xxx.prv.pl/testy/upload.html stronka uploadu się otwierała natomiast podczas zapisu pliku pomimo właściwej ścieżki dostępu i uprawnień zapisu, operacja kończyła się błędem.
Po umieszczeniu plików upload.html i upload.php do katalogu głównego i wklepaniu adresu xxx.prv.pl/upload.html, wszystko zadziałało jak należy. Można zapisywać pliki do dowolnego katalogu na serwerze, po wpisaniu odpowiedniej ścieżki w pliku upload.php.
Czy istnieje sposób aby testy robić w osobnym katalogu na serwerze? czy zawsze trzeba umieszczać pliki w katalogu głównym?
Dzięki za pomoc.
Pozdrawiam.
Go to the top of the page
+Quote Post
dublinka
post 22.11.2019, 09:24:51
Post #8





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

Ostrzeżenie: (0%)
-----


Mozesz gdzie chcesz

Cytat(daniel55 @ 20.11.2019, 12:34:16 ) *
Witam wszystkich.

Planuję zrobić prostą stronę - informacja o imprezie.
Na stronie chciałbym umieścić formularz z możliwością rejestracji (kilka danych :Imię , nazwisko, nick, email, tel).
Dodatkowo chcę aby była możliwość przesłania zdjęcia - Avatar uczestnika.

[........]

Dodatkowo podczas rejestracji można by dodać pole wyboru darmowego gadżetu z pośród kilku dostępnych w formie pola wyboru "radio", info dostępne tylko dla organizatora.
Jak najprościej zrealizować taką funkcję na stronie?
Będzie to mała impreza max kilkadziesiąt osób.
Z góry dzięki .
Pozdrawiam.



Rejestracja czy po prostu dopisywanie do bazy jak leci bo rejestracja to juz i logowanie a dopisanie tylko to wprowadzenie danych i poslanie na serwer.

1. Formularz
2. Zeby nie bylo powielan nickow i emaila zabezpiecz to sprawdzajac czy juz nie istnieja.Chociaz sprawdzaj nick zeby nie wprowadzono 2 takich samych.
3. Przed zapisem do bazy filtruj dane (prevent SQL). Obraz filtruj pod względem: rozmiarów, rozszerzenia, wysokosci i szerokosci.
4. Obraz przesylaj na serwer do danego katalogu a w bazie zapisuj samą nazwe. Zbezpiecz sie przed dodaniem takiej samej nazwy. Wiec albo sprawdzaj czy taki sam plik istnieje juz na serwerze lub od razu doklej jakis losowy string do nazwy badz od razu zmien nazwe z oryginału na jakis hasz typu" erfdstt3wrerw43trgdt45td4t.jpg i te nazwe zapisz do bazy.
5. Po dodaniu przekierowac na dana strone lub wyswietl informacje z podziekowaniem + link do strony gdzie wyswietla sie dane.
6. Zrob wyswietlenie z bazy. Sam obraz wyswietl podając tag <img a jako nazwe pobierz daną z tabesli sql.

Ten post edytował dublinka 22.11.2019, 09:27:40


--------------------
Go to the top of the page
+Quote Post
daniel55
post 25.11.2019, 23:38:57
Post #9





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 20.11.2019

Ostrzeżenie: (0%)
-----


Panowie formularz już mam i zapisane dane w bazie danych.
Teraz potrzeba napisać funkcję, która po kliknięciu przycisku np. odczyt, będzie pobierała dane z bazy np. do tablicy, Imię, Nazwisko i informację o lokalizacji pliku *.jpg (Avatar).
Następnie trzeba te informacje wyświetlić na stronie np. w nowym oknie.
Jakich funkcji najlepiej użyć?
Pozdrawiam.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.04.2024 - 05:31