Avatar billede den-evil Nybegynder
30. maj 2007 - 08:16 Der er 32 kommentarer

opretter stien, men ikke filerne?

Har et script der gør man kan uploade filer til sit site, men det ser ikke helt ud til at virke...

Den smider det fint i databasen, og den opretter også stien, men den opretter bare aldrig det man uploader....

<? session_start(); ?>
<? include("../includes/cnx.php"); ?>
<? include("../includes/rtrnfuncs.php"); ?>
<?
//Hent variabler

$Doc_ID = $_REQUEST['doc_id'];

?>
<body style="background-color: #f3f3f3;">
<link href="../css/main.css" rel="stylesheet" type="text/css" />
<table width="450" border="0" cellspacing="3" cellpadding="0" style="border:1px solid #e3e3e3;">
  <tr>
    <td>
<?
$Doc_ID = $_REQUEST['doc_id'];


if($_REQUEST['slet'] == "slet") {
        $oldidfiler = mysql_escape_string($_REQUEST['idfiles']);

        $SQL = "SELECT * FROM files WHERE idfiles = $oldidfiler";
        $mq_oldfil = mysql_query($SQL) or die(mysql_error());
        $oldfil_arr = mysql_fetch_assoc($mq_oldfil);

        // Description er egentlig filnavnet
        // Filename er egentlig beskrivelsen

        $oldfil = $oldfil_arr['description'];
       
        unlink("../../filer/$oldidfiler/" . $oldfil);
        $SQL = "DELETE FROM files WHERE idfiles = '$oldidfiler'";
        //echo $SQL;
        $mq = mysql_query($SQL) or die(mysql_error());
       
   
}
    if($_REQUEST['submit'] == "Tilfj fil") {
   
    if ($_FILES['bilag']['size'] == 0) {
    ?>
        <script language="JavaScript" type="text/javascript">
        alert('Du skal vlge en fil!');       
        </script>
        <?
    }
    elseif ($_REQUEST['beskrivelse'] == "") {
    ?>
        <script language="JavaScript" type="text/javascript">
        alert('Du skal lave en beskrivelse');       
        </script>
        <?
    } else {
       
        $desc = mysql_escape_string($_REQUEST['beskrivelse']);
        $filename = mysql_escape_string($_FILES['bilag']['name']);
        $sql = "INSERT INTO files (doc_id, filename, description) VALUES ('$Doc_ID','$desc','$filename')";
       
        echo '<script>alert('.$sql.');</script>';
       
        mysql_query($sql) or die(mysql_error());
       
        $fileid = mysql_insert_id();
       
               
        if (! file_exists("../../filer/$fileid")) {
            mkdir("../../filer/$fileid");
        }
       
        move_uploaded_file($_FILES['bilag']['tmp_name'],"../../filer/$fileid/" . $_FILES['bilag']['name']);       

    }
}
?>
          <form enctype="multipart/form-data" action="edit-file.php" method="post">
          <input type="hidden" name="doc_id" value="<?=$Doc_ID?>" />
          <table cellspacing="4" cellpadding="0" border="0" width=450>
            <tr>
            <td colspan=2><strong>Eksisterende filer</strong></td>
            </tr>           
            <?
            $SQL = "SELECT * FROM files WHERE doc_id = $Doc_ID";
            $mq_gf = mysql_query($SQL) or die(mysql_error());
            if (mysql_num_rows($mq_gf) > 0) {
            ?> <tr><td colspan=2><ul>
            <?
            while ($fil = mysql_fetch_assoc($mq_gf)) {
            ?>
            <li>
            <?=$fil['description']?>  <?=$fil['filename']?> <a href="edit-file.php?doc_id=<?=$Doc_ID?>&slet=slet&idfiles=<?=$fil['idfiles']?>"><img src="../images/delete.gif" alt="Slet" title="Slet" border="0">
            </a></li>
            <?
                }
            ?>
            </ul>
                </td>
            </tr>
            <?
            } else {?>
            <tr>
            <td colspan=2>Ingen</td>
            <?
            }
            ?>
            <tr>
            <td colspan=2 bgcolor="#e3e3e3"></td>
            </tr>
           
            <tr>
            <td colspan=2><strong>Tilfj ny fil</strong></td>
            </tr>
            <tr>
              <td width="86">
              Filnavn:              </td>
              <td width="242"><input type="file"  name="bilag" style="width:300px;" />
              </td>
            </tr>
            <tr>
              <td>
              Beskrivelse:
              </td>
              <td><input type="text" name="beskrivelse" style="width:300px;" />
              </td>
            </tr>
        </table>
          <input type="submit" name="submit" value="Tilfj fil" />
      </form></td>
  </tr>
</table>
</body>
Avatar billede michael_stim Ekspert
30. maj 2007 - 08:19 #1
Uden at have läst din kode igennem. Har du chmod'et (givet rettigheder) den mappe du smider tingene i?
Avatar billede den-evil Nybegynder
30. maj 2007 - 08:36 #2
Ja, har jeg gjort
Avatar billede jakobdo Ekspert
30. maj 2007 - 08:53 #3
Hvem kommer til at eje den mappe som bliver oprettet?
Avatar billede den-evil Nybegynder
30. maj 2007 - 08:56 #4
Hvad mener du ?
Avatar billede jakobdo Ekspert
30. maj 2007 - 09:05 #5
Om det er dig som ejer filen eller web-serveren!
Avatar billede den-evil Nybegynder
30. maj 2007 - 09:14 #6
Altså webserveren er ved surftown...

Men det virker fint nok med at uploade billeder via et script, så har mulighed for at smide ting op på serveren, men dette script vil bare ik funge, og kan sq ik helt se nogle fejl i det ?
Avatar billede jakobdo Ekspert
30. maj 2007 - 09:29 #7
Hvilke rettigheder har mappen du opretter?
Avatar billede den-evil Nybegynder
30. maj 2007 - 09:37 #8
jeg har chmod til 777
Avatar billede jakobdo Ekspert
30. maj 2007 - 09:47 #9
Og får du også lov til det?
Avatar billede den-evil Nybegynder
30. maj 2007 - 09:53 #10
Den kommer ikke med en fejl i hvertfald?
Avatar billede jakobdo Ekspert
30. maj 2007 - 10:15 #11
chmod'er du via php eller ftp?
Avatar billede den-evil Nybegynder
30. maj 2007 - 10:26 #12
det gør jeg via ftp
Avatar billede jakobdo Ekspert
30. maj 2007 - 10:36 #13
Og, og hvis du efterfølgende vælger filen og klikke chmod, står den så faktisk til 777 ?
Avatar billede den-evil Nybegynder
30. maj 2007 - 10:38 #14
det er vel ikke filen, men mappen "filer" jeg skal chmode? - Den står i hvertfald til 777
Avatar billede jakobdo Ekspert
30. maj 2007 - 11:04 #15
Det er mappen som oprettes her:

mkdir("../../filer/$fileid");

Den mappe, hvilke rettigheder har den?
Avatar billede den-evil Nybegynder
30. maj 2007 - 11:11 #16
mappen filer er chmod til 777
Avatar billede den-evil Nybegynder
30. maj 2007 - 11:13 #17
kan nemlig ikke chmode filer/$fileid -> da den først bliver oprettet når scriptet køres ?
Avatar billede michael_stim Ekspert
30. maj 2007 - 11:13 #18
Hvor store er filerne og hvad er det for slags?
Avatar billede den-evil Nybegynder
30. maj 2007 - 11:23 #19
det er alt fra jpg, pdf, mp3, gif, doc osv osv...
Avatar billede michael_stim Ekspert
30. maj 2007 - 11:32 #20
Men pröver du med alle? De må ikke väre over 2 MB.
Avatar billede den-evil Nybegynder
30. maj 2007 - 11:35 #21
Det er med alle filer, uanset hvad de fylder
Avatar billede jakobdo Ekspert
30. maj 2007 - 11:38 #22
Men efter sceriptet er kørt, bliver mappen så oprettet korrekt?
Avatar billede den-evil Nybegynder
30. maj 2007 - 11:44 #23
jaja, mappen bliver fint oprettet, bare ikke filen
Avatar billede jakobdo Ekspert
30. maj 2007 - 11:56 #24
Den mappe som oprettes, hvilke rettigheder har den så? :o)
Avatar billede den-evil Nybegynder
30. maj 2007 - 12:03 #25
Umiddelbart vil jeg sige ingen fordi den bliver oprettet dynamisk ? - Men hvordan giver jeg så den rettigheder ?
Avatar billede michael_stim Ekspert
30. maj 2007 - 12:14 #26
if (! file_exists("../../filer/$fileid")) {
            mkdir("../../filer/$fileid");
chmod("dir/".$fileid,0777);
        }
Måske
Avatar billede michael_stim Ekspert
30. maj 2007 - 12:15 #27
Troede det var den der var chmod'et til 777. Man skal altid kigge i den mappe filerne skal uploades til.
Avatar billede michael_stim Ekspert
30. maj 2007 - 12:16 #28
Og "dir" skal selvf. rettes til der hvor mappen bliver oprettet.
Avatar billede jakobdo Ekspert
30. maj 2007 - 12:35 #29
Det er dog ikke altid php har de rigtige rettigheder og kan oprette og chmod'e en mappe til 777.
Avatar billede den-evil Nybegynder
30. maj 2007 - 13:12 #30
har det til at se sådanne ud nu, men virker stadig ikke:

$fileid = mysql_insert_id();
       
               
        if (! file_exists("../../filer/$fileid")) {
            mkdir("../../filer/$fileid");
            chmod("../../filer/".$fileid,0777);
        }
       
        move_uploaded_file($_FILES['bilag']['tmp_name'],"../../filer/$fileid/" . $_FILES['bilag']['name']);
Avatar billede den-evil Nybegynder
30. maj 2007 - 13:13 #31
Og har lige checket iftp om den mappe jeg har chmod via php også er det i ftp, og det er den...
Avatar billede jakobdo Ekspert
30. maj 2007 - 15:35 #32
Prøv lige at test denne kode:

<?php

$filename = 'test.txt';
$dirname  = '/noget/';
$content  = "Add this to the file\n";

mkdir($dirname);
chmod($dirname, 777);

if (is_writable($filename))
{
    if (!$handle = fopen($filename, 'a'))
    {
        echo "Cannot open file ($filename)";
        exit;
    }

    if (fwrite($handle, $content) === FALSE)
    {
        echo "Cannot write to file ($filename)";
        exit;
    }
 
  echo "Success, wrote ($content) to file ($filename)";
 
    fclose($handle);

}
else
{
    echo "The file $filename is not writable";
}
?>

Er stjålet fra www.php.net og redigeret lidt.
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