Avatar billede mr-xmas Nybegynder
18. september 2005 - 17:53 Der er 51 kommentarer

Slet billede

Jeg har et upload system til at upload profilbilleder med men jeg skal have lavet så man kan få ind og slette sin billede altså helt fra serveren
nogen der kan hjælpe? :)
Avatar billede jaw Nybegynder
18. september 2005 - 17:55 #1
unlink("/mappe/filnavn.jpg");
Avatar billede mr-xmas Nybegynder
18. september 2005 - 17:56 #2
altså bare lave et link hvor der står slet og så linker den til unlink("/mappe/filnavn.jpg");
Avatar billede jaw Nybegynder
18. september 2005 - 17:58 #3
Tjah, tjoh.

$filnavn = "hest.jpg";
$mappe = "/mappe1/";

unlink($mappe.$filnavn);

Var det bedre?
Avatar billede mr-xmas Nybegynder
18. september 2005 - 18:00 #4
jamen jeg mener jeg skal lave en knap der hedder slet og så skal man klikke der på ?
Avatar billede jaw Nybegynder
18. september 2005 - 18:02 #5
Ja, det ville jo være ret smart. F.eks. delete.php?user=10

I delete.php finder du så det filnavn der passer til bruger 10 og unlink'er det og sender brugeren et eller andet sted hen.
Avatar billede mr-xmas Nybegynder
18. september 2005 - 18:02 #6
når ja :)
Avatar billede jgivoni Nybegynder
18. september 2005 - 18:06 #7
så er du jo nødt til at sende brugeren videre til den php side, der udfører ovenstående script.
Linket f.eks.:

<a href="sletbillede.php">Slet billede<a>

og i sletbillede.php:
unlink("/mappe/billede.jpg");

Hvordan du finder ud af hvilket billede, der skal slettes, og om brugeren er autoriseret til dette, afhænger helt af dit eksisterende system til filupload.
Avatar billede mr-xmas Nybegynder
18. september 2005 - 18:12 #8
den siger

Warning: unlink(): SAFE MODE Restriction in effect. The script whose uid is 87305 is not allowed to access / owned by uid 0 in /customers/mr-xmas.dk/mr-xmas.dk/httpd.www/1/bruger/slet/profilbillede.php on line 15



koden i linjen er
unlink("/1/profilbillede/<?php echo('$row[profilbillede]'); ?>");
Avatar billede jaw Nybegynder
18. september 2005 - 18:14 #9
Der er du jo også ude i noget snusk, unlink() er jo en php-funktion.

unlink("/1/profilbillede/".$row['profilbillede']);
Avatar billede mr-xmas Nybegynder
18. september 2005 - 18:26 #10
den skriver det stadig
Avatar billede mr-xmas Nybegynder
18. september 2005 - 18:34 #11
hele koden ser sådan ud
<?php
include("dbconnect.php");

$getnews = mysql_query("SELECT * FROM users WHERE id = '$_GET[id]'");
    while($row=mysql_fetch_array($getnews))
{
unlink("/1/profilbillede/".$row['profilbillede']);
}
?>
Avatar billede jaw Nybegynder
18. september 2005 - 18:37 #12
Tjah, det skyldes jo som den skriver at din server er i safe mode. Hvad du så gør ved jeg ikke lige umiddelbart, for jeg har aldrig arbejdet med en server i safe mode.
Avatar billede mr-xmas Nybegynder
18. september 2005 - 18:38 #13
hm safe mode? det er noget som selve serveren har ikke?
Avatar billede jaw Nybegynder
18. september 2005 - 18:49 #14
Jo, det billede du prøver at slette, har du uploadet det med et script eller lagt det op manuelt?
Avatar billede mr-xmas Nybegynder
18. september 2005 - 18:50 #15
det er et script
Avatar billede gf Nybegynder
18. september 2005 - 19:09 #16
Hej

Jeg har ikke så meget styr på det med safemode, men har du CHMOD 777 på mappen billederne ligger i?

mvh gf
Avatar billede mr-xmas Nybegynder
18. september 2005 - 19:11 #17
ja jeg har det på 777
Avatar billede jgivoni Nybegynder
18. september 2005 - 20:56 #18
Én ting er rettigheder (f.eks. 0777) - en anden ting er ejerskab. Jeg er ikke helt klar over, hvad Safe Mode indebærer, men jeg havde fornylig et problem, hvor jeg ikke kunne uploade til en mappe, der var oprettet af en anden bruger, selvom den var "0777".
Jeg blev nødt til at bruge de indbyggede ftp-funktioner i php til at oprette mappen. Måske kan man gøre noget lignende i dette tilfælde.
Har du ftp-adgang til serveren?
Avatar billede jaw Nybegynder
18. september 2005 - 21:07 #19
Du har ret, safe mode behandler ejerskabet af filer og mapper. Jeg forstår bare ikke helt, hvis scriptet kan uploade via php men ikke slette. Det burde vel være samme ejer?
Avatar billede mr-xmas Nybegynder
18. september 2005 - 21:11 #20
ja jeg har adgang til ftp server
Avatar billede jgivoni Nybegynder
19. september 2005 - 10:45 #21
Jaw: Jeg var også meget overrasket, da jeg fandt ud af det, men det viser sig at move_uploaded_file bruger ftp-brugeren, mens mkdir bruger httpd-brugeren :-/

mr-xmas: Så kig på ftp-funktionerne i php.
Avatar billede mr-xmas Nybegynder
19. september 2005 - 16:27 #22
jgivoni
hvad mener du jeg skal kigge på ?
jeg mente jeg havde adgang til en ftp jeg kunne oploade tingene til :)
Avatar billede jaw Nybegynder
19. september 2005 - 16:38 #23
Ahh jgivoni, det forklarer det jo så. Som sagt har jeg aldrig brugt det, så har ikke sat mig så meget ind i det, men kunne bare se at ejerskabet var fremhævet under "safe mode" i manualen...
Avatar billede mr-xmas Nybegynder
19. september 2005 - 16:40 #24
jaw kan man ikkke gøre det på nogle måder så man kan slette billeder og sådan noget
Avatar billede jaw Nybegynder
19. september 2005 - 16:44 #25
Det kommer lidt an på, hvor vild safe mode er (som sagt flere gange har jeg aldrig selv prøvet :)

Men måske du selv kan slå safe mode fra når du ønsker at slette filen:

ini_set("safe_mode", 0);
og så resten af dit script nedenunder.
Avatar billede mr-xmas Nybegynder
19. september 2005 - 16:46 #26
hm kan prøve :)
Avatar billede mr-xmas Nybegynder
19. september 2005 - 16:48 #27
nop den skriver stadig

Warning: unlink(): SAFE MODE Restriction in effect. The script whose uid is 87305 is not allowed to access / owned by uid 0 in /customers/mr-xmas.dk/mr-xmas.dk/httpd.www/1/bruger/slet/profilbillede.php on line 16
Avatar billede jgivoni Nybegynder
19. september 2005 - 16:54 #28
mr-xmas: Det jeg mente var, at hvis du har ftp-adgang til serveren, og kan slette filer ad den vej, så kan du måske også oprette et ftp-adgang via dit php-script og derved alligevel få adgang til at slette filerne fra php :-)

Jeg tænkte på flg:

$conn_id = ftp_connect("<ftp.server.dk>");
ftp_login($conn_id, "<ftp-login>", "<kodeord>");
ftp_delete($conn_id, "<filename>");
ftp_close($conn_id);

Det kan måske omgå safe mode, da det jo så er ftp-ejeren, der sletter filen og ikke web-brugeren.

mere om ftp via php:
http://dk2.php.net/ftp_connect
Avatar billede mr-xmas Nybegynder
19. september 2005 - 16:57 #29
jamen det er så bruger kan slette deres billeder og ikke mig der skal
Avatar billede jgivoni Nybegynder
19. september 2005 - 17:05 #30
jeg er med. ftp via php er bare en omvej, men i praksis bliver det brugeren, der sletter sine egne billeder.

erstat i din delete.php:

unlink("/mappe/billede.jpg");

med det jeg skrev før. Fyld selv de rigtige værdier ind. Brugeren får ikke adgang til dine koder eller noget, men nu kan han pludselig slette sine billeder.
Med mindre der er andre forhindringer. Hvis det ikke virker smider du bare en

or die("fejl1")

ind efter hver ftp-funktion (med forskellige fejlnumre), så kan du finde ud af, hvor det går galt. Det kan være et problem med hvilken mappe man 'står' i.

Er du frisk på at prøve?
Avatar billede mr-xmas Nybegynder
19. september 2005 - 17:07 #31
kan da godt prøve :)
Avatar billede mr-xmas Nybegynder
19. september 2005 - 17:10 #32
er dette her rigtig? ftp_delete($conn_id, "'/profilbillede/'.$row['profilbillede']");
Avatar billede jgivoni Nybegynder
19. september 2005 - 17:18 #33
hvis mappen "profilbillede" ligger i roden er det korrekt.
Avatar billede mr-xmas Nybegynder
19. september 2005 - 17:20 #34
den skriver
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /customers/mr-xmas.dk/mr-xmas.dk/httpd.www/1/profilbillede.php on line 18
Avatar billede jgivoni Nybegynder
19. september 2005 - 17:23 #35
Ok, jeg har overset noget med dine anførselstegn.
Prøv dette:

ftp_delete($conn_id, "/profilbillede/".$row['profilbillede']);
Avatar billede mr-xmas Nybegynder
19. september 2005 - 17:25 #36
nu skriver den dette her

Warning: unlink(): SAFE MODE Restriction in effect. The script whose uid is 87305 is not allowed to access / owned by uid 0 in /customers/mr-xmas.dk/mr-xmas.dk/httpd.www/1/profilbillede.php on line 15

Fatal error: Call to undefined function: ftp_connect() in /customers/mr-xmas.dk/mr-xmas.dk/httpd.www/1/profilbillede.php on line 16
Avatar billede jgivoni Nybegynder
19. september 2005 - 17:33 #37
Ja, hvis ftp-connect er en "undefined function" så er der jo ikke meget at gøre. Skulle ellers være standard fra PHP 4.

Hvorfor prøver du stadig med unlink()?
Avatar billede mr-xmas Nybegynder
19. september 2005 - 17:39 #38
ups glemte jeg at slette :)
Avatar billede mr-xmas Nybegynder
19. september 2005 - 17:40 #39
det skulle vel ikke stå i <> dem der vel altså koden og alt det der?
Avatar billede jgivoni Nybegynder
19. september 2005 - 17:57 #40
nej :-)
Avatar billede mr-xmas Nybegynder
19. september 2005 - 18:10 #41
hm ok så virker det ikke :(
kan man så ikke lave det på nogle måder?
Avatar billede jaw Nybegynder
19. september 2005 - 18:19 #42
Du kan jo altid kontakte din host og høre, om de har kendskab til en workaround på safe mode, når de nu har valgt at smide det på deres server...
Avatar billede mr-xmas Nybegynder
19. september 2005 - 18:19 #43
kan man så ikke lave så den overskriver den billede med brugeres id? for det er lavet så når man oploader så laver den navnet om til ens id :)
Avatar billede jgivoni Nybegynder
19. september 2005 - 18:26 #44
Du kan jo bede brugeren om at uploade et tomt billede ;-)
Avatar billede mr-xmas Nybegynder
19. september 2005 - 18:30 #45
kan de ikke for den overskriver dem ikke
Avatar billede mr-xmas Nybegynder
19. september 2005 - 18:34 #46
sådan nu er det lavet :) havde lavet så den ikke kunne overskrives :p
Avatar billede jgivoni Nybegynder
19. september 2005 - 18:35 #47
højst mystisk...
Avatar billede mr-xmas Nybegynder
19. september 2005 - 18:35 #48
nej det dur ikke :( den siger bare den er ændret men den overskriver ikke :(
Avatar billede jgivoni Nybegynder
19. september 2005 - 18:35 #49
ok :-)
Avatar billede jgivoni Nybegynder
19. september 2005 - 18:36 #50
sikker på det ikke bare er cachen, der spøger?
Avatar billede mr-xmas Nybegynder
19. september 2005 - 18:37 #51
hm ved ikke har narda forstand på uploadsystemr :)
men hvad skal jeg gøre for den vil overskrive dem
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