Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Wysyłanie pliku na serwer i zapis linku w bazie
olszam
post 30.11.2011, 13:33:13
Post #1





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


Jak w temacie ktoś wie jak zrobić taki prosty formularz wysyłania plików na serwer bo patrze już na rożnych poradnikach i żaden mi nie chce działać.
Go to the top of the page
+Quote Post
nospor
post 30.11.2011, 13:34:32
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Zacznij od zapoznania się z tym, jak się wysyła plik na serwer
http://pl.php.net/manual/pl/features.file-...post-method.php
Gdy to opanujesz, przejdziemy dalej


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

"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
olszam
post 30.11.2011, 14:04:48
Post #3





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


no robię jak w tym przykładzie ale mam taki komunikat Possible file upload attack!(mozliwy atak podczas uploadu chyba tak to się tłumaczy) ale nic jeszcze nie wysyłałem o co w tym biega?
Go to the top of the page
+Quote Post
nospor
post 30.11.2011, 14:07:49
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ten kod:
  1. $uploaddir = '/var/www/uploads/';
  2. $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
  3.  
  4. echo '<pre>';
  5. if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
  6. echo "File is valid, and was successfully uploaded.\n";
  7. } else {
  8. echo "Possible file upload attack!\n";
  9. }
  10.  
  11. echo 'Here is some more debugging info:';
  12. print_r($_FILES);
  13.  
  14. print "</pre>";

Należy wykonać dopiero po wysłaniu formularz. Ty go wykonujesz przed wysłaniem formularza.
Na stronie manuala przyjęto, że kod formularza i kod odbioru formularza są w różnych plikach. Ty dałeś wszystko w jednym - oczywiście można tak zrobić, ale należy pamiętać by ten kod wykonać dopiero po wysłaniu forma. Należy w tym celu całość objąć blokiem
if (!empty($_POST)){
//tu kod
}


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

"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
olszam
post 30.11.2011, 22:05:30
Post #5





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


thx działa tylko jednego nie rozumiem przy ścieżce gdzie chce wysłać plik czemu mi tam wywala błąd jak daje 'D:\wamp\www\stronka\test\' bo chce by ta sama nazwa pliku została.

już nie trzeba slash nie w tą strone był biggrin.gif

ok mam już skrypt na dodawanie zdjęć i działa ale nie wiem czemu nie chce do tabeli zdjęcia mi dodać rekordu a moja tabela wygląda tak:
ZDJECIA
idzdjecia
link
opis
idzawodnik (FK)
idtrener (FK)
iddanezawody (FK)

a kod wygląda następująco
  1. <?php
  2. require 'polacz.php';
  3. mysql_query("SET NAMES utf8");
  4. mysql_query("SET CHARACTER SET utf8");
  5. mysql_query("SET collation_connection = utf8_polish_ci");
  6. ?>
  7. <form enctype="multipart/form-data" action="przyklad1.php" method="POST">
  8. <input type="hidden" name="MAX_FILE_SIZE" value="3000000" />
  9. obrazek: <input name="link" type="file" />
  10. <br/>
  11. zawodnik: <select name="idzawodnik">
  12. <?php
  13. $sql2 = "SELECT * FROM zawodnik";
  14. $rezultat1 = mysql_query($sql2);
  15. while ($Wiersz1 = mysql_fetch_array($rezultat1))
  16. {
  17. echo '<option value="'.$Wiersz1['idzawodnik'].'">'.$Wiersz1['imiezawodnik'].' '.$Wiersz1['nazwiskozawodnik'].'</option>';
  18. }
  19. ?>
  20. </select><br />
  21. trener: <select name="idtrener">
  22.  
  23. <?php
  24. $sql3 = "Select * From trener";
  25. $rezultat2 = mysql_query($sql3);
  26. while ($Wiersz2 = mysql_fetch_array($rezultat2))
  27. {
  28. echo '<option value="'.$Wiersz2['idtrener'].'">'.$Wiersz2['imietrener'].' '.$Wiersz2['nazwiskotrener'].'</option>';
  29. }
  30. ?>
  31. </select><br />
  32. dane zawody:
  33. <select name="iddanezawody">
  34. <?php
  35. $sql4 = "SELECT * FROM danezawody";
  36. $rezultat3 = mysql_query($sql4);
  37. while ($Wiersz3 = mysql_fetch_array($rezultat3))
  38. {
  39. echo '<option value="'.$Wiersz3['iddanezawody'].'">'.$Wiersz3['iddanezawody'].'</option>';
  40. }
  41. ?>
  42. </select><br />
  43. <textarea name="opis">opis</textarea><br />
  44. <input type="submit" value="dodaj zdjecie" />
  45. </form>
  46. <?php
  47. if (!empty($_POST)){
  48. $uploaddir = 'test/';
  49. $uploadfile = $uploaddir . basename($_FILES['link']['name']);
  50. echo '<pre>';
  51.  
  52. if (move_uploaded_file($_FILES['link']['tmp_name'], $uploadfile))
  53. {
  54.  
  55.  
  56. if(isset($_POST['dodaj'])){
  57. $link = $_POST['link'];
  58. $opis = $_POST['opis'];
  59. $zawodnik = $_POST['idzawodnik'];
  60. $trener = $_POST['idtrener'];
  61. $danezawody = $_POST['iddanezawody'];
  62. if($link && $opis && $zawodnik && $trener && $danezawody)
  63. {
  64. $sql1="INSERT INTO zdjecia SET link='$link', opis='$opis', idzawodnik='$zawodnik', idtrener='$trener', iddanezawody='$danezawody'";
  65.  
  66. $ins = mysql_query($sql1);
  67. if($ins)
  68. {
  69. echo "Rekord został dodany poprawnie";
  70. }
  71. else {
  72. echo "Błąd nie udało się dodać nowego rekordu: ";
  73. }
  74.  
  75. }
  76. }
  77.  
  78. echo "plik został prawidłowo wysłany.\n";
  79. }
  80. else
  81. {
  82. echo "błąd w wysłaniu pliku!\n";
  83. }
  84.  
  85. echo 'info: ';
  86. print_r($_FILES);
  87.  
  88. print "</pre>";
  89. }
  90. mysql_close($polacz);
  91. ?>


Ten post edytował olszam 30.11.2011, 22:07:05
Go to the top of the page
+Quote Post
Peter12
post 30.11.2011, 22:20:43
Post #6





Grupa: Zarejestrowani
Postów: 18
Pomógł: 1
Dołączył: 15.08.2010

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


Pomyliłeś INSERT z UPDATE.
Błąd jest tutaj:
Cytat
$sql1="INSERT INTO zdjecia SET link='$link', opis='$opis', idzawodnik='$zawodnik', idtrener='$trener', iddanezawody='$danezawody'";

Zmień to na:
Cytat
$sql1="INSERT INTO zdjecia(idzdjecia, link, opis, idzawodnik, idtrener, iddanezawody) VALUES ('', '$link', '$opis', '$zawodnik', '$trener', '$danezawody')";


Ten post edytował Peter12 30.11.2011, 22:21:46
Go to the top of the page
+Quote Post
olszam
post 30.11.2011, 22:48:30
Post #7





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


nie działa nadal ten sam efekt że wysłać mogę na serwer ale w bazie tego nie ma
Go to the top of the page
+Quote Post
Peter12
post 30.11.2011, 23:27:59
Post #8





Grupa: Zarejestrowani
Postów: 18
Pomógł: 1
Dołączył: 15.08.2010

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


Cytat
if(isset($_POST['dodaj'])){

Z tego co widzę to w formularzu nie ma inputa typu submit o nazwie "dodaj".

Ten post edytował Peter12 30.11.2011, 23:29:37
Go to the top of the page
+Quote Post
olszam
post 30.11.2011, 23:48:07
Post #9





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


dodałem to i teraz pisze: "Notice: Undefined index: link in D:\wamp\www\stronka\przyklad1.php on line 57" $link=$_POST['link'];
Go to the top of the page
+Quote Post
Necsord
post 1.12.2011, 00:07:44
Post #10





Grupa: Zarejestrowani
Postów: 189
Pomógł: 60
Dołączył: 5.10.2010
Skąd: Bydgoszcz

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


Odwołujesz się do elementu tablicy, który nie istnieje. Musisz zawczasu sprawdzać czy istnieje a dopiero potem się do niego odwoływać. Do poczytania: isset.


...zresztą http://forum.php.pl/index.php?showtopic=188326&hl=

Ten post edytował Necsord 1.12.2011, 00:09:56
Go to the top of the page
+Quote Post
olszam
post 1.12.2011, 02:02:24
Post #11





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


dobra sprawdzę jeszcze ale raczej wątpię by zadziałało jak coś do kolegi się zapytam.
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: 16.06.2025 - 20:15