webForum webForum sponsras med lina och serverplats av Binero AB

Gå tillbaka   webForum > Utveckling > Webbutveckling > PHP

PHP Här diskuteras allt som har med scriptspråket PHP att göra.

Svar
 
Trådverktyg Visningsalternativ
Äldre 2004-10-29, 22:22   #1
bassebhu
Moderator
 
bassebhus avatar
 
Registrerad: 2001-11-20
Inlägg: 3 989
Lösningar: 36
Bästa och säkraste sättet att ladda upp bilder?

Hej alla glada!

Jag vill ha ett bilduppladdningsscript som är säkert och som funkar i så många fall som möjligt med vissa begränsningar Det som saknas i det jag knåpat ihop hittills är: maxstorlek MB, maxstorlek pixlar, check så att endast .jpg eller .gif tillåts samt att man ska kunna skicka med ett meddelande. Det går inte att hämta form-info från textfält och spara direkt till databas när man kör multiform-data-grej va? Eller är jag kvar i ASP-banor nu då man fick göra på ett speciellt sätt..?

Jag funderar även på hur svårt det är att ordna så att väldigt stora filer sparas om till mindre format direkt i uppladdningen. Har sett att en rad sidor använder det systemet. Vilket är mycket smart då långt ifrån alla vet hur man sparar om en fil till rätt storlek osv.

Blir glad för alla förslag hur jag kan utveckla mitt script Eller en länk till ett bra bilduppladdningsscript, trådar om samma ämne osv Min kod hittills. (så hoppas vi att wF inte gör om den allt för mycket...)

Kod:
	if(isset($_FILES['userfile']))
		{
		  // mappen där filerna ska hamna
		$upload_dir = 'bilder/';
		  
		  // kolla om en fil har blivit angiven
		  if(empty($_FILES['userfile']['name']))
			die('Var god välj en fil att ladda upp!');
		  
		  // flytta filen
		  if(is_uploaded_file($_FILES['userfile']['tmp_name']))
			move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_dir.$_FILES['userfile']['name']);
		  // skriv ut ett meddelande
		  echo "<b>Filen ".$_FILES['userfile']['name']." har laddats upp!</b><br><br>Sökväg till bilden: \"bilder/".$_FILES['userfile']['name'];
		}
Mvh, Sebastian
__________________
bassebhu - din kompis bland kompisar

Om du mot förmodan inte är nöjd med kompositionen av ovanstående inlägg,
eller att det helt enkelt inte nådde upp till dina förväntningtar - var god:

Rapportera till bassebhu
bassebhu besöker inte forumet just nu   Svara med citat
Äldre 2004-10-29, 23:33   #2
Pedda
Forumvärd
 
Registrerad: 2000-06-28
Ort: Universums mittpunkt
Inlägg: 4 853
Lösningar: 213
Här kommer några tips.
PHP-kod:
// Ta bort STORA bokstäver mellanslag å ä och ö
$_FILES["userfile"]["name"] = strtolower($_FILES["userfile"]["name"]);
$_FILES["userfile"]["name"] = str_replace(' ''_'$_FILES["userfile"]["name"]);
$_FILES["userfile"]["name"] = str_replace('å''a'$_FILES["userfile"]["name"]);
$_FILES["userfile"]["name"] = str_replace('ä''a'$_FILES["userfile"]["name"]);
$_FILES["userfile"]["name"] = str_replace('ö''o'$_FILES["userfile"]["name"]); 
            
$fil_storlek $_FILES['userfile']['size'];
$fil_typ substr($_FILES["userfile"]["name"], -44);
        
// Godkänn storleken (307200 bytes = 300 kb)    
if ($fil_storlek 307200) {
    
$reg_error[] = 0
}
//  Godkänn filändelsen
if ($fil_typ != ".jpg" && $fil_typ != ".gif" && $fil_typ != "jpeg") {
    
$reg_error[] = 1;
}

// errorlista 
$error_list[0] = "Bilden är för stor. Får max vara 300kb."
$error_list[1] = "Bilden är av fel filtyp. Måste vara JPG, JPEG eller GIF."
$error_list[2] = "Bilden är för bred. Får max vara 600px.";
$error_list[3] = "Bilden är för hög. Får max vara 600px.";
            
if (isset(
$reg_error)){ 
    
// Någon uppgift är fel, skriv ut felmeddelande...
    
echo "Något blev fel:<br>\n"
    echo 
"<ul>\n"
    for (
$i=0$i<sizeof($reg_error); $i++) { 
        
        echo 
"<li>{$error_list[$reg_error[$i]]}</li>\n"
    } 
        echo 
"</ul>\n"
        echo 
"<br><a href=\"javascript:history.back()\">Tillbaka</a>\n";
        exit;

Att skicka med information från samma formulär är inga problem även om det formuläret är satt till enctype="multipart/form-data"
__________________
Om jag var blygsam,skulle jag vara perfekt
><((((º>
Pedda besöker inte forumet just nu   Svara med citat
Äldre 2004-10-30, 22:14   #3
bassebhu
Moderator
 
bassebhus avatar
 
Registrerad: 2001-11-20
Inlägg: 3 989
Lösningar: 36
Schyrre

Men som jag förstått det så skapas tre variabler med ändelserna _name, _size och _type.

Om nu filtypen finns i denna variabel, vore inte det smartare att använda den i en if-sats i stället för:
PHP-kod:
$fil_typ substr($_FILES["userfile"]["name"], -44);
if (
$fil_typ != ".jpg" && $fil_typ != ".gif" && $fil_typ != "jpeg") {
$reg_error[] = 1
Jag menar. Det händer väl att det laddas upp filer utan ändelse i filnamnet. Och om den bara går på ändelsen så kan man väl ladda upp nån annan typ av fil fast med t ex .jpg som ändelse? Vilket inte vore så lyckat.

Tackar för svar.
__________________
bassebhu - din kompis bland kompisar

Om du mot förmodan inte är nöjd med kompositionen av ovanstående inlägg,
eller att det helt enkelt inte nådde upp till dina förväntningtar - var god:

Rapportera till bassebhu
bassebhu besöker inte forumet just nu   Svara med citat
Äldre 2004-10-30, 22:40   #4
Matte
Absent friend
 
Mattes avatar
 
Registrerad: 2000-08-10
Ort: Tingsryd
Inlägg: 2 970
Lösningar: 247
Tyvärr är det väl endast IE (och kanske ytterligare någon/några läsare) som kollar filen för att försöka bedöma rätt mime-typ.

Mozilla/Firefox och Opera kollar endast efter filändelsen och sätter mime-typ efter denna.

Jag tog upp det med Firefox-folket, men de ansåg detta var en säkerhetsrisk hos IE.
__________________
Funktion är vackert
Matte besöker inte forumet just nu   Svara med citat
Äldre 2004-10-30, 22:45   #5
Pedda
Forumvärd
 
Registrerad: 2000-06-28
Ort: Universums mittpunkt
Inlägg: 4 853
Lösningar: 213
Ja, jag har läst otaliga artiklar och forumsinlägg ang hur man bäst kollar filtyp, och alla har haft olika syner på saken.
Så vilket sätt som är bäst vet jag faktiskt inte.
__________________
Om jag var blygsam,skulle jag vara perfekt
><((((º>
Pedda besöker inte forumet just nu   Svara med citat
Äldre 2004-10-30, 23:42   #6
Matte
Absent friend
 
Mattes avatar
 
Registrerad: 2000-08-10
Ort: Tingsryd
Inlägg: 2 970
Lösningar: 247
Är det bilder det handlar om brukar jag göra kontrollen med getimagesize mot $_FILES['userfile']['tmp_name'].
__________________
Funktion är vackert
Matte besöker inte forumet just nu   Svara med citat
Äldre 2006-04-13, 17:59   #7
TomasA
Medlem
 
Registrerad: 2003-02-09
Ort: Bålsta
Inlägg: 184
Lösningar: 1
lugn Hur gör jag enkel formatering i formulärfält?

Hej alla wFare - och mycket God och Glad Påsk!

Har gjort ett nyhetsscript, som andvänds av ganska många i klubben
och det är ju jätttekul, men de flesta kan inte datorscrilt eller html.

Jag vill i inmatningen kunna ha symboler för textformatering
- precis som i just denna inmatingsrutan.

Självklart finns det någon som redan gjort detta typ av script.

Tips mottages tacksamt



Hoppsan mitt inlägg skulle nog ha en egen tråd.
__________________
_/) _/) _/)
// Tomas
TomasA besöker inte forumet just nu   Svara med citat
Äldre 2006-04-13, 18:18   #8
Pedda
Forumvärd
 
Registrerad: 2000-06-28
Ort: Universums mittpunkt
Inlägg: 4 853
Lösningar: 213
http://www.webforum.nu/showthread.ph...79#post1176479

du får använda javascript för att infoga t.ex i formuläret
__________________
Om jag var blygsam,skulle jag vara perfekt
><((((º>
Pedda besöker inte forumet just nu   Svara med citat
Äldre 2006-04-13, 18:33   #9
Pedda
Forumvärd
 
Registrerad: 2000-06-28
Ort: Universums mittpunkt
Inlägg: 4 853
Lösningar: 213
Letade reda på en gammal kod jag skrev för några år sen.
Forumet här klagade på att jag bifogade för många bilder, så jag laddar upp det istället.
Bifogade filer
Filtyp: txt bbcode.txt (9.5 KB, 22 visningar)
__________________
Om jag var blygsam,skulle jag vara perfekt
><((((º>
Pedda besöker inte forumet just nu   Svara med citat
Svar
webForum > Utveckling > Webbutveckling > PHP

Trådverktyg
Visningsalternativ

Forumregler
Du får inte posta nya trådar
Du får inte posta svar
Du får inte bifoga filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är av
HTML-kod är av

Forumhopp


Alla tider är i GMT +1. Klockan är nu 05:17.


Powered by: vBulletin Version 3.8.6
Copyright © webForum