webForumDet fria alternativet

ta bort bilder från mapp

25 svar · 1 177 visningar · startad av mr.mainline

mr.mainlineMedlem sedan feb. 2003777 inlägg
#1

Har ett skript som listar alla bilder från en mapp, och nu vill jag kunna ta bort valda bilder från mappen med en länk under varje bild(Ta bort), så här ser skriptet ut som listar bilderna i mappen.

<?php
$mappnamn = '../_upload'; 
$visa=opendir($mappnamn); 
    while($fil=readdir($visa)){ 
        if(!($fil=="."||$fil=="..")){ 
        echo "<p>"."Fil namn för bilden nedan"."<br>"."<b>".$fil ."</b></p><br>";
		echo "<img src='$mappnamn/$fil' >";
		echo"<p><a href='tabort.php'>Ta bort denna bild?</a></p>"; 
		echo"<hr size='1'>";
        } 
    } 
	

closedir($visa); 

?>

och filen som ska ta bort valda bilder ser ut så här.

<?php 
$visa = unlink($fil); 
 
if ($visa){ 
   echo 'filen är nu borttagen'; 
} 
else{ 
   echo 'Något fel har uppstått. Filen kan inte tas bort'; 
} 
?>

jag får ett felmeddelande "Unable to access in.... "

jmeMedlem sedan maj 20012 237 inlägg
#2

Jag tror du måste ange en komplett sökväg till unlink

MatteMedlem sedan aug. 20002 975 inlägg
#3

Mem hur får du värdet på $fil i ditt skript för att ta bort filen ?
Du skickar ju inget med länken.

Det vore också bra om du kunde visa det fullständiga felmeddelandet.

mr.mainlineMedlem sedan feb. 2003777 inlägg
#4

ok,men hur ska det se ut då?
detta är felmeddelandet"Warning: unlink() [function.unlink]: Unable to access in /customers/min_domän.se/min_domän.se/httpd.www/_admin/tabort.php on line 9
Något fel har uppstått. Filen kan inte tas bort "

jmeMedlem sedan maj 20012 237 inlägg
#5

Som jag tidigare skrev så pröva med att ange kompletta sökvägen för filen som du skall radera:

unlink("/customers/min_domän.se/min_domän.se/httpd.www/_upload/" . $fil);

Jag kan ha skrivit fel sökväg.
Kontrollera sökvägen. Är du osäker kan du alltid testa med file_exists() innan du kör med unlink så att du inte raderar fel fil. :)

jmeMedlem sedan maj 20012 237 inlägg
#6

Kom även ihåg att ifall du senare vill även radera katalogen så måste du eventuellt köra closedir() innan rmdir().

Bara som en liten reminder (du har closedir i din kod, dock). :)

MatteMedlem sedan aug. 20002 975 inlägg
#7

Vad jag kan se så verkar du inte ha något värde på $fil.
Hur får du ett värde på $fil i skriptet? Jag kan inte se att du skickar något med länken.

Det kanske är så att din länk ska se ut så här:

echo"<p><a href='tabort.php?fil=$fil'>Ta bort denna bild?</a></p>";

Och sedan i ditt tabort-skript:

unlink("/customers/min_domän.se/min_domän.se/httpd.www/_upload/" . $_GET['fil']);

//Alternativt relativ sökväg
unlink("../_upload/" . $_GET['fil']);
mr.mainlineMedlem sedan feb. 2003777 inlägg
#8

har testat,med båda sökvägarna, med får upp "Filen existrerar inte" fast skriptet, "tabort.php" tar bort filen.+ att den skriver inte ut filnamnet,som det ska funkar så ska det stå"filen $fil existerar och är borttagen".
jag kör detta innan unlink()

 if (file_exists($fil)) {
   echo "filen $fil existerar och är borttagen";
} else {
   echo "Filen $fil existerar inte ";
}
jmeMedlem sedan maj 20012 237 inlägg
#9

Jag kör med full sökväg när jag använder unlink() och det fungerar för mig.
Är du _HELT_ säker på att sökvägen är korrekt?

pröva med file_exists($fil) och se om den returnerar true.

Vad har du i $fil ?

mr.mainlineMedlem sedan feb. 2003777 inlägg
#10

$fil innehåller filnamnet.
Jag har webbhotell B-one så står det så här :"UNIX PATH
/customers/dindomän.se/dindomän.se/httpd.www/

"så har jag skrivit in min egen domän där det står"dindomän.se

$mappnamn = '_upload'; 
$visa=opendir($mappnamn); 
    while($fil=readdir($visa)){ 
        if(!($fil=="."||$fil=="..")){ 
		
		
       echo "<p>"."Fil namn för bilden nedan"."<br>"."<b>".$fil ."</b></p><br>";
		echo "<img src='$mappnamn/$fil' ><br><p><a href='tabort.php?fil=$fil'>Ta bort denna bild?</a></p><hr size='1'>";
		
        } 
    } 
closedir($visa);
jmeMedlem sedan maj 20012 237 inlägg
#11

Testade med att köra unlink med enbart filnamnet.
Man behöver alltså inte ha kompletta sökvägen.

jmeMedlem sedan maj 20012 237 inlägg
#12

Jag förmodar att nedanstående kod finns i filen tabort.php.

<?php
$visa = unlink($fil);

if ($visa){
   echo 'filen är nu borttagen';
}
else{
   echo 'Något fel har uppstått. Filen kan inte tas bort';
}
?>

Du har följande html:

<a href='tabort.php?fil=$fil'>Ta bort denna bild?</a>

men sen i filen tabort.php så plockar du inte fram värdet på fil.
Detta kan du göra med:

$fil = $_HTTP_GET_VARS['fil'];

och sedan:

unlink($fil);

Dock om tabort.php ligger i en annan katalog än själva filen så måste du antingen även ange en komplett sökväg eller en relativ sökväg.

Om detta skrev t ex Matte redan tidigare.

I din sista postning så har du bara:

<?php
$visa = unlink($fil);
...

Kontrollera att du plockar fram värdet från GET-variabeln och att den är rätt skriven.

MatteMedlem sedan aug. 20002 975 inlägg
#13

Lägg följande överst i skriptet, och visa vilka felmeddelanden du får:

<?php

error_reporting(E_ALL);
ini_set("display_errors", "1");

Den andra raden (ini_set) får du eventuellt ta bort om du kör på b-one.

mr.mainlineMedlem sedan feb. 2003777 inlägg
#14

får detta felmeddelande"Warning: unlink(01671.jpg) [function.unlink]: No such file or directory in /customers/freddeholm.com/freddeholm.com/httpd.www/tabort.php on line 15
Något fel har uppstått. Filen kan inte tas bort "

men skriptet tar bort filen.

MatteMedlem sedan aug. 20002 975 inlägg
#15

Har du något som gör att koden körs 2 gånger ?

mr.mainlineMedlem sedan feb. 2003777 inlägg
#16

så här ser det ut nu:
tabort.php

 <?php
$fil = $_HTTP_GET_VARS['fil'];

unlink("/customers/freddeholm.com/freddeholm.com/httpd.www/_upload/" . $_GET['fil']); 

//Alternativt relativ sökväg 
//unlink("_upload/" . $_GET['fil']); 

if ($visa){ 
   echo 'filen är nu borttagen'; 
} 
else{ 
   echo 'Något fel har uppstått. Filen kan inte tas bort'; 
} 

$visa = unlink($fil); 
?>

Länken:

<a href='tabort.php?fil=$fil'>Ta bort denna bild?</a>

Tack ska ni ha för att ni orkar hjälpa mig med detta.

felmeddelandet är detta:

Notice: Undefined variable: _HTTP_GET_VARS in /customers/freddeholm.com/freddeholm.com/httpd.www/tabort.php on line 12

Notice: Undefined variable: visa in /customers/freddeholm.com/freddeholm.com/httpd.www/tabort.php on line 20
Något fel har uppstått. Filen kan inte tas bort
Warning: unlink() [function.unlink]: No such file or directory in /customers/freddeholm.com/freddeholm.com/httpd.www/tabort.php on line 27

jmeMedlem sedan maj 20012 237 inlägg
#17

Det ska vara:

$HTTP_GET_VARS['fil'];

Sen har du:

unlink("/customers/freddeholm.com/freddeholm.com/httpd.www/_upload/" . $_GET['fil']);

du har ju i början av koden redan hämtat värdet för $fil så använd $fil istället för $_GET['fil']

Dvs:

unlink("/customers/freddeholm.com/freddeholm.com/httpd.www/_upload/" . $fil;

$_GET är samma sak som $HTTP_GET_VARS.

I slutet av koden har du ännu en anrop på unlink(). Det ska du ta bort (eller kanske har du den där enbart för att testa).

jmeMedlem sedan maj 20012 237 inlägg
#18

Dum fråga men, ska du verkligen upprepa din domännamn i texten? :)

/customers/min_domän.se/min_domän.se/httpd.www/_upload/ <-- min_domän_se två gånger

EDIT: En bra sida med PHPs inbyggda variablar: http://fi.php.net/reserved.variables

mr.mainlineMedlem sedan feb. 2003777 inlägg
#19

Det blev så här:

Parse error: syntax error, unexpected ';' in /customers/freddeholm.com/freddeholm.com/httpd.www/tabort.php on line 14

och line 14 är

unlink("/customers/freddeholm.com/freddeholm.com/httpd.www/_upload/" . $fil;

Detta var för att testa
I slutet av koden har du ännu en anrop på unlink(). Det ska du ta bort (eller kanske har du den där enbart för att testa).

jmeMedlem sedan maj 20012 237 inlägg
#20

ska vara:

unlink("/customers/freddeholm.com/freddeholm.com/httpd.www/_upload/" . $fil);

Hade glömt ett ")" ;)

137 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)