Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Problem ze skryptem uploadu
mihipoznan
post
Post #1





Grupa: Zarejestrowani
Postów: 194
Pomógł: 0
Dołączył: 27.02.2008

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


Mam prosty skrypt uploadu zdjęć.. jednak gdy wgrywam pliki, które mają nazwę np. ze spację to już nie działa..(tworzenie linków)..co jest źle ? co byście dodali do tego formualarza ?
Kod
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">

Wybierz plik który chcesz dodać do oferty : <br>

<input type="file" name="obrazki" size="40"><br>
<input type="submit" value="Wgraj plik">

  1. <?
  2. move_uploaded_file($_FILES['obrazki']['tmp_name'],"obrazki/".$_FILES['obrazki']['name']);
  3.  
  4. $_SESSION['name'] = 'obrazki/'.$_FILES['obrazki']['name'];
  5. echo "<center><img height= '81 ' width= '92 ' src='".$_SESSION['name']."'><br><br>
  6. <a href= \"javascript:opener.location.reload();window.close() \"><button>dodaj zdjęcie</button></a>
  7. ";
  8. ?>
  9. </script>
  10. </head>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
KCG
post
Post #2





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

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


Twórz nazwę z md5(), np. md5($_FILES['obrazki']['name']; Choć jeśli ktoś doda o takiej samej nazwie to zostaną zastąpione, więc trochę lipa. Ja najczęściej dodaję do bazy i wtedy w nazwie mam też id, dlatego nic mi się nie pokrywa (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
mihipoznan
post
Post #3





Grupa: Zarejestrowani
Postów: 194
Pomógł: 0
Dołączył: 27.02.2008

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


Ooo..dobry pomysł z tym md5 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Z pokrywaniem nazw to nie ma problemu bo do każdej oferty mam id wiec każde zdjęcie ma swoją ofertę więc też id (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) A jak ustalić żeby mogły być uploadowane tylko pliki .jpg .gif i .png ? Hmm.. i gdzie dokładnie wpisać to md5 ?

  1. <?
  2. move_uploaded_file($_FILES['obrazki']['tmp_name'],"obrazki/"md5(.$_FILES['obrazki']['name']);
  3.  
  4. $_SESSION['name'] = 'obrazki/'.$_FILES['obrazki']['name'];
  5. echo "<center><img height= '81 ' width= '92 ' src='".$_SESSION['name']."'><br><br>
  6. <a href= \"javascript:opener.location.reload();window.close() \"><button>dodaj zdjęcie</button></a>
  7. ";
  8. ?>
  9. </script>
  10. </head>


tak ?

Ten post edytował mihipoznan 26.03.2008, 17:16:09
Go to the top of the page
+Quote Post
KCG
post
Post #4





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

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


Ale jeśli ktoś wgra taką samą nazwę? Bo z tego, co widzę wszystko idzie do jednego folderu. A md5() dla jasności dla danego słowa, np. 'coś', zawsze zwróci to samo (32-znakowy ciąg).
Może wcześniej zrób zmienną z nazwą:
  1. <?php
  2. $image = 'obrazki/'.md5($_FILES['obrazki']['name']);
  3. move_uploaded_file($_FILES['obrazki']['tmp_name'],$image);
  4.  
  5. $_SESSION['name'] = $image; // btw. po co to?
  6. echo '<center><img height= "81" width= "92" src="'.$_SESSION['name'].'" /><br /><br />
  7. <a href= "javascript:opener.location.reload();window.close();"><button>dodaj zdjęcie</button></a>';
  8. ?>

I jeśli nie musisz nie używaj ", tylko ', bynajmniej mnie tak uczyli (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

A co do rozpoznawania typu to getimagesize(); i manual zaprasza (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #5





Goście







Raczej nie md5(), bo co tu chcesz szyfrować? Jeśli dodajesz do bazy to zrób sobie coś takiego, że w pole obrazek i w nazwie pliku dawaj:

  1. <?php
  2. $kod = str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  3. ?>


Opcji jest 36!, przy czy 11! to już więcej niż jest polaków (m.w.) ;]

Możesz powiedzmy zrobić cyferki i z 5 literek, to będzie 13! możliwości (wystarczająco dużo, żeby cały świat miał po jednym obrazku ;]), ew. jak się boisz, że się coś powtórzy to zrób if'a, który sprawdzi czy nie ma przypadkiem już takiego kod w bazie i wygeneruje nowy.

Ten post edytował Wieviór 26.03.2008, 19:40:07
Go to the top of the page
+Quote Post
KCG
post
Post #6





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

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


Ale masz stały ciąg do bazy na przykład i ładne pole char(32) (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
A poważnie to masz jakieś przeciwwskazania do md5() w tym przypadku? Pytam, bo używam, a może lepiej nie:)
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #7





Goście







Cytat(KCG @ 26.03.2008, 21:43:00 ) *
Ale masz stały ciąg do bazy na przykład i ładne pole char(32) (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)


Tu masz stały ciąg do bazy i ładne pole char(36) lub char(11) ;]

Cytat(KCG @ 26.03.2008, 21:43:00 ) *
A poważnie to masz jakieś przeciwwskazania do md5() w tym przypadku? Pytam, bo używam, a może lepiej nie:)


Przeciwwskazań raczej nie mam, tyle tylko, że jak ktoś wgra z tą samą nazwą (a przecież może się zdarzyć), to zastąpi plik, a w bazie będą dwa takie same kody. Natomiast przy str_shuffle jest to praktycznie nie możliwe ;]
Go to the top of the page
+Quote Post
KCG
post
Post #8





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

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


No to prawda, ale zaznaczyłem to (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Ja robię w ten sposób, że do nazwy dodaję id czyli md5('nazwa'.$id), przy czym $id zawiera PRIMARY KEY z bazy, więc jest niepowtarzalne (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
mihipoznan
post
Post #9





Grupa: Zarejestrowani
Postów: 194
Pomógł: 0
Dołączył: 27.02.2008

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


KCG - po to że na innej stonie odczytuję tą sesję i dodaję do konkretnego wiersza w tabeli (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Wieviór, tylko że ja dodaję do bazy na innej stronie i link przenoszę w sesji (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) .. więc

  1. <?
  2. move_uploaded_file($_FILES['obrazki']['tmp_name'],"obrazki/".$_FILES['obrazki']['name']);
  3.  
  4. $_SESSION['name'] = 'obrazki/'.$_FILES['obrazki']['name'];
  5. echo "<center><img height= '81 ' width= '92 ' src='".$_SESSION['name']."'><br><br>
  6. <a href= \"javascript:opener.location.reload();window.close() \"><button>dodaj zdjęcie</button></a>
  7. ";
  8. ?>


i jak to
  1. <?php
  2. $kod = str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  3. ?>
wstawić żeby przenieść to gdzie indziej za pomocą sesji ?
  1. <?php
  2. $_SESSION['kod'] = str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  3. ?>

tak ? zamiast tego ['obrazki'] ?
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #10





Goście







Stwórz tą zmienną kod już na tej drugiej stronie i:

  1. <?php
  2.  
  3. $kod = str_shuffle("abcde1234567890");
  4.  
  5. move_uploaded_file($_FILES['obrazki']['tmp_name'],"obrazki/".$kod);
  6.  
  7. $_SESSION['name'] = 'obrazki/'.$kod;
  8.  
  9. echo '<center><img height="81" width="92" src="'.$_SESSION['name'].'"><br><br>
  10. <a href="javascript:opener.location.reload();window.close()"><button>dodaj zdjęcie</button></a>';
  11. ?>
Go to the top of the page
+Quote Post
mihipoznan
post
Post #11





Grupa: Zarejestrowani
Postów: 194
Pomógł: 0
Dołączył: 27.02.2008

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


Ahaaa ! (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Wielkie dzięki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #12





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




Ja tylko w kwestii uswiadomienia kolegi KCG:
Cytat
Ja robię w ten sposób, że do nazwy dodaję id czyli md5('nazwa'.$id), przy czym $id zawiera PRIMARY KEY z bazy, więc jest niepowtarzalne

Jakbys zrobil tak:'nazwa'.$id to bys mial niepowarzalne.
Robiac z tego jeszcze md5 niestety nie masz juz niepowtarzalnego. Polecam lekture md5 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
KCG
post
Post #13





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

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


Wieviór zdaje się, że jeszcze rozszerzenia nie dodał (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
nospor, tzn. że jest możliwość takiego samego hashu dla różnych ciągów znaku? (chyba lekko w temacie to jest;p)
Go to the top of the page
+Quote Post
nospor
post
Post #14





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




Cytat
nospor, tzn. że jest możliwość takiego samego hashu dla różnych ciągów znaku
oczywiscie. Im wiecej bedziesz mial danych tym wieksze bedzie tego prawdopodobienstwo.
Go to the top of the page
+Quote Post
KCG
post
Post #15





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

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


Dzięki:)
Go to the top of the page
+Quote Post
mihipoznan
post
Post #16





Grupa: Zarejestrowani
Postów: 194
Pomógł: 0
Dołączył: 27.02.2008

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


Hmm.. a jak dodać to rozszerzenie ? Tak żeby obsługiwało gif i jpg..

coś w tym stylu ?
  1. <?php
  2.  
  3.  $kod = str_shuffle("abcde1234567890");
  4.  $rozszerzenie = (".jpg");
  5.  
  6.  move_uploaded_file($_FILES['obrazki']['tmp_name'],"obrazki/".$kod.$rozszerzenie);
  7.  
  8.  $_SESSION['name'] = 'obrazki/'.$kod.$rozszerzenie;
  9.  
  10.  echo '<center><img height="81" width="92" src="'.$_SESSION['name'].'"><br><br>
  11.  <a href="javascript:opener.location.reload();window.close()"><button>dodaj zdjęcie</button></a>';
  12.  ?>


tylko że nie działa..
Go to the top of the page
+Quote Post
KCG
post
Post #17





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

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


Ale czemu w nawiasie to .jpg? Daj $rozszerzenie = '.jpg';
A jeśli chcesz więcej typów obsłużyć to poczytaj o getimagesize(), jak wspomniałem wcześniej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
mihipoznan
post
Post #18





Grupa: Zarejestrowani
Postów: 194
Pomógł: 0
Dołączył: 27.02.2008

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


ok dzięki (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.12.2025 - 00:03