Avatar billede Scriptstudio Nybegynder
25. december 2009 - 18:05 Der er 8 kommentarer og
1 løsning

Problem med billed upload

Denne upload formel vil gerne tilføge til mysql men ikke til min mappe "upload" på ftp serveren?

nogen der kan se problemmet og hjælpe med det?

Filen:
<?php
session_start();
if(!$_SESSION['log_done'] == 1) {//Hvis brugeren ikke er logget in
header("Location: index.php");//Sender brugeren videre
exit;//Sørger for at resten af koden, ikke bliver udført
}
?>
<?
$kat = 1;
include "mysql.php";
include "config.php";
        $upload_dir = "./upload/";
       
        // CHECK FOR DIR //
        if(!is_dir($upload_dir))     mkdir($upload_dir, 0777); // 0700 FREE FOR ALL // -> 0777 WORKAROUND FOR SAFEMOD //
   
    $submit = $_POST['submit'];

    if(isset($submit)){
   
       
            $temp_name = $_FILES['file']['tmp_name'];
            $file_name = $_FILES['file']['name'];
            $file_type = $_FILES['file']['type'];
            $file_size = $_FILES['file']['size'];
            $ext       =  strrchr($file_name, ".");
               
            $file_path = $upload_dir.$file_name;
            $max_size  = 2000000; // Bytes
           
        if(isset($_POST['file'])) {
       
           
        } else {
            $epoch = time();
            $url = $_POST['url'];
           
            if(empty($url)) {
                   
                    if($file_size == 0){
                echo "Du mangler at vælge en fil";
            }
            elseif (($ext != ".jpg")  && ($ext != ".jpeg") && ($ext != ".png") && ($ext != ".gif"))
            {
                echo "Kun billed filer <b>( $ext )</b>";
            }
            elseif($file_size > $max_size)
            {
                echo "Filen er for stor \n";
           
            }
            elseif(move_uploaded_file($temp_name, $file_path))
            {
                chmod($file_path, 0755);
            }
                   
                    $file_name2 = str_replace(" ", "%20", $file_name);
                    $url_real = "" .$upload_dirik . "/upload/" . $file_name2 . "";
                    $upload = 1;
                    $text = "Filen er uploadet";
                } else {
                    $url_real = $url;
                    $upload = 0;
                    $text = "Deeplinket er blevet lavet!";
                }
           
            mysql_query("INSERT INTO `gallery_billeder` (`navn`, `beskrivelse`, `url`, `epoch`, `kat_id`) VALUES ('$_POST[navn]', '$_POST[beskrivelse]', '$url_real', '$epoch', '$_POST[kat]');") or die(mysql_error());
            echo "" . $text . "";
        }
   
    } else {
   
   
        // FORM //
    echo "<form name=\"form\" method=\"post\" action=\"$PHP_SELF?page=admin/billeder/bil_skriv.php\" enctype=\"multipart/form-data\">";
   
    echo "Navn:<br>
    <input type='text' name='navn' style='width: 244px;' class='text'><br>
    Fil:<br>
    <INPUT type=file name=\"file\" style='width: 244px;' class='text'><br>
    Kategori:<br><select size='1' name='kat'>";
   
    $rev = mysql_query("SELECT * FROM `gallery_kat` ORDER BY navn ASC") or die(mysql_error());
    while($data32 = mysql_fetch_array($rev))
    {
        echo "<option value='" . $data32['id'] . "'>" . $data32['navn'] . "</option>";
    }
   
    echo "</select><br>
    Beskrivelse:<br>
    <textarea name='beskrivelse' style='width: 344px; height: 244px;'></textarea>";
   
    echo "<br><br>";
   
    echo "<input type=\"submit\" name=\"submit\" value=\"Upload\">";
   
    echo "</form>";
   
    }
    ?>
Avatar billede showsource Seniormester
25. december 2009 - 19:45 #1
Brug chmod() lige efter mkdir()
Bortset fra det, ville jeg lave tjek/oprettelse før alt andet, så hvis det med dir fejler, dør scriptet.

Findes dir ?
ja, => Tjek for skriverettigheder
Nej, = Lav dir, chmod(), og tjek for skriverettigheder


Resten af script...
Avatar billede Scriptstudio Nybegynder
25. december 2009 - 19:51 #2
hvad mener du lige?
Avatar billede showsource Seniormester
25. december 2009 - 20:06 #3
Ehh, før noget som helst, også session_start(), ville jeg bruge

is_dir()
is_writable()

og evt.

mkdir() og chmod()

før noget andet, for at være sikker på der er dit at uploade til.

Men selve dit problem kan du nok nøjes med at bruge
chmod($upload_dir, 0777);

efter din is_dir()
Avatar billede Scriptstudio Nybegynder
25. december 2009 - 22:49 #4
kan du prøve at indsætte det i koden?
Avatar billede showsource Seniormester
26. december 2009 - 13:27 #5
eehhhh,

        // CHECK FOR DIR //
        if(!is_dir($upload_dir))    mkdir($upload_dir, 0777); // 0700 FREE FOR ALL // -> 0777 WORKAROUND FOR SAFEMOD //

chmod($upload_dir, 0777);
   
    $submit = $_POST['submit'];
Avatar billede Scriptstudio Nybegynder
26. december 2009 - 16:13 #6
har prøvet at sætte ind på denne måde men det hjalp ikke noget..

        // CHECK FOR DIR //
        if(!is_dir($upload_dir))     mkdir($upload_dir, 0777); // 0700 FREE FOR ALL // -> 0777 WORKAROUND FOR SAFEMOD //
       
    chmod($upload_dir, 0777);

    $submit = $_POST['submit'];

    if(isset($submit)){

Filen config.php:

<?
// Ændre dem her til det passer dig!
//----------------------------------

// upload
$upload_dirik = "http://www.scriptstudio.dk/galleri/upload"; // Skriv genvejen til gallery scripet!

?>

ved ikke om det kan hjælpe noget?
Avatar billede Scriptstudio Nybegynder
26. december 2009 - 16:18 #7
showsource smid et svar har fået det til at virke nu, tak for hjælpen...
Avatar billede showsource Seniormester
26. december 2009 - 17:08 #8
Ok
Præcis hvad var problemet så ?
Avatar billede Scriptstudio Nybegynder
26. december 2009 - 17:51 #9
altså jeg satte dit stykke af koden ind som du har set, men hver gang jeg prøvede at sætte upload mappen til 777 i dreamweaver, så lavede den det om igen, så prøvede jeg at lave det om inde i stiffinder til min ftp.
Det hjalp også fik jeg sat dir til upload rigtigt..

tak for din hjælp.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester