Avatar billede Kengun Praktikant
10. april 2003 - 09:32 Der er 31 kommentarer og
2 løsninger

Slet filer på server via php input form

Allerførst skal der sies at jeg kjender php svært lille. Men jeg har nå smidt sammen et "upload fil script" og et "list dir script" ind i en .php side, og dette fungere udemerket.

Nå søger jeg et script der kan slette filer. Scriptet skal jeg sette ind i samme dokument som nevnt over. Jeg ønsker et inputfelt der man kan skrive ind hvilken fil man ønsker at slette (f.eks.  billed.jpg) og så skal der være en [Slet] knap. Er der nogen der vil lave den lille kodestump for mig? Det ville være nice :)
Avatar billede sostack Nybegynder
10. april 2003 - 09:42 #1
Prøv med:
if($_GET['knap'] == "Slet") {
unlink($_GET['filename'];
}

//sostack
Avatar billede Kengun Praktikant
10. april 2003 - 09:44 #2
beklager, men jeg må også have den inputboks der jeg skriver ind det filnavn. Husk jeg er meget fersk på php :)
Avatar billede sostack Nybegynder
10. april 2003 - 09:48 #3
Kom med noget kode, så bliver det nemmere at tilpasse :-)

//sostack
Avatar billede Kengun Praktikant
10. april 2003 - 09:50 #4
Nåh, ok :) - Jeg bruger denne for at liste op filerne:

<?php
$sti = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF']) ."/";

$path = opendir($sti);

$fillist = array();
while (false !== ($dir = readdir($path))){

//    if (preg_match("/.jpg/", $dir)) {
    $fillist[] = $dir;

//    }
}
closedir($path);


sort($fillist);


for($i = 0; $i < count($fillist); $i++) {
    if($fillist[$i] >= 0) {
    echo"<a href=\"". $fillist[$i] ."\">". $fillist[$i] ."</a><br>\n";
    }
}

?>

Ville være nice hvis man kunne lave en [Slet]-knap på højre side af filerne.
Avatar billede Kengun Praktikant
10. april 2003 - 09:51 #5
De // fjerner jeg hvis jeg kun vil liste op .jpg filerne, men dette skjønner jo du ;)
Avatar billede tipsen Nybegynder
10. april 2003 - 09:53 #6
Det lyder som noget man skal passe på med, så det ikke bruges "uautoriseret"...
Avatar billede Kengun Praktikant
10. april 2003 - 09:55 #7
hmm, kanskje jeg kunne legge ind et simpelt loginscript i begynnelsen av min .php dokument?
Avatar billede Kengun Praktikant
10. april 2003 - 09:56 #8
jeg smider gerne ind mere points hvis i vil hjelpe mig med et lille loginscript også.
Avatar billede Kengun Praktikant
10. april 2003 - 10:01 #9
hmm, ja jeg kan være enig i at den knap kan være "farlig" da man kan få trykket på den ved et uheld. Men det er kun mig der skal bruge denne siden. Men i mitt spørgsmål nævnte jeg at der også kunde være et inputfelt der man må skrive ind filnavnet og så klikke på slet. Da udelukker man jo at man får klikket på den knap ved et uheld.
Avatar billede sostack Nybegynder
10. april 2003 - 10:02 #10
Prøv at ændre til:
<?php
if($_GET['knap'] == "Slet") {
unlink($_GET['filename'];
}

$sti = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF']) ."/";

$path = opendir($sti);

$fillist = array();
while (false !== ($dir = readdir($path))){

//    if (preg_match("/.jpg/", $dir)) {
    $fillist[] = $dir;

//    }
}
closedir($path);


sort($fillist);

for($i = 0; $i < count($fillist); $i++) {
    if($fillist[$i] >= 0) {
    echo"<a href=\"". $fillist[$i] ."\">". $fillist[$i] ."</a><form action=\"$_SERVER['PHP_SELF']\" method=\"GET\"><input type=\"hidden\" name=\"filename\" value=\"$fillist[$i]\"><input type=\"submit\" name=\"knap\" value=\"Slet\"></form><br>\n";
    }
}
?>

//sostack
Avatar billede sostack Nybegynder
10. april 2003 - 10:04 #11
Eller:
<?php
if($_GET['knap'] == "Slet") {
unlink($_GET['filename'];
}

$sti = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF']) ."/";

$path = opendir($sti);

$fillist = array();
while (false !== ($dir = readdir($path))){

//    if (preg_match("/.jpg/", $dir)) {
    $fillist[] = $dir;

//    }
}
closedir($path);


sort($fillist);

for($i = 0; $i < count($fillist); $i++) {
    if($fillist[$i] >= 0) {
    echo"<a href=\"". $fillist[$i] ."\">". $fillist[$i] ."</a><form action=\"$_SERVER['PHP_SELF']\" method=\"GET\"><input type=\"text\" name=\"filename\" value=\"\"><input type=\"submit\" name=\"knap\" value=\"Slet\"></form><br>\n";
    }
}
?>

//sostack
Avatar billede Kengun Praktikant
10. april 2003 - 10:06 #12
Får en fejl: Parse error: parse error, unexpected ';' in /home/kengun/........osv........php on line 30

Line 30 sier: unlink($_GET['filename'];
Avatar billede schaefner Juniormester
10. april 2003 - 10:06 #13
Den kan vel også bare laves således:

<form method="post" action="">
<input type="text" name="fil"><br>
<input type="submit" name="slet" value="Slet fil">
</form>
<hr>
<?php
if(isset($_POST['slet'])) {
  unlink($_POST['fil']);
  echo $_POST['fil']." blev slettet";
}
?>
Avatar billede Kengun Praktikant
10. april 2003 - 10:10 #14
Jeps, Schaefner, det var mere noget slikt jeg var på utkig efter. Men når jeg refresher siden får jeg en lille fejl: Warning: unlink() failed (No such file or directory) in /home/kengun/kengun.com/..........osv.php on line 67
bilede.jpg blev slettet. Linje 67 siger:  unlink($_POST['fil']);
Avatar billede sostack Nybegynder
10. april 2003 - 10:10 #15
Med rettelser:
<?php
if($_GET['knap'] == "Slet") {
unlink($_GET['filename']);
}

$sti = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF']) ."/";

$path = opendir($sti);

$fillist = array();
while (false !== ($dir = readdir($path))){

//    if (preg_match("/.jpg/", $dir)) {
    $fillist[] = $dir;

//    }
}
closedir($path);


sort($fillist);

for($i = 0; $i < count($fillist); $i++) {
    if($fillist[$i] >= 0) {
    echo"<a href=\"". $fillist[$i] ."\">". $fillist[$i] ."</a><form action=\"" . $_SERVER['PHP_SELF'] . "\" method=\"GET\"><input type=\"text\" name=\"filename\" value=\"\"><input type=\"submit\" name=\"knap\" value=\"Slet\"></form><br>\n";
    }
}
?>

//sostack
Avatar billede schaefner Juniormester
10. april 2003 - 10:11 #16
kengun >> Adressen til filen skal lige ændres :)

F.eks.:

<?php
if(isset($_POST['slet'])) {
  unlink("mappe/".$_POST['fil']);
  echo $_POST['fil']." blev slettet";
}
?>
Avatar billede Kengun Praktikant
10. april 2003 - 10:17 #17
Hmm, ved ik om jeg er helt med, men det virker som at den forsøger at slette filen på nyt når jeg opdaterer. Kan det stemme? Kanskje jeg skulle poste hele mit .php dokument her, så kan i se det hele?
Avatar billede Kengun Praktikant
10. april 2003 - 10:20 #18
hmmm, jeg må vist ud med litt flere points, så det kommer :) - Jeg bliver lige litt opptat, men vender tilbage. Her er mit script:

    <?
    function uploadProg($filename1,$filename1_name,$filename2,$filename2_name,$filename3,$filename3_name,$filename4,$filename4_name,$filename5,$filename5_name){
    ########Set the destination here##############
    $destination="/home/kengun/........osv....";
    copy($filename1,$destination."/".$filename1_name);
    echo "<h1>Fil ble lastet opp...</h1>";
    echo "<b>$filename1_name ble opplastet.</b><br><br>";
    echo "<a href=\"upload.php\">Klikk her for å gå tilbake.</a>";
    }
    function main(){?>
    <form method="post" action="upload.php" enctype="multipart/form-data">
    Fil å laste opp:<br>
    <input type="file" name="filename1" size="20" tabindex="1">
    <input type="hidden" name="action" value="uploadProg">
    <input type="submit" value="Last opp fil" tabindex="2">
    </form><?}
    switch ($action){
    default:
    main();
    break;
    case "uploadProg":
    if ($filename1=="none") {echo("<h1>No File Selected....</h1>"); break;}
    uploadProg($filename1,$filename1_name,$filename2,$filename2_name,$filename3,$filename3_name,$filename4,$filename4_name,$filename5,$filename5_name);
    break;
    }
    ?>

<?php
$sti = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF']) ."/";
$path = opendir($sti);
$fillist = array();
while (false !== ($dir = readdir($path))){
//    if (preg_match("/.jpg/", $dir)) {
    $fillist[] = $dir;
//    }
}
closedir($path);
sort($fillist);
for($i = 0; $i < count($fillist); $i++) {
    if($fillist[$i] >= 0) {
    echo"<a href=\"". $fillist[$i] ."\">". $fillist[$i] ."</a><br>\n";
    }
}
?>


<form method="post" action="">
<input type="text" name="fil"><br>
<input type="submit" name="slet" value="Slet fil">
</form>
<hr>
<?php
if(isset($_POST['slet'])) {
  unlink("/home/kengun/.....osv..../".$_POST['fil']);
  echo $_POST['fil']." blev slettet";
}
?>


PS! Jeg har sat ind Se lige de ........osv.... 2 steder istedet for hele stien. Håber i skjønner noget af dette ;)
Avatar billede schaefner Juniormester
10. april 2003 - 10:23 #19
Sådan som den er nu vil den forsøge at køre scriptet igen når du opdaterer.
Avatar billede schaefner Juniormester
10. april 2003 - 10:28 #20
Prøv:

--- upload ---

<form method="post" action="upload.php" enctype="multipart/form-data">
Fil å laste opp:<br>
<input type="file" name="filename1" size="20" tabindex="1">
<input type="submit" name="upload" value="Last opp fil" tabindex="2">
</form>
<hr>
<?
if (isset($_POST['upload'])) {
  $dis = "/home/kengun/........osv....";
  copy($filename1,$dis."/".$filename1_name);
  echo "<h1>Fil ble lastet opp...</h1>";
  echo "<b>$filename1_name ble opplastet.</b><br><br>";
  echo "<a href=\"upload.php\">Klikk her for å gå tilbake.</a>";
}
?>

--- slet ---

<form method="post" action="">
<input type="text" name="fil"><br>
<input type="submit" name="slet" value="Slet fil">
</form>
<hr>
<?php
if(isset($_POST['slet'])) {
  $dis = "/home/kengun/........osv....";
  unlink($dis.$_POST['fil']);
  echo $_POST['fil']." blev slettet<br><br>";
  echo "<a href=\"upload.php\">Klikk her for å gå tilbake.</a>";
}
?>
Avatar billede schaefner Juniormester
10. april 2003 - 10:31 #21
--- upload ---

<form method="post" action="upload.php" enctype="multipart/form-data">
Fil å laste opp:<br>
<input type="file" name="filename1" size="20" tabindex="1">
<input type="submit" name="upload" value="Last opp fil" tabindex="2">
</form>
<hr>
<?
if (isset($_POST['upload'])) {
  if($filename1 != "") {
    $dis = "/home/kengun/........osv....";
    copy($filename1,$dis."/".$filename1_name);
    echo "<h1>Fil ble lastet opp...</h1>";
    echo "<b>$filename1_name ble opplastet.</b><br><br>";
    echo "<a href=\"upload.php\">Klikk her for å gå tilbake.</a>";
  } else {
    echo "Ingen fil valgt";
  }
}
?>

--- slet ---

<form method="post" action="">
<input type="text" name="fil"><br>
<input type="submit" name="slet" value="Slet fil">
</form>
<hr>
<?php
if(isset($_POST['slet'])) {
  $dis = "/home/kengun/........osv....";
  unlink($dis.$_POST['fil']);
  echo $_POST['fil']." blev slettet<br><br>";
  echo "<a href=\"upload.php\">Klikk her for å gå tilbake.</a>";
}
?>
Avatar billede tipsen Nybegynder
10. april 2003 - 10:49 #22
kengun: Sørg for at andre ikke kan få adgang til det script og dermed slette filer hos dig!
Avatar billede Kengun Praktikant
10. april 2003 - 11:23 #23
Nå klarede jeg at få sat det hele op :) Kan jeg så bede om et litt logind script? Og så vil jeg bede dere begge om at smide et svar, for jeg vil dele ud litt points :) (jeg høyner lige pointsene litt)
Avatar billede schaefner Juniormester
10. april 2003 - 11:37 #24
--- login.php ---

<html>
<head></head>

<body>

<form method="post" action="validate.php">
<input type="text" name="brugernavn"><br>
<input type="password" name="kodeord"><br><br>
<input type="submit" name="send" value="Log ind">
</form>

</body>
</html>

--- validate.php ---

<?
session_start();
$r_brugernavn = "kengun";
$r_kodeord = "kengun";
if($_POST['brugernavn'] != $r_brugernavn && $_POST['kodeord'] != $r_kodeord) {
  echo "Brugernavn og/eller kodeord stemte ikke overens";
} else {
  $_SESSION['log'] = "ok";
}
?>

--- tjek.php ---

<?
session_start();
if(!isset($_SESSION['log'])) {
  header("location: login.php");
}
?>
<html>
<head></head>

<body>

Denne side kan du kun se hvis du er logget ind.

</body>
</html>
Avatar billede schaefner Juniormester
10. april 2003 - 11:39 #25
$r_brugernavn = "kengun"; // Det rigtige brugernavn
$r_kodeord = "kengun"; // Det rigtige kodeord
Avatar billede schaefner Juniormester
10. april 2003 - 11:45 #26
--- validate.php ---

<?
session_start();
$r_brugernavn = "kengun";
$r_kodeord = "kengun";
if($_POST['brugernavn'] != $r_brugernavn && $_POST['kodeord'] != $r_kodeord) {
  echo "Brugernavn og/eller kodeord stemte ikke overens";
} else {
  $_SESSION['log'] = "ok";
  header("location: tjek.php");
}
?>
Avatar billede Kengun Praktikant
10. april 2003 - 14:36 #27
Kan så de 2 gode Herre legge et svar ;)
Avatar billede schaefner Juniormester
10. april 2003 - 15:52 #28
javel ;o)
Avatar billede Kengun Praktikant
10. april 2003 - 21:00 #29
Sostack> Kan du også venligst legge et svar? (jeg vil også give dig nogle points for din tid og arbejd)
Avatar billede sostack Nybegynder
11. april 2003 - 07:03 #30
Ok! og takker.
Avatar billede Kengun Praktikant
11. april 2003 - 07:07 #31
Sådan, og det er mig der skal takke :) - Må dere have en fin weekend.
Avatar billede sostack Nybegynder
11. april 2003 - 07:17 #32
Har faktisk ferie til d. 23. ds
:-)

//sostack
Avatar billede Kengun Praktikant
11. april 2003 - 09:05 #33
Har ferie til d. 22. Det blir dejligt :)
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