Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [klasa] Uploader, prosta klasa uploadujaca
bim2
post 3.07.2006, 15:11:56
Post #1





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Jest to moja pierwsza klasa więc proszę o wyrozumiałość. Pierwsza klasa OPUBLIKOWANA (zeby nie było ;P)
  1. <?php
  2. //Klasa by BIM
  3. // <a href="http://nfscg.info" target="_blank">http://nfscg.info</a>
  4. // @version 1.0
  5. // mail: bimhernas@gmail.com
  6. class uploads
  7. {
  8. var $typ = array();
  9. var $conf=array("folder" => "all");
  10. var $error=NULL;
  11. var $name;
  12. // Funkacja uploadujaca
  13. function move($nazwa) // wywołanie: $up->move( nazwa_zmiennej_inputa);
  14. {
  15. if (!is_uploaded_file($_FILES[$nazwa]['tmp_name'])) 
  16. {
  17. $this->error[] = 'Funkcja is_uploaded_file() nie pozwoliła na upload tego pliku';
  18. }
  19. if(!in_array($_FILES[$nazwa]['type'], $this->typ))
  20. {
  21. foreach($this->typ AS $typ)
  22. {
  23. if(!isset($typy))
  24. {
  25. $typy=$typ;
  26. }
  27. else
  28. {
  29. $typy .= ','.$typ;
  30. }
  31. }
  32.  
  33. $this->error[] = 'Nie dozwolony typ mime. Dozwolone typty to: '.$typy.' , a twój typ to '.$_FILES[$nazwa]['type'];
  34.  
  35. }
  36. if(!is_dir('uploads/'.$this->conf['folder']))
  37. {
  38. $this->error[] = 'Źle ustawiłeś katalog.';
  39.  
  40. if(!is_writable('uploads/'.$this->conf['folder']))
  41. {
  42. $this->error[] = 'Katalog ma Ľle ustawione mody (czyt. chmody). Ustaw je na 0777';
  43. }
  44. }
  45. ########################
  46. $aa=explode('.', $_FILES[$nazwa]['name']);
  47. $roz = $aa[(count($aa)-1)];
  48. if($this->error=='')
  49. {
  50. $klucz=uniqid(md5(time()));
  51. if(move_uploaded_file($_FILES[$nazwa]['tmp_name'], 'uploads/'.$this->conf['folder'].'/'.$klucz.'.'.$roz))
  52. {
  53. $this->name = $klucz.'.'.$roz;
  54. return TRUE;
  55. }
  56. else
  57. {
  58. $this->error[] = 'Bład przy uploadowaniu pliku. Skontaktuj się z administratorem.';
  59. }
  60. }
  61. return FALSE;
  62. }
  63.  
  64. /* Zmienia ustawienia  */
  65. function set($co, $value)
  66. {
  67. $this->conf[$co]=$value;
  68. }
  69. /*  Ustawia dozwolone typy */
  70. function type($dozwolone)
  71. {
  72. if(is_array($dozwolone))
  73. {
  74. $this->typ=$dozwolone;
  75. }
  76. else
  77. {
  78. $this->typ=array($dozwolone);
  79. }
  80. }
  81. }
  82. ?>

Wywołania:
  1. <?
  2.  
  3. $up = new uploads;
  4. echo '<form method="POST" action="'.$_SERVER['PHP_SELF'].'" ENCTYPE="multipart/form-data">
  5. <input type="file" name="file" size="20" class="input">
  6. <input type="hidden" name="a" value="b" /><input type="submit" value="upload" /></form>';
  7. if($_POST['a']=='b')
  8. {
  9. $up->set('folder', 'test');
  10. $up->type(array('image/gif', 'text/plain'));
  11. if($up->move('file'))
  12. {
  13. echo 'OK';
  14. }
  15. else
  16. {
  17. print_r($up->error);
  18. }
  19. }
  20.  
  21. ?>


Ten post edytował bim2 20.07.2006, 09:51:25


--------------------
Go to the top of the page
+Quote Post
Cysiaczek
post 3.07.2006, 15:26:11
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




smile.gif :| sad.gif i tak się wyżyję. Zastanawia mnie, dlaczego zrobiłeś klasę, skoro już pierwsza metoda move() posiada w swoim ciele odwołania do zmiennych globalnych $_FILES? Wiem, że plików to w innych nie ma, ale nie mimo to ładniej wygląda jak klasa jest uniwersalna. Może ktoś zechce kiedyś użyc tej klasy w inny nieco sposób.
Ale to tylko tak... ehh nieważne - czepiam się smile.gif


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
bim2
post 3.07.2006, 15:32:09
Post #3





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


To ja nie wiem jakim cudem chcesz uzyć uploadu bez $_FILES?? Ta klasa jest do my cms , uploaduje download, avatary obrazki do newsa itepede. Nie musze przy każdym uploadowaniu sprawdzać zabezpeczenia. Wystarczy że wywołam jedna klasę ;P. Moge dowolnie zmieniac też zabezpieczenia, np typt mime biggrin.gif


--------------------
Go to the top of the page
+Quote Post
grzegorz_w
post 19.07.2006, 14:56:22
Post #4





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.07.2006

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


pomysłowe, nawet widzę dobre zastosowanie tego kodu smile.gif
Go to the top of the page
+Quote Post
bim2
post 20.07.2006, 09:49:10
Post #5





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


THX, to moje pierwsza udostępniona klasa happy.gif ja to stosuje tam gdzie uploaduje i nie musze dbać przy każdym uploadzie o bezpieczeństwo bo mam to zapewnione smile.gif


--------------------
Go to the top of the page
+Quote Post
grzegorz_w
post 1.08.2006, 15:46:18
Post #6





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.07.2006

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


zapewnione, to znaczy?.
Go to the top of the page
+Quote Post
bim2
post 4.08.2006, 09:36:40
Post #7





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


To znaczy, ze nie powinienem dostac po oczach WARNING z cmodami, czy ze nie ma katalogu smile.gif. I jest is_uploaded dlatego nie muszze tego dodawac.


--------------------
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: 12.06.2025 - 17:52