_Paulsen_ Skrevet 4. september 2006 Del Skrevet 4. september 2006 (endret) OPPDATERT MED NY KODE OG TEKST! Heisann! Jeg sliter med å finne ut hva feilen i dette scriptet mitt er... Hovedsaken er at jeg skal la en bruker få laste opp et bilde til en katalog på serveren i det brukeren trykker på knappen for å lage en nyhet.. Det som er saken, er at nyheten blir lagt til, men intet bilde er å finne.. Sjekken godkjenner at alt er som det skal, ettersom nyheten blir lagret... Noen som har en anelse om hvor feilen kan ligge? Til opplysning så heter input-feltet til bildet "filbane" i formet for å legge til en nyhet.. Mappen "nyhetsbilder" har også korrekte rettigheter.. <?php if($submit_nyhet) { include ("makedbconn.php"); $bildefil = ""; //bildefil lagres i databasen if( !empty($_FILES['filbane']['name']) ) { //$temp_fil er et midlertidig navn bestemt i php.ini $temp_fil = $_FILES['filbane']['tmp_name']; //Blir for eksempel bilder/navn.jpg //må derfor kopiere fra denne over til et kjent sted/navn $filtype = $_FILES['filbane']['type']; //mimetypen if ( strstr($filtype, "jpg") ){ //godtar bare jpeg-filer $bildefil = $_FILES['filbane']['name']; copy($temp_fil, "nyhetsbilder/" . $bildefil) or die ("Kunne ikke kopiere bildet!"); } }//if, ferdig med å kopiere fil og lagre i databasen $sql = "INSERT INTO nyhet (tittel,ingress,brodtekst,bildenavn,aar,dag,maaned) VALUES ('$tittel', '$ingress', '$brodtekst', '$bildefil', '$aar', '$dag', '$maaned' )"; $result = mysql_query($sql) or die("Her var det noe som gikk galt..: " . mysql_error()); if ($result) { echo "<h3>Nyheten ble korrekt opprettet, og vises nå på forsiden av bloggen.</h3>"; echo "<p>Du vil nå automatisk returnere tilbake til adminpanelet, eller du kan gjøre det selv ved å trykke <a href='javascript:history.go(-1)'>her</a>.</p>"; echo "<META HTTP-EQUIV=\"refresh\" content=\"3;URL=admin.php\">"; } // Stenger mysql mysql_close(); } else { die("Kunne ikke koble til: " . mysql_error()); } ?> Endret 14. september 2006 av Gabi Heinze Lenke til kommentar
kakkle Skrevet 4. september 2006 Del Skrevet 4. september 2006 Feilmeldingen hadde jo vært fin å se, da Husk at mappen bilder må være lov å laste opp til. /k Lenke til kommentar
_Paulsen_ Skrevet 4. september 2006 Forfatter Del Skrevet 4. september 2006 (endret) Fjernet denne grunnet oppdatering av post.. Endret 10. september 2006 av Gabi Heinze Lenke til kommentar
_Paulsen_ Skrevet 10. september 2006 Forfatter Del Skrevet 10. september 2006 Ingen som kan hjelpe meg, tro? Lenke til kommentar
endrebjo Skrevet 10. september 2006 Del Skrevet 10. september 2006 strstr() er case-sensitiv. Dvs. at den gjør forskjell på jpg og JPG. Mange lagrer bilder med JPG som filendelse istedetfor jpg. stristr() er derimot case-insensitiv. Lenke til kommentar
_Paulsen_ Skrevet 11. september 2006 Forfatter Del Skrevet 11. september 2006 Så du tror det kan være feilen? Jeg vet hvertfall at jeg laster opp bilder med korrekt bildeformat... Lenke til kommentar
endrebjo Skrevet 11. september 2006 Del Skrevet 11. september 2006 (endret) Det er verdt et forsøk. Mulige (og gyldige) filendelser på JPEG-bilder kan være: .jpg, .jpeg, .JPG, .JPEG Også kan du prøve å utvide feilsøkingen litt med å legge inn f.eks noe sånt: if ( strstr($filtype, "jpg") ){ //godtar bare jpeg-filer $bildefil = $_FILES['filbane']['name']; copy($temp_fil, "nyhetsbilder/" . $bildefil) or die ("Kunne ikke kopiere bildet!"); } else { echo "La IKKE til noe bilde. \$filetype = {$filetype}, \$bildefil = {$bildefil}"; } Og se hva den printer ut. Endret 11. september 2006 av endrebjorsvik Lenke til kommentar
_Paulsen_ Skrevet 11. september 2006 Forfatter Del Skrevet 11. september 2006 Testet det også, men det hjalp ikke stort Nyheten blir korrekt lagt til, men uten bilde.. Synes det er litt snodig faktisk... Lenke til kommentar
endrebjo Skrevet 11. september 2006 Del Skrevet 11. september 2006 Det kan tyde på at den ikke trigger i if nr. 2. Da er det bare til å legge inn enda mer else og se hva den kommer ut med. if (!empty($_FILES['filbane']['name']) ) { //$temp_fil er et midlertidig navn bestemt i php.ini $temp_fil = $_FILES['filbane']['tmp_name']; //Blir for eksempel bilder/navn.jpg //må derfor kopiere fra denne over til et kjent sted/navn $filtype = $_FILES['filbane']['type']; //mimetypen if ( strstr($filtype, "jpg") ){ //godtar bare jpeg-filer $bildefil = $_FILES['filbane']['name']; copy($temp_fil, "nyhetsbilder/" . $bildefil) or die ("Kunne ikke kopiere bildet!"); } else { echo "La IKKE til noe bilde. \$filetype = {$filetype}, \$bildefil = {$bildefil}"; } } else { echo "Fil fra 'filbane' er IKKE satt.<br> \$_FILES['filbane']['name'] = {$_FILES['filbane']['name']} <br> \$_FILES['filbane']['tmp_name'] = {$_FILES['filbane']['name']} <br> \$_FILES['filbane']['type'] = {$_FILES['filbane']['name']}"; } Lenke til kommentar
_Paulsen_ Skrevet 12. september 2006 Forfatter Del Skrevet 12. september 2006 Jeg testet den siste kodesnutten din, Endre, og den slo til på den siste else'en, "Fil fra 'filbane" er IKKE satt..." osv... Det vil da si, at den finner ikke bildet når man trykker registrer nyhet da, mao? Eller er jeg helt på bærtur nå? Lenke til kommentar
kakkle Skrevet 13. september 2006 Del Skrevet 13. september 2006 Det vil da si at $_FILE['filbane']['name'] er tom 1. sjekk at form tagen har rette attributter: <form enctype="multipart/form-data" action="__URL__" method="POST"> 2. sjekk at file input feltet heter filbane. 3. sjekk at inputfeltet er av typen file <input type='file' name='filbane'> Les evt mer om fil opplastinger på php.net sine sider Lenke til kommentar
_Paulsen_ Skrevet 13. september 2006 Forfatter Del Skrevet 13. september 2006 Det vil da si at $_FILE['filbane']['name'] er tom 1. sjekk at form tagen har rette attributter: <form enctype="multipart/form-data" action="__URL__" method="POST"> 2. sjekk at file input feltet heter filbane. 3. sjekk at inputfeltet er av typen file <input type='file' name='filbane'> Les evt mer om fil opplastinger på php.net sine sider 6853727[/snapback] Fant fort ut at jeg hadde glemt å legge til følgende i formet: <form enctype="multipart/form-data" action="__URL__" method="POST"> Når jeg gjorde dette, hoppet den over den siste else-setningen, og skrev ut: echo "La IKKE til noe bilde. \$filetype = {$filetype}, \$bildefil = {$bildefil}"; Inputfeltet heter filbane og typen er satt til å være file ja, så der er det hvertfall ingen mangler. Lenke til kommentar
kakkle Skrevet 13. september 2006 Del Skrevet 13. september 2006 Den skrev vel ikke ut akkurat det ? Mulig årsaker nå: Filendelsen på bildet er ikke jpg, eller filendelsen på blidet er jpg, men har ikke bare små bkostaver. Bytt ut denne: if ( strstr($filtype, "jpg") ) med denne: if ( stristr($filtype, "jpg") ) (Som også er nevnt av endre lengre opp i tråden) Og pass på at bildene har filendelsen jpg, og ikke f.eks jpeg. Evt så kan du tillate flere endelser... Eller så får du poste det som kommer ut av : echo "La IKKE til noe bilde. \$filetype = {$filetype}, \$bildefil = {$bildefil}"; Lenke til kommentar
_Paulsen_ Skrevet 14. september 2006 Forfatter Del Skrevet 14. september 2006 (endret) Har nå testet med å bytte ut dette: if ( strstr($filtype, "jpg") ) med denne: if ( stristr($filtype, "jpg") ) uten at dette hjalp nevneverdig! Bildet som jeg tester å laste opp har filendelsen .jpg, så det skal ikke være der problemet ligger. Det eneste som kommer ut av denne koden: echo "La IKKE til noe bilde. \$filetype = {$filetype}, \$bildefil = {$bildefil}"; er dette her: La IKKE til noe bilde. $filetype = {}, $bildefil = {} Med andre ord, skriver den ut de to variablene som tomme, ettersom ingenting ble lagt til.. Endret 14. september 2006 av Gabi Heinze Lenke til kommentar
kakkle Skrevet 14. september 2006 Del Skrevet 14. september 2006 (endret) Okei. Det er fordi variabelen jeter $filtype og ikke $filetype, samt at du må bytte om på disse to linjene: if ( strstr($filtype, "jpg") ){ //godtar bare jpeg-filer $bildefil = $_FILES['filbane']['name']; $bildefil er ukjent i else setningen, dersom den blir definert inni if blokken. Ser også nå at $filtype innholder ikke endelsen på filen, men mimetypen, og mimetypen til filer med jpg endelse er image/jpeg. Du må derfor endre fra jpg til jpeg i if setningen din. Så tenker jeg du har løst hele problemet EDIT: Dersom det ikke hadde vært for den lille stavefeilen, så hadde du sikkert funnet ut av dette selv, kanskje ? EDIT2: Dersom du heller vil godta alle bildetyper som gif og png også, så kan du endre fra jpg til image. Da vil vel alle bildetyper bli godtatt (bmp, png, gif, jpeg, tif, Endret 14. september 2006 av kakkle Lenke til kommentar
_Paulsen_ Skrevet 14. september 2006 Forfatter Del Skrevet 14. september 2006 AAHHHHH :D Du er en engel, rett og slett! Fantastisk! Lett å se seg blind på egen kode skal jeg si deg, utrolig moro at folk gidder å hjelpe folk i nød! Men et kjapt spørsmål til; hvordan kan jeg godkjenne flere bildetyper enn bare .jpg? Lenke til kommentar
kakkle Skrevet 14. september 2006 Del Skrevet 14. september 2006 (endret) EDIT2: Dersom du heller vil godta alle bildetyper som gif og png også, så kan du endre fra jpg til image. Da vil vel alle bildetyper bli godtatt (bmp, png, gif, jpeg, tif, if ( stristr($filtype, "jpeg") || stristr($filtype, "gif") || stristr($filtype, "png")){ //godtar bare jpeg, gif, png-filer Evt bruk image som nevnt. Da blir alle disse godtatt: image/bmp bmpimage/cis-cod cod image/gif gif image/ief ief image/jpeg jpe image/jpeg jpeg image/jpeg jpg image/pipeg jfif image/tiff tif image/tiff tiff image/x-cmu-raster ras image/x-cmx cmx image/x-icon ico image/x-portable-anymap pnm image/x-portable-bitmap pbm image/x-portable-graymap pgm image/x-portable-pixmap ppm image/x-rgb rgb image/x-xbitmap xbm image/x-xpixmap xpm image/x-xwindowdump xwd Endret 14. september 2006 av kakkle Lenke til kommentar
_Paulsen_ Skrevet 14. september 2006 Forfatter Del Skrevet 14. september 2006 Så ikke den andre editen din skjønner du Mener jeg prøvde på akkurat den kildekoden du skrev nå, og da funket det ikke så veldig bra.. Kan kanskje ha noe med at det var et annet script jeg testet det på da. Uansett, hjertlig takk skal du ha Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå