[ Príspevok: 1 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Snacker téma: Upload fotografií

Registrovaný: 31.05.09
Prihlásený: 02.06.17
Príspevky: 562
Témy: 37 | 37
Bydlisko: BegyBen
NapísalOffline : 01.06.2009 16:30 | Snacker téma: Upload fotografií

Dovoľte si aby som v tejto téme, ktorá bola už mnoho krát spomenutá predniesol základný princíp uploadu na server. Samozrejme s úskaliami a nástrahami, ktoré zo sebou nesie. Upload súborov robím po prvýkrát a váhal som, či uviesť ďalší príspevok na túto tému, pretože ako som si listoval v sekcií PHP,ASP našiel som ich veľmi veľa. No na druhú stranu ma povzbudil fakt, že ako som si otváral témy a snažil sa s chuťou načerpať nové vedomosti našiel som po väčšine ako sa hovorí “trhance” alebo odkazy, kde bol vysvetlený základný princíp ale samozrejme nulová bezpečnosť. Práve preto budem rád, keď sa podelíte so svojimi skúsenosťami a spoločne vytvoríme kvalitný kód.

Na začiatok sa zmienim o tom, že ak chcete nahrávať na server musíte mať zvolený priečinok s CHMOD 777 inak sa Vám začnú zobrazovať chyby typu:
Warning: move_uploaded_file(/var/www/ ...
Nastavíte si ho veľmi jednoducho: napr. vo FileZille kde na Váš priečinok kliknete pravým tlačítkom a zvolíte atribúty súboru a v kolónke číselne nastavíte hodnotu 777.
Ak Vám ani napriek tomuto nastaveniu nepôjde upload treba ešte skontrolovať save_mode v súbore php.ini. Ja ho mám v /etc/php5/apache2/php.ini (distribúcia Ubuntu). Bližšie informácie a konfigurácie nájdete napr. na Google.

Ja sa zameriam na upload fotografií, konkrétne zmena fotografie užívateľa z anonymnej na jeho konkrétnu.(ale samozrejme si môžete skript prispôsobiť podľa chuti) Chcel by som aby bolo možné uploadnuť iba jeden formát fotografie (image/jpeg), ďalej aby bolo možné nahrať na server fotografiu do veľkosti 300kB a dobré by bolo ak by fotografie menili svoj názov poradovo (1, 2, 3…) z prostého dôvodu. Ak na server nahráte fotku rovnakého názvu starú fotografiu jednochudo prepíše, čo by mohlo spôsobovať problémy ak by nám dvaja rôzny ľudia nahrali na server fotografiu s názvom napr. 001.jpg ten prvý by mal asi smolu.

Pre takúto registráciu fotografií budeme potrebovať vytvoriť tabuľu v databáze, ktorá bude mať dva stĺpce. 1. stĺpec bude poradové číslo fotografií, čiže každá fotografia bude jedinečný identifikátor podľa neho sa bude prideľovať aj názov fotografie a
druhý stĺpec bude v mojom prípade meno uploadera, ktoré si prenášam cez SESSION. Tieto fotografie si budem overovať a ak budú spĺňať požiadavky cestu ku fotke z profilu užívateľa zmením z anonymnej na tú, ktorú si uploadol.
(Neviem či je to dobrý spôsob, no ak by ste mali návrhy na niečo sofistikovanejšie treba napísať. Ako vravím upload robím prvý krát)

Tu je návrh tabuľky:
Kód:
CREATE TABLE `profil`.`vlastne_foto` (
`id` BIGINT NOT NULL,
`nick` VARCHAR( 31 ) NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM


Formulár bude vyzerať veľmi jednoducho:
Kód:
<form action="upload3.php" enctype="multipart/form-data" method="post">
Vyber fotografiu:<br />
<input type="file" name="fotografia" value"" /><br />
<br />
<input type="submit" name="nahrat" value="Nahrať na server">
</form>


A tu už máme samotný PHP skript, ktorý sa bude nachádzať na rovnakej stránke ako formulár. Sú k nemu poznámky tak treba prečitať, pochopiť a poprípade vylepšiť.

Kód:
<?php
if (isset($_POST['nahrat'])){
/* Nastavenie max. velkosti suboru v Bytoch */
$max_velkost = 310000;


$nick = $_SESSION['prezyvka'];


$server = "***";
$username = "***";
$password_databaza = "***";

@mysql_connect($server, $username, $password_databaza) or die("Nemozem nadviazat spojenie s databazou!");
@mysql_select_db('profil') or die("Nemozem nadviazat spojenie s databazou!");

$query = "SELECT id FROM vlastne_foto";
$result = mysql_query($query);
$poradie = mysql_numrows($result);
$nazov = $poradie + 1;


/* Nastavime konstantu */
define ("FILEREPOSITORY", "/var/www/foto/");

/* Presvedci sa, ci bol subor nahrany cez POST */
if (is_uploaded_file($_FILES['fotografia']['tmp_name'])) {

/* Ulozime si do premennej format uploadnuteho suboru */
$image_format = $_FILES['fotografia']['type'];

/* JE nas pozadovany typ suboru formatu JPG ? */
if ($image_format != "image/jpeg")
   echo "Nezadali ste pozadovany format fotografie!";
/* Overme jeho velost  v Bytoch */
else if ($_FILES['fotografia']['size'] > $max_velkost)
   echo "Max. velkost fotografie moze byt 300kB!";
/* Ak je vsetko ako ma uploadneme subor na server */
else {
$result = move_uploaded_file($_FILES['fotografia']['tmp_name'], FILEREPOSITORY."/$nazov.jpg");
if ($result == 1) {
   echo "<p>Subor bol uspesne uploadnuty!</p>";
   $res = mysql_query("
INSERT INTO `profil`.`vlastne_foto` (
`id` ,
`nick`
)
VALUES (
'$nazov', '$nick'
)") or die(mysql_error());
}   
else
   echo "<p>Subor sa nepodarilo uploadnut!</p>";
}
}
}
?>


To je všetko ku tejto téme. V ďalšom mojom príspevku môžem názorne ukázať autentizáciu (ktorú som už robil :) )

Ďakujem


 [ Príspevok: 1 ] 


Snacker téma: Upload fotografií



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

galéria fotografii

v HTML, XHTML, XML, CSS

6

523

22.02.2008 0:45

Matho

V tomto fóre nie sú ďalšie neprečítané témy.

script na ohodnotenie fotografii

v JavaScript, VBScript, Ajax

5

548

01.03.2009 21:11

l0vel

V tomto fóre nie sú ďalšie neprečítané témy.

Atramentová tlaciaren (tlač fotografii)

v Externé zariadenia

5

144

06.08.2017 16:54

Ivan-K

V tomto fóre nie sú ďalšie neprečítané témy.

Program na pomenovanie fotografii

v Grafické programy

4

267

09.02.2010 18:06

Seth Sparrow

V tomto fóre nie sú ďalšie neprečítané témy.

notebook na úpravu fotografií

v Notebooky a netbooky

8

459

18.03.2009 10:16

pacinko

V tomto fóre nie sú ďalšie neprečítané témy.

Externy HDD na zalohu fotografii

v Úložné zariadenia

5

205

19.12.2014 17:29

kllr007

V tomto fóre nie sú ďalšie neprečítané témy.

procesor a doska pre upravy fotografii

v PC zostavy

5

147

19.03.2015 19:25

romikles

V tomto fóre nie sú ďalšie neprečítané témy.

monitor na upravu fotografii cca 200€

v Monitory, televízory a projektory

9

259

02.01.2017 20:41

ambrosko1

V tomto fóre nie sú ďalšie neprečítané témy.

Záchrana fotografii z telefonu SGH-U600

v Ovládače

9

332

26.06.2010 14:48

M@Xo

V tomto fóre nie sú ďalšie neprečítané témy.

PC na spracovanie fotografií do 1000 EUR

v PC zostavy

3

206

15.08.2013 8:44

mino_85

V tomto fóre nie sú ďalšie neprečítané témy.

TeraPixel – hvězdná obloha na největší fotografii světa

v Novinky

4

295

13.07.2010 20:57

Cirky

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie.

Adobe má nástroj na opravu rozmazaných fotografií

v Novinky

1

204

20.10.2011 19:59

f4r0

V tomto fóre nie sú ďalšie neprečítané témy.

Program na vytvorenie pohyblivého filmu z fotografií...

v Video programy

1

441

08.05.2012 21:41

F3RY

V tomto fóre nie sú ďalšie neprečítané témy.

Webstranky, Graficke Navrhy, Uprava Fotografii,Reklamne okna

v Ponuka práce

0

814

08.08.2009 14:14

saldir

V tomto fóre nie sú ďalšie neprečítané témy.

Notebook na spracovanie videa a fotografii vo vysokej kvalit

v Notebooky a netbooky

20

1421

04.05.2011 6:50

Johnnny

V tomto fóre nie sú ďalšie neprečítané témy.

téma

v Operačné systémy Microsoft

1

478

27.01.2007 14:01

quatermain



© 2005 - 2017 PCforum, edited by JanoF