E-učenje > PHP Tutorijali

 
Želiš pristup svim sekcijama?

Registracija  




Tutorijal: PHP skripta - slanje fajla na server

 

Postavljanje fajla na server (prosta "Upload" skripta)

Korak 1. Pozicionirajte se u htdocs direktorijum (podsetnik u prvom tutorijalu). Kreirajte direktorijum pod imenom "postavi" u direktorijumu htdocs. U direktorijumu "postavi" kojeg smo upravo kreirali, kreirajte novi direktorijum pod imenom "dodati_fajlovi" U tom direktorijumu će se smeštati fajlovi koje će PHP skripta procesuirati.

Korak 2. Otvorite Notepad ili neki drugi tekst editor. Otkucajte sledeći html kod:

 
<form enctype="multipart/form-data" action="dodaj_ok.php" method="POST">
Odaberite fajl za dodavanje: <input name="mojfajl" type="file" /><br />
<input type="submit" value="Dodaj fajl" />
</form>

Fajl sačuvajte u direktorijum pretraga pod imenom "dodaj.html". Vodite računa da "Save as type" bude podešen na "All Files". Ovim smo kreirali formular za pretragu podataka iz tabele baze podataka.

Korak 3. Sada krećemo sa kreiranjem PHP skripte koja će napravljenu formu procesuirati. Otvorite ponovo notepad i otkucajte sledeću PHP skriptu:

 
              
<?php
$target_path = "dodati_fajlovi/";
$target_path = $target_path . basename( $_FILES['mojfajl']['name']); 
if(move_uploaded_file($_FILES['mojfajl']['tmp_name'], $target_path)) 
{
	echo "Fajl ". basename( $_FILES['mojfajl']['name'])."
     je dodat u direktorijum dodati_fajlovi!";
}
else
{
	echo "Greska!";
}
?>

Korak 4. Sačuvajte fajl pod imenom "dodaj_ok.php" u direktorijum "postavi" kojeg smo kreirali u direktorijumu "htdocs".

Korak 5. Kucajte u adresnu liniju Vašeg brovsera:

http://localhost/postavi/dodaj.html

i proverite kako radi Vaša nova PHP skripta. Proverite kako se ponaša pri slanju različitih tipova fajlova.

 


Tvoja preporuka:


Preporučujem tutorijal (680) Ne preporučujem tutorijal (240)



Komentari / Pitanja:

Ime:

Tvoja e-mail adresa:

Ostavi svoj komentar:

Spam zaštita:
 

Vaše mišljenje je veoma važno. Ukoliko imate bilo kakav komentar na tutorijal, ili nešto da dodate, izmenite ili ukoliko ste primetili grešku, ne ustručavajte se da podelite sa svima Vaše mišljenje.

Takođe, ukoliko imate bilo kakvo pitanje u vezi tutorijala, postavite ga ovde. Lakše ćemo doći do rešenja ako više nas učestvuje u rešavanju problema.

     


Ukupno komentara: 22


miodrag
22.07.2016 20:24 h
  slicno sam napravio php skript, ali ono sto me intersuje da li postoji neki php skript kojim se proverava postojanje neke sql baze i tabele na nekom serveru. primera if(!file_exit()){} il itome slicno il ise samo to proverava samim upitom konkcije na sql server ?

posetilac
05.02.2013 23:08 h
  Jel biste mogli da dodate tutorijal da maksimalna velicina fajla bude 1mb( ili vise ili manje) ???

posetilac
05.02.2013 23:00 h
  Jel biste mogli da dodate tutorijal da maksimalna velicina fajla bude 1mb( ili vise ili manje) ???

superneminator
28.02.2012 14:04 h
  Na to sam mislio. Razradicu ovo, pa ako opet prigusti eto mene sa ?. Hvala ti. Po3drav

Darko Petrović
28.02.2012 10:57 h
  @superneminator
Ne znam tačno šta ti treba, eli evo jedan primer, možda ti bude od pomoći:
 
// Nakon uspesnog logina, postavi kolacic...
// Prvo ucitas vrednost kolacica
$sql = "SELECT * FROM korisnici WHERE korisnicko = '$_POST['korisnicko']'"
$rezultat = mysql_query($sql);	
while($red = mysql_fetch_array($rezultat))
{	
	$kolac = $red['korisnicko'];	
}
// Sad, postavljas kolacic
setcookie("Kolac", $kolac, time()+3600);
// Kada ti treba neki podatak iz tabele, recimo ime i prezime:
$sql = "SELECT * FROM korisnici WHERE korisnicko = '$_COOKIE['Kolac']'"
$rezultat = mysql_query($sql);	
while($red = mysql_fetch_array($rezultat))
{	
	$ime = $red['ime'];
	$prezime = $red['prezime'];
    echo $ime; echo " "; echo $prezime;
}

superneminator
28.02.2012 03:56 h
  izvini,nisam se najbolje izrazio. Imam index stranicu na kojoj se uloguju korisnici. Ako je uspesno logiranje saljem ih na njihovu profilnu stranicu. Trenutno ko god da se uloguje salje ga na istu stranicu. Kako da podesim kad se loguje na index stranici i prebaci na profilnu stranicu da ona bude personalizovana, njegova. Npr. u levom delu da se prikaze njegova profilna sila. Oblast sam odredio, ali ne umem da iz tabele i baze izbacim njegovu sliku. Citao sam o tome, ima veze sa sesijama i cookiesima i teorijski razumem cemu to sluzi, ali prakticno ne znam kako to da odradim. Imam index, profile strane u html, css za te stranice i par bazicnih php scripti za login, registraciju... Sta od toga i kako da modifikujem?

Darko Petrović
26.02.2012 11:15 h
  @superneminator
Recimo ovako:
1. Napravi jedan div koji će ti biti div koji se odnosi na celokupan sadržaj strane, a kasnije ostale div-ove referenciraš, tj. podešavaš prema tom "glavnom" div-u. Npr:

HTML:
Sadrzaj desne strane sajta
Sadrzaj leve strane sajta
CSS:

#stranica {  
	margin: 0 auto;    
	width: 960px;    
	text-align: left;  
} 
#leva-strana {   
	float: left;
	width: 260px;    
} 
#desna-strana {   
	float: right;      
	width: 660px;      
} 
Pomoću "width" podešavaš širinu polja.

superneminator
26.02.2012 02:39 h
  Imam tabelu sa korisnicima i sa slikama gde su slike povezane sa IDom korisnika. Korisnici se uloguju i to mi radi. Kako da prikazem sliku korsnika kada se uloguje, u nekoj konkretnoj oblasti (div-u). Dakle, Marko se uloguje i kako da pozovem profilnu sluku na recimo, sredinu ekrana?

Darko Petrovic
26.09.2011. 21:15 h
  Možeš slobodno sve u isti folder, folder samo zaštiti privilegijama i nema brige, ne može niko da pristupi tuđim slikama.

Darko Petrovic
26.09.2011. 21:08 h
  @superneminator
Da, dobro si razumeo.

Što se tiče "čuvanja" slika, ova upload skripta ih sve smešta u isti folder (dodati_fajlovi) i to je sasvim ok sve dok neko ne ubaci sliku sa imenom slike koja već postoji u tom folderu (tada će nova slika overwrite-ovati staru).

Ako baš hoćeš da sprečiš takav slučaj možeš recimo da iskoristišPHP funkciju rename () da automatski promeniš ime novo-uploadovanom fajlu u neko random ime, pogledaj PHP funkciju rand ()

superneminator
25.09.2011. 23:00 h
  Hteo sam lepse da napisem komentar da ukoliko neko ima isti problem razume sta sam hteo da pitam...I jos jedno pitanje za danas: Slike da smestam u isti folder ili da se pri registraciji svakom korisniku dodeli zaseban folder, da ne bi neko mogao da pristupi tudjim slikama?

superneminator
25.09.2011. 22:35 h
  Znaci, treba da imam 3 tabele: Korisnici, Slike_korisnika i komentari_slika. Jel to znaci da ukoliko (npr)Milos uploaduje sliku, pa (npr)Marko, pa opet Milos, u tabeli Slike_korisnika ce to izgledati ovako:

Tabela:Korisnici:

1. Milos...

2. Marko...

Tabela:Slike_korisnika

1. MilosevaSlika1 1(kljuc Milosa iz tabele korisnici)

2. MarkovaSlika 2(kljuc Marka iz tabele korisnici)

3. MilosevaSlika2 1

Kad hocu da prikazem slike npr. Milosa ja selektujem celu tabelu Slike_korisnika i onda prikazem samo one gde je ime Milos(mislim na njegov kljuc iz tabele Korisnici). Ako sam sve dobro razumeo, kako da SAVE-ujem slike- sve da idu u isti folder ili da postoji folder za svakog korisnika? Hvala unapred.

Darko Petrovic
22.09.2011. 21:30 h
  @superneminator
Da, treba da imaš bar 3 tabele.

Primer:
tabela KORISNICI:
id korisnicko
1 milos
2 marko

tabela SLIKE
id putanja id_korisnika (strani kljuc)

Sad, kao što je dole objašnjeno, kada se upload uspešno završi, u tabelu SLIKE ubacuješ putanju do slike koju je korisnik aploadovao i njegov id (u polje id_korisnika).

Na taj način si sliku povezao sa korisnikom. Analogno tome kreiraš i tabelu KOMENTARI, samo što tu referenciraš id slike.

superneminator
22.09.2011. 14:10 h
  Znaci, treba da imam 3 tabele: Korisnici, Slike_korisnika i komentari_slika. Jel to znaci da ukoliko (npr)Milos uploaduje sliku, pa (npr)Marko, pa opet Milos, u tabeli Slike_korisnika ce to izgledati ovako: Korisnici: 1. Milos... 2. Marko... 1. Ime slike 1 2. Ime slike 2 3. Ime slike 1 i kad hocu da prikazem slike npr. Milosa ja selektujem celu tabelu Slike_korisnika i onda prikazem samo one gde je ime Milos(mislim na njegov kljuc iz tabele Korisnici). Ako sam sve dobro razumeo, kako da SAVE-ujem slike- sve da idu u isti folder ili da postoji folder za svakog korisnika? Hvala unapred.

Nemanja
21.09.2011. 17:18 h
  OK. Hvala lepo. Tu se radi o normalizaciji tabela. Pogledacu materijal na tu temu pa cu da se javim kad mi nesto ne bude jasna. Opet, pohvale za sajt. Dosta stvari sam povezao u celinu zahvaljujuci njemu.

Darko Petrović
14.09.2011. 22:50 h
  @superneminator
Recimo,

if(move_uploaded_file($_FILES['mojfajl']['tmp_name'], $target_path))
{
echo "Fajl ". basename( $_FILES['mojfajl']['name'])." je dodat u direktorijum dodati_fajlovi!";
}

evo primer za putanju do slike:

$slika = <img style=\"max-width:500px; max-height:375px; \" src=\" dodati_fajlovi /$mojfajl\">";

Sad, promenjivu $slika baciš u tabelu MySQL baze podataka, i to recimo:
1. U kolonu slike koju bi dodao u tabelu korisnici, ali samo u slučaju ako korisnik može da ima jednu sliku.
2 . Ako je potreebno korisniku obezbediti unos više slika, onda kreiraj drugu tabelu, recimo korisnici_slike, pa staviš strani ključ da bude id iz tabele korisnici, i tako povežeš ove dve tabele. Analogno tome, kreiraš tabelu komentari_slike gde bi ti strani ključ bio id iz tabele korisnici_slike.

superneminator
11.09.2011. 19:57 h
  Kako bi izgledao kod za upload slika svakog korisnika,ali tako da se u tabelu ubaci samo putanja do slike. Posto ima dosta korisnika sa dosta slika kako treba da izgleda tabela? Da li svaka uploadovana slika ide u novu kolom nu ili sve putanje uploadovanih slika idu u istu kolonu. Druga opcija mi je logicnija ali ako neko ima dosta slika kako ih iscitavati iz baze posle toga. I kako posle omogucuti komentare slika? Hvala unapred.

Darko Petrović
15.08.2011. 22:33 h
  @johnnyboy Hvala na ispravci, izvršio sam neophodni naporni rad :)

johnnyboy
08.08.2011. 11:52 h
  pa mozda ste trebali coveku da ukazete da je napravio gresku u lokaciji za smestanje i imenu html i php fajla a ne odmah da mu ocrnite rad. Darko, greska je... korak2. Fajl sacuvajte u direktorijum "postavi" pd imenom "dodaj.html" i Korak4. skriptu sacuvajte u direktotrijum "postavi" a ne "pretraga" i to ce raditi super. Razumite coveka naporan je to rad :) pozz

Filip
28.06.2011. 08:03 h
  Ovo je super za pocetnike da vide kako stvari funkcionisu. Hvala!

Darko Petrović
22.06.2011. 19:01 h
  Uh ala mi ocrniste tutorijal :)

Nesa
08.04.2011. 18:44 h
  Ovu skriptu nikako ne koristite za ozbiljnije web sajtove!!!