Avatar billede mibu Nybegynder
12. november 2009 - 20:22 Der er 14 kommentarer og
1 løsning

Slette med php

jeg har et script der sletter (skulle)billeder fra en valgt mappe. Jeg ved  at det har virket, kan bare ikke huske om det var på samme server.
Nu kan jeg bare ikke få det til at virke, jeg få denne her hver gang jeg prøver:

Forbidden
You don't have permission to access /images/billeder/test1/ on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.


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

Apache-AdvancedExtranetServer/1.3.33 Server at gjerlevborgerforening.dk Port 80

Hvorfor det, og hvad kan jeg gøre.
Avatar billede repox Seniormester
12. november 2009 - 22:20 #1
Du skal have rettighederne til filerne - det vil sige at PHP skal have adgang til at slette filerne.
Du kan bruge FTP til at chmod'e de filer, du gerne vil kunne slette og sætte adgangen til 777.

Den sidste tyder på du har et forkert opsæt i enten din httpd.conf eller din .htaccess.
Avatar billede mibu Nybegynder
12. november 2009 - 22:32 #2
jeg har rettigheder, jeg har et script der opretter nye mapper, og det sætter automatisk chmod til 777.

I min htaccess står der bare -> # mod_htaccess <- den ligger helt ude i webscope, men er jo udkommenteret! Jeg kan iøvrigt ikke få lov til at rette den, sltte den eller omdøbe!

httpd.conf ?? Aldrig hørt om den :-) men jeg kan da regne ud det er noget med configuration.
Avatar billede repox Seniormester
12. november 2009 - 22:47 #3
Well, PHP tager ikke fejl; du mangler de rette rettigheder, så du må have gjort noget forkert eller anderledes.

Jeg kender ikke Apache-AdvancedExtranetServer eller dens opsæt, så det er svært at svare på hvor og hvad du skal rette mht til dine error documents. Alternativt kan du pege på dem du vil bruge via .htaccess.
Avatar billede mibu Nybegynder
12. november 2009 - 23:12 #4
Nej PHP tager ikke fejl, eller jo det gør den, for jeg har jo rettigheder, men spørgesmålet er også hvorfor TROR PHP at jeg ikke har rettigheder.

Men jeg skal vel ikke rette eller pege på andre errorsider, når jeg sådan set slet ikke ville se en errorside, men ville se mit script udføre opgaven?
Avatar billede mibu Nybegynder
12. november 2009 - 23:14 #5
Men du mener altså at problemet ligger i serveropsætningen?
Avatar billede repox Seniormester
13. november 2009 - 09:24 #6
Med hensyn til error document fejlen, er det din serveropsætning der må fejle.
Hvad der er skyld i din PHP fejl kan vi kun gætte os frem til uden at se noget kildekode.
Avatar billede mibu Nybegynder
13. november 2009 - 10:06 #7
Du må da meget gerne se min slette kode:

<?php

    $mappe = $_REQUEST["mappe"];

echo "Du har valgt at slette billeder fra mappen $mappe.<br><br><br>";
   

$dir = "images/billeder/$mappe/"; // Mappe med billeder

if(!isset($_GET['slet'])){
    if (is_dir($dir)) {
      if ($dh = opendir($dir)) {
          while (($file = readdir($dh)) !== false) {
            if($file != "." && $file != ".."){
            echo "
<table width='250'>
<tr>
    <td width='150'>$file</td>
    <td width='50'><img src=images/billeder/$mappe/$file width=50 height=50 border=0> &nbsp;</td>
    <td width='50'><a href=images/billeder/$mappe/ '?slet='  $file  >Slet billede</a></td>
   
</tr>
</table>   
<br />\n";       
           
                        }
          }
          closedir($dh);
      }
    }
}else{
    if(file_exists($dir . $_GET['slet'])){
        unlink($dir . $_GET['slet']);
        echo "Filen: " . $_GET['slet'] . " blev slettet.";
    }else{
        echo "Filen: " . $_GET['slet'] . " findes ikke.";
    }
}


?>
Avatar billede repox Seniormester
13. november 2009 - 10:12 #8
Jeg forstår ikke din kode.
Hvordan virker det at jeg kan linke til:
images/billeder/Tur_Til_Zoo/?slet=DSC_0001.JPG
og så slettes det pågældende billede?

Bruger du noget mod_rewrite?
Avatar billede mibu Nybegynder
13. november 2009 - 10:22 #9
Når man skal slette et foto, er 1. step en side med en dropdown, her vælger du mappen (kommer med $mappe = $_REQUEST["mappe"];)
herefter benævnes den aktuelle mappe der skal slettes fra "$mappe"

Ellers er jeg ikke helt med på hvad du mener!
Avatar billede repox Seniormester
13. november 2009 - 10:28 #10
For mig ser det ud som om at du ender i mappen images/billeder/Tur_Til_Zoo/ hvortil din query string vil kontakte din DirectoryIndex defaults før den sletter noget.
Har du ikke et link, så jeg kan hvad du gør?
Avatar billede mibu Nybegynder
13. november 2009 - 10:41 #11
www.gjerlevborgerforening.dk/admin

du er midlertidig oprettet som bruger: repox pass:1234

Det er ikke alle menupunkter der virker endnu, men under "Galleri" kan du lege alt det du vil, der ligger kun demobilleder.
Avatar billede mibu Nybegynder
13. november 2009 - 10:44 #12
PS. Skift lige password når du er inde :-)
Avatar billede repox Seniormester
13. november 2009 - 10:54 #13
Så har jeg ret i min formodning.
Det der sker, når du forsøger at slette et billede, er at tilgå DirectoryIndex i den mappe billedet ligger i. Men da der ikke er nogen filer, der matcher dine DirectoryIndex default, får du en standard 403 side fra Apache, som fortæller dig at du ikke har rettigheder til at se indholdet i mappen (f.eks.) /images/billeder/test3/. Så det er faktisk ikke PHP der er problemet her.

Udover det, er den også gal med din generelle HTML:

[/pre]
<tr>
    <td width='150'>barn2.jpg</td>
    <td width='50'><img src=images/billeder/test3/barn2.jpg width=50 height=50 border=0> &nbsp;</td>
    <td width='50'><a href=images/billeder/test3/ '?slet='  barn2.jpg  >Slet billede</a></td>
   
</tr>
[/pre]

Kig på href'erne - de ser jo ikke rigtige ud. Udover det skal alle element attributter altid indkapsles i enten enkelte eller dobbelte quotes.

Du skal lave noget PHP der kan tage imod din $_GET hvor du vil have slettet filen.
Avatar billede mibu Nybegynder
13. november 2009 - 10:59 #14
Tak for hjælpen, nu har jeg da noget konkret at arbejde med.
lægger du et svar!
Avatar billede repox Seniormester
13. november 2009 - 11:00 #15
Det fik du her.
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