Avatar billede aslan Nybegynder
27. februar 2003 - 14:07 Der er 24 kommentarer og
1 løsning

Smide billeder i db?

Nedestående script virker udmærket når jeg kører de lokalt, men når jeg forsøger mig på en webserver giver den fejl. Jeg har forsøgt mig med 2, og de gav begge samme fejl:
-------------------------------------------------------
Warning: open_basedir restriction in effect. File is in wrong directory in /usr/www/haslevvejensauto/public_html/edit/nyheder/upload.php on line 11

Warning: fopen("/tmp/php6YZhol", "r") - Operation not permitted in /usr/www/haslevvejensauto/public_html/edit/nyheder/upload.php on line 11

Warning: Supplied argument is not a valid File-Handle resource in /usr/www/haslevvejensauto/public_html/edit/nyheder/upload.php on line 11

Warning: Cannot add header information - headers already sent by (output started at /usr/www/haslevvejensauto/public_html/edit/nyheder/upload.php:11) in /usr/www/haslevvejensauto/public_html/edit/nyheder/upload.php on line 16
--------------------------------------------------------

Scriptet:

<?
include("../../config.php");
if(!empty($gem))
{
    if(!empty($form_data)) 
    {  // Data tilrettes
        $data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
    }         
    $query ="insert into billede (billede,filetype,filename,filesize,billedId) values('$data','$form_data_name','$form_data_size','$form_data_type','$id')";
        mysql_query($query) or die(mysql_error());
               
        header("location:billedsamling.php?antal=$nr&bilId=$id");

} else
{
?>
    <form method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
    <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000000">
        <INPUT TYPE="hidden" name="id" value="<? echo $id ?>">
        <INPUT TYPE="hidden" name="nr" value="<? echo $nr+=1 ?>">
    <br>Find billede:<br>
    <input type="file" name="form_data"  size="40">
    <p><input type="submit" name="gem" value="Gem">
    </form>
<?php
}
?>

--------------------------------------------------------

Kan nogen fortælle mig hva jeg gør galt... eller vise mig et andet script der virker online?
Avatar billede avminarm Juniormester
27. februar 2003 - 14:13 #1
har du husket at chmod det dir hvortil filerne uploades til?
Avatar billede aslan Nybegynder
27. februar 2003 - 14:17 #2
Jamen de uploades ikke til en mappe jo, men mysql ....
Avatar billede Slettet bruger
27. februar 2003 - 14:21 #3
Det burde nok give dig et svar hvis du skriver:
echo $form_date;
Avatar billede aslan Nybegynder
27. februar 2003 - 14:46 #4
Det her er hvad jeg får udskrevet nu? Det er nu en anden server jeg tester fra..

Warning: Unable to access C:\Documents and Settings\Aslan1\Skrivebord\bil_228.jpg in /data/playground/sites/180/docs/agaBooking/edit/lyd/upload.php on line 12

Warning: fopen("C:\Documents and Settings\Aslan1\Skrivebord\bil_228.jpg", "r") - No such file or directory in /data/playground/sites/180/docs/agaBooking/edit/lyd/upload.php on line 12

Warning: stat failed for C:\Documents and Settings\Aslan1\Skrivebord\bil_228.jpg (errno=2 - No such file or directory) in /data/playground/sites/180/docs/agaBooking/edit/lyd/upload.php on line 12

Warning: Supplied argument is not a valid File-Handle resource in /data/playground/sites/180/docs/agaBooking/edit/lyd/upload.php on line 12

Warning: Cannot add header information - headers already sent by (output started at /data/playground/sites/180/docs/agaBooking/edit/lyd/upload.php:12) in /data/playground/sites/180/docs/agaBooking/edit/lyd/upload.php on line 17
Avatar billede aslan Nybegynder
27. februar 2003 - 14:48 #5
ups forkert... den seer sådan ud:

C:\Documents and Settings\Aslan1\Skrivebord\bil_223.jpgC:\Documents and Settings\Aslan1\Skrivebord\bil_223.jpg
Warning: Unable to access C:\Documents and Settings\Aslan1\Skrivebord\bil_223.jpg in /data/playground/sites/180/docs/agaBooking/edit/lyd/upload.php on line 12

Warning: fopen("C:\Documents and Settings\Aslan1\Skrivebord\bil_223.jpg", "r") - No such file or directory in /data/playground/sites/180/docs/agaBooking/edit/lyd/upload.php on line 12

Warning: stat failed for C:\Documents and Settings\Aslan1\Skrivebord\bil_223.jpg (errno=2 - No such file or directory) in /data/playground/sites/180/docs/agaBooking/edit/lyd/upload.php on line 12

Warning: Supplied argument is not a valid File-Handle resource in /data/playground/sites/180/docs/agaBooking/edit/lyd/upload.php on line 12

Warning: Cannot add header information - headers already sent by (output started at /data/playground/sites/180/docs/agaBooking/edit/lyd/upload.php:7) in /data/playground/sites/180/docs/agaBooking/edit/lyd/upload.php on line 17
Avatar billede Slettet bruger
27. februar 2003 - 14:49 #6
C:\Documents and Settings\Aslan1\Skrivebord\bil_228.jpg <--- Jeg vil nok sige at det er heldigt for dig at serveren ikke kan få fat i den fil!?

Du skal nok bruge move_uploaded_file(); til at lægge billedet op i en midlertidig fil... derefter læser du indholdet af den midlertide fil og lægger det ind i databasen!

Se også http://www.php.net/manual/en/features.file-upload.php
Avatar billede aslan Nybegynder
27. februar 2003 - 14:49 #7
hmm burde echo $form_data; være det samme som :

C:\Documents and Settings\Aslan1\Skrivebord\bil_223.jpgC:\Documents and Settings\Aslan1\Skrivebord\bil_223.jpg
Avatar billede Slettet bruger
27. februar 2003 - 14:51 #8
midlertide = midlertidige even!
Avatar billede aslan Nybegynder
27. februar 2003 - 14:51 #9
regin gider du ikke lige at vise mig hvordan det skal se ud på scriptet?
Avatar billede Slettet bruger
27. februar 2003 - 15:04 #10
Har ikke testet det... men det burde virke!
if(is_uploaded_file($_FILES['form_data']['tmp_name'])) 
{ 
    // Data tilrettes
    $path = "sti/til/midlertidigtbillede.jpg";

    //Eventuelt:
    // $path = getcwd."sit/til/midlertidigtbillede.jpg";

    if(move_uploaded_file($_FILES['form_data']['tmp_name'], $path)
    {
        $data = addslashes(file_get_contents($path));//PHP 4.3+
        //$data = addslashes(implode("",file($path));//PHP 4.3-
        unlink($path);//Sletter filen igen!
    }
}
Avatar billede aslan Nybegynder
27. februar 2003 - 15:18 #11
Er det rigtigt når jeg forsøger således for billedet bliver desvære ikke gemt, men jeg får heller ikke nogen fejl.

<?
include("../../config.php");

if(is_uploaded_file($_FILES['form_data']['tmp_name'])) 
{ 
    // Data tilrettes
    $path = "sti/til/midlertidigtbillede.jpg";

    //Eventuelt:
    // $path = getcwd."sit/til/midlertidigtbillede.jpg";

    if(move_uploaded_file($_FILES['form_data']['tmp_name'], $path))
    {
        $data = addslashes(file_get_contents($path));//PHP 4.3+
        //$data = addslashes(implode("",file($path));//PHP 4.3-
        unlink($path);//Sletter filen igen!
     
        $query ="insert into billede (billede,filetype,filename,filesize,type,id) values('$data','$form_data_name','$form_data_size','$form_data_type','$type','$id')";
            mysql_query($query) or die(mysql_error());
                   
            header("location:rediger.php");
        }

} else
{
  include("../menu.php");
?>
    <form method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
    <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000000">
        <INPUT TYPE="hidden" name="id" value="<? echo $id ?>">
        <INPUT TYPE="hidden" name="type" value="<? echo $type ?>">
    <br>Find billede:<br>
    <input type="file" name="form_data"  size="40">
    <p><input type="submit" name="gem" value="Gem">
    </form>
<?php
}
?>
Avatar billede Slettet bruger
27. februar 2003 - 15:24 #12
Ser rigtigt nok ud!

Nedenstående skal selvfølgelig være en rigtig sti - navnet på billedet er ligegyldigt!

$path = "sti/til/midlertidigtbillede.jpg";
Avatar billede aslan Nybegynder
27. februar 2003 - 15:28 #13
:( jeg kan stadig ikke få det til at virke..
Avatar billede Slettet bruger
27. februar 2003 - 15:30 #14
if(is_uploaded_file($_FILES['form_data']['tmp_name'])) 
{ 
    echo "TEST1<br>";
    // Data tilrettes
    //$path = "sti/til/midlertidigtbillede.jpg";

    //Eventuelt:
    $path = getcwd."sti/til/midlertidigtbillede.jpg";

    if(move_uploaded_file($_FILES['form_data']['tmp_name'], $path))
    {
        echo "TEST2";
        $data = addslashes(file_get_contents($path));//PHP 4.3+
        //$data = addslashes(implode("",file($path));//PHP 4.3-
        unlink($path);//Sletter filen igen!
     
        $query ="insert into billede (billede,filetype,filename,filesize,type,id) values('$data','$form_data_name','$form_data_size','$form_data_type','$type','$id')";
            mysql_query($query) or die(mysql_error());
                   
            header("location:rediger.php");
        }
Avatar billede aslan Nybegynder
27. februar 2003 - 16:21 #15
Den kommer altså slet ikke ind på nogen af if sætningerne... upload formen bliver vist igen når man submitter?
Avatar billede Slettet bruger
27. februar 2003 - 16:24 #16
hvad får du med:

print_r($_FILES);

efter et fil submit selvfølgelig!
Avatar billede aslan Nybegynder
27. februar 2003 - 16:30 #17
bare et tomt array :

Array ( )
Avatar billede Slettet bruger
27. februar 2003 - 16:32 #18
Du bruger vel ikke [F5]!?
Avatar billede aslan Nybegynder
27. februar 2003 - 16:33 #19
ehh til at opdater siden? nej det gør jeg ikke...
Avatar billede aslan Nybegynder
27. februar 2003 - 16:35 #20
regin hvis du har adgang til en webserver er det jo næsten nemmere at du selv får scriptet til at virke... Jeg giver dig 100 point oveni de første 100 hvis du kan få det til at virke..
Avatar billede Slettet bruger
27. februar 2003 - 16:39 #21
Jeg forstår det sq ikke!
Går selvfølgelig udfra at du kører PHP 4.1 eller højere!?
Men den burde udskrive mere end "Array( )", når du laver en "print_r($_FILES);"
Skal jeg være ærlig... ovenstående ville virke udmærket på min server!
Avatar billede aslan Nybegynder
27. februar 2003 - 16:46 #22
Du kan jo tjekke?
Avatar billede Slettet bruger
27. februar 2003 - 16:48 #23
Nedenstående er noget slamkode hvor det virker for mig... kan du se den store forskel??

if(is_uploaded_file($_FILES['image']['tmp_name']) && $imagecontrol != 0 && $imagecontrol != "delete")
        {
            $gifpattern = "\.gif$";
            $jpgpattern = "\.jpg$";
            $path = "";
            $firsterror = 0;
            if(preg_match("/$gifpattern/i", $_FILES['image']['name'])!=0)
            {
                $path = getcwd()."/../images/users/".$currentuser->id.".gif";
                $upload = move_uploaded_file($_FILES['image']['tmp_name'], $path);
            }
            elseif(preg_match("/$jpgpattern/i", $_FILES['image']['name'])!=0)
            {
                $path = getcwd()."/../images/users/".$currentuser->id.".jpg";
                $upload = move_uploaded_file($_FILES['image']['tmp_name'], $path);
            }
Avatar billede aslan Nybegynder
06. marts 2003 - 14:17 #24
....
Avatar billede thomaskleist Nybegynder
05. maj 2004 - 14:38 #25
Du skal gå ind og ændre de mapper du skal læse i til chmod 777 det kan du gøre ved hjælp at et FTP program.
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