Kjapp og trygg hosting for Wordpress

Bildeopplastningsscript - free of charge

selbekk

Medlem
Dette scriptet ble i utgangspunktet kodet for codecanyon, men de mente det ikke var komplekst nok for deres sider. Så derfor gir jeg det heller til dere her.

Du kan laste ned filene her, og se en demonstrasjon her.

Det dette scriptet i hovedsak gjør, er å laste opp et bilde, gi det en dato-tag i filnavnet (for å sikre seg mot navn-kollisjoner og lagre opplastningstidspunktet), og generere en thumbnail. Man kan velge om man vil beholde proposjonene til bildet i thumbnailen (perfekt for in-site bruk) eller om man vil produsere thumbnails i et kvadratisk format, med en bakgrunn (som også fritt kan velges).

Alt stilles inn i en separat settings.php fil, så man trenger minimalt med teknisk kunnskap for å bruke dette programmet.

Det eneste jeg ber om hvis du vil bruke dette scriptet på din side, er at du gir meg en back-link til enten denne bloggen (selbeezy.blogg.no) eller firmaet mitt (sweetwater.no) et sted på siden din.

Trenger du hjelp med innstallasjon, så er det bare å ta kontakt her på forumet.

Lykke til!

(hentet fra selbeezy -)
 

Mr Vest

Sjefen over alle sjefer!
Du spør rett ut, og svaret kommer rett ut. Nei, scriptet var ikke no bra. Ikke på noen måte.

Altså, hva mer er dette enn en form samt noen linjer med kode som behandler informasjonen i formen? Når jeg ikke velger bilde i formen, og klikker "upload please" kommer det helt øverst en melding... "Error" etterfulgt av "Picture uploaded, og informasjon om en thumbnail som ikke finnes.

Sånn seriøst? Du er ikke fornøyd med dette selv?
 

selbekk

Medlem
synes det fungerer greit jeg. Skal fikse den lille error-meldingen, en liten glipp fra min side. Synd du ikke likte det, personlig lette jeg lenge etter noe som kunne gjøre samme nytten og var enkelt å implementere. Fant det ikke, så laget det selv.

Du spør hva mer dette er en et form og noe kode? Vel, det "koden" min gjør er å produsere en thumbnail av valgte proporsjoner og størrelse om man ønsker det, samt å laste opp bildet på en forsvarlig måte. Brukte en god del tid på å sikre det mot forskjellig angrep også, så det burde være sikkert for de aller fleste.

Synd du er så negativt innstilt. Har du noen gode forbedringsforslag til koden som kunne gjøre det mer brukervennlig?
 

Mr Vest

Sjefen over alle sjefer!
Det er for del ikke meningen med en negativ tone. Jeg kunne kanskje ordlagt meg på en annen måte i forige innlegget her, men gjort er gjort. Det ville jo vært det samme jeg hadde ment, uansett hvordan jeg hadde ordlagt meg.

Når det gjelder koden vil jeg ikke si så mye. Jeg personlig syns det var litt mye kode, men nå er jeg enda på et amatørnivå innenfor PHP. Derimot, feil av typen du har på error er jo typisk småfeil som overhodet ikke burde være et script du vil ha noe igjen for. Om du hadde gitt bort et script med slike småfeil uten og ville ha noe igjen for det ville det derimot ikke gjort noe særlig om en liten bug var her og der.

Scriptet gjør tross alt jobben sin, som er å laste opp bildet. Derimot, kvalitet skal ikke inneholde feil. Lager du hva som helst du tenker at andre skal bruke, da syns jeg faktisk at en grundig sjekk av hele systemet burde vært tatt før det havner så pent i "klart-for-levering"-kategorien. :)

Av nysjerrighet; Hva er det du har gjort for og forhindre angrep?
 

Pong

Jeg selger sʇɥƃıluʍop :)
Jeg synes skriptet er bra, men jeg lagde noe lignende en stund siden, så har ikke behov.

Har kikket litt på koden og det ser bra ut (formattert og dokumentert). Noen tips:
- ikke bruk doble quotes med mindre du bruker de som f.eks. $t = "Hei $navn"
- sjekk om filen er et bilde eller ikke basert på innholdet, ikke filetternavn (funksjon get_mimetype); kanskje aktuelt med denne "flash trojan"-saken?
- urlProofString: i tillegg til å bytte om noen kjente ulovlige tegn er det sikkert også en ide å strippe bort alle tegn som du ikke vil ha med i filnavnet (japanske tegn osv?)

Men god kode synes jeg.
 

selbekk

Medlem
Mr Vest, jeg tok en titt til på koden min nå. "Feilen" som du peker ut, er ikke et feil i selve scriptet. Det var kun en glemt if-test i eksempelet mitt som skapte dette problemet. Slik jeg ser det, vil de fleste brukerne av dette scriptet putte det inn som en del av en større programkode. Adresser lagres i databaser osv. :) Derfor er ikke dette en bug jeg la merke til da jeg skrev scriptet - det er nemlig ikke en del av det.

Angående det du nevnte om at det er mye kode, er det to ting jeg vil nevne. For det første er denne koden utviklet for et veldig generelt bruk. Det tar noen ekstra linjer med kode. For det andre, er det veldig lite kode utvikleren trenger å skrive. Noen innstillinger i settings.php og en linje php der det skal implementeres, og that's it. =)

Og jeg vil ikke ha noe igjen for bruk av dette scriptet. Tvert i mot - jeg gir det vekk gratis! :) Om noen vil linke tilbake, er det jo bare hyggelig, men intet krav.

Pong - takk for god tilbakemelding. Bruken av double quotes er mer en uvane enn noe annet, men jeg har faktisk å kode med en litt annen stil nå, hvor bruk av double quotes blir litt mer tilbaketrukket.

Godt poeng det å sjekke om bildet faktisk er et bilde. Hvordan kan jeg sjekke dette?

Jeg har også gjort en liten forbedring i forhold til å fjerne ulovlige tegn. Jeg bruker iconv-funksjonen til PHP, og mener dette burde gi en god forbedring i tillegg til kodene som allerede er lagt inn.

En oppdatert versjon er nå lastet opp.
 

Pong

Jeg selger sʇɥƃıluʍop :)
Du kan ikke stole på filetternavn, og heller ikke på mime-type.
Du kan prøve dette:
PHP:
$target_path = "/home/path/to/uploadfolder/";
$target_path = $target_path . basename( $_FILES['picture']['name']);

if(!empty($_FILES['picture']['tmp_name'])) {
   $size = getimagesize($_FILES['picture']['tmp_name']);
   if($size[2] & imagetypes()) {  // note use of bitwise "&" operator, not "&&"
      if(move_uploaded_file($_FILES['picture']['tmp_name'], $target_path)) {
         //it's valid and moved
      }
   }
   else {
      // invalid file type -- not a recognized image type
   }
}
 
Topp