Avatar billede nickern Nybegynder
12. august 2007 - 21:32 Der er 23 kommentarer

Slette fil online fra serveren i PHP

Hejsa

Nu når man kan uploade filer via et php-script (online) kan man vel også slette en fil fra sin server via et php-script?

Hvis ja, hvordan skal man så gribe det an?
Avatar billede nielle Nybegynder
12. august 2007 - 21:38 #1
Unlink sletter filer:

http://dk.php.net/unlink
Avatar billede nickern Nybegynder
12. august 2007 - 21:44 #2
dvs. jeg skal bruge denne kode:

unlink ( string $filename [, resource $context] )

hvor $filename er den fil jeg vil slette
hvad er $context så være?
Avatar billede nielle Nybegynder
12. august 2007 - 21:56 #3
Du behøver nok ikke bekymre dig om context:

$succes = unlink($filename);
if ($succes === true)
echo "Filen slettet med succes.";
Avatar billede nielle Nybegynder
12. august 2007 - 21:56 #4
$context er noget med et man kan angive en funktion som skal kalde hvis der sker en fejl under sletningen.
Avatar billede nickern Nybegynder
12. august 2007 - 22:02 #5
Okay - det virker dog ikke helt

nu har jeg denne kode

<?
$filename = file("../test.php");

$succes = unlink($filename);
if ($succes === true)
echo "filen er slettet med succes.";

?>

Hvad gør jeg galt?
Avatar billede nielle Nybegynder
12. august 2007 - 22:03 #6
$filename = "../test.php";
Avatar billede nickern Nybegynder
12. august 2007 - 22:13 #7
oka - men det fungerer stadig ikke:s

jeg har prøvet at debugge lidt - og den viser bare helt blank selvom jeg prøver med denne kode:

__
<?
$filename = "/test.php";

$succes = unlink($filename);
if ($succes === true)
{
    echo "filen er slettet med succes.";
    }
        else
            {
                echo "mislykket";
}
?>
__
Avatar billede nielle Nybegynder
12. august 2007 - 22:15 #8
$filename = "/test.php";

og:

$filename = "../test.php";

er ikke det samme. Faktisk er det nok kun den sidste som har en chance for at virke.
Avatar billede nielle Nybegynder
12. august 2007 - 22:16 #9
Siden at du ikke får udskrevet noget, kommer der nok en fejl i koden. Websitet er så sat op til ikke at vise fejl, og derfor ser du ikke noget.
Avatar billede nickern Nybegynder
12. august 2007 - 22:16 #10
ok - men den fungerer ikke ligegyldigt hvilken jeg bruger

men eftersom at de begge ligger i hovedfolderen burde der ikke være noget problem, i at bruge begge
Avatar billede nickern Nybegynder
12. august 2007 - 22:18 #11
jo - jeg ser for det meste når der er fejl i koden
Avatar billede nielle Nybegynder
12. august 2007 - 22:19 #12
Ikke korrekt. Når du sletter filer vha. ulink() så sletter du i forhold til hvor at de ligger i filsystemt. /filnavn.txt vil slette en fil som ligger i roden, mens ../filnavn.txt vil slette en fil som ligger et niveau ude. Websitets hovedfolder er ikke lig med filsystemets rodfolder, og derfor er det ikke det samme.
Avatar billede nielle Nybegynder
12. august 2007 - 22:20 #13
Prøv at lægge en test-fil i *samme* folder som selve scriptet, og prøv så at slette den derfra. Hvis det ikke virker så er der næppe nogen chance for at det andet virker.
Avatar billede nickern Nybegynder
12. august 2007 - 22:29 #14
har jeg prøvet - det fungerer heller ikke

jeg har prøvet snart alt:s

+ jeg har rettet "if ($succes === true)" til "if ($succes == true)"
Avatar billede nielle Nybegynder
13. august 2007 - 07:32 #15
Det er nu med fuldt overlæg at der er 3 ='tegn. Det har en anden funktion end kun 2:

http://dk2.php.net/manual/en/language.operators.comparison.php
Avatar billede nielle Nybegynder
13. august 2007 - 07:33 #16
Hvordan ser din kode ud og hvor ligger filerne i forhold til hinanden? Hvad sker der når du køre scriptet?
Avatar billede nickern Nybegynder
13. august 2007 - 14:45 #17
Har begge filer til at ligge i hovedfolderen

filen ser ud som du skrev den,

__
<?
$filename = file("/test.php");

$succes = unlink($filename);
if ($succes === true)
echo "filen er slettet med succes.";

?>
__

siden bliver blot blank når du kører den, og kører jeg en else-funktion, kommer der heller ikke noget frem.
Avatar billede showsource Seniormester
13. august 2007 - 14:54 #18
<?
$filename = file("test.php");

if (is_writable($filename)){

    if(unlink($filename)) {

    echo "filen er slettet med succes.";

    }else{

    echo"Kunen slette filen!";

    }

}else{

echo"Filen kan ikke slettes!";

}

?>
Avatar billede showsource Seniormester
13. august 2007 - 15:03 #19
arghhh, fuck.....

<?php

$filename = "test.php";

if (is_writable($filename)){

    if(unlink($filename)) {

    echo "filen er slettet med succes.";

    }else{

    echo"Kunen slette filen!";

    }

}else{

echo"Filen kan ikke slettes!";

}

?>
Avatar billede nickern Nybegynder
13. august 2007 - 17:31 #20
tak - den spytter da noget ud showsource

jeg tror jeg har fundet fejlen - jeg har glemt at ændre CHMODen
Avatar billede nickern Nybegynder
13. august 2007 - 18:59 #21
det fungerer stadig ikke -selvom jeg har rettet CHMOD til 777

hvorfor gider det ikke at du?
Avatar billede showsource Seniormester
13. august 2007 - 19:10 #22
Hvis filet er lavet/uploadet med dit ftp program, skal du chmod den derfra.
Du kan ikke regne med ar php får lov at ændre chmod, kun for filer som et script laver.
Avatar billede nickern Nybegynder
13. august 2007 - 19:31 #23
hvordan kan man så gøre det via en fil? grunden til at jeg ønsker at lave dette system, er så jeg er fri for at rodde rundt i mit ftp program

kan man sætte CHMOD via et script på en fil/mappe?
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