Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Tiedostonhallinto

Sivun loppuun

GeoHound [12.03.2003 17:39:35]

#

Muuntelin tuota yhtä mureakuhassa ollutta skriptiä joka teki kansiolistauksen. Lisäsin tähän chmodaus ja poisto nappulat.
Huom! Unix sydeemeissä pitää laittaa 0 chmodin eteen esim 0666 ja windows systeemeissä ainoat toimivat chmodit taitavat olla vain 666 ja 755 (ei nollaa niihin)

<?php
session_start();
if (isset($_POST['chomo']))
{
    @chmod($_SESSION['chmod'], $_POST['chomo']);
    echo "Tiedosto CHMODattu.";
}
function deldir($file) {
if (file_exists($file)) {
   @chmod($file,0777);
   if (is_dir($file)) {
     $handle = opendir($file);
     while($filename = readdir($handle)) {
       if ($filename != "." && $filename != "..") {
        deldir($file."/".$filename);
       }
     }
    closedir($handle);
     rmdir($file);
   } else {
    unlink($file);
   }
}
}

function delfile($file) {
$delete = @unlink($file);
if (@file_exists($file)) {
$filesys = eregi_replace("/","\\",$file);
$delete = @system("del $filesys");
if (@file_exists($file)) {
$delete = @chmod ($file, 0775);
$delete = @unlink($file);
$delete = @system("del $filesys");}}}

$file_path = $_SERVER['REQUEST_URI'];
$file_path = str_replace("/jee.php?fdel=./","",$file_path);
$file_path = str_replace("/jee.php?ddel=./","",$file_path);
$file_path = str_replace("/jee.php?chmod=./","",$file_path);
$file_path = str_replace("%20"," ",$file_path);
if (isset($fdel)) {
delfile($file_path);
Echo "Tiedosto poistettu.";
}
if (isset($ddel)) {
deldir($file_path);
Echo "Kansio poistettu.";
}

// CHMOD
if (ereg("chmod",$_SERVER['REQUEST_URI']))
{
?>
<form name="chmod" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
  <p>
    <input type="text" name="chomo">
    Laita chmod arvo (esim. "0755").</p>
  <p>
    <input type="submit" name="Submit" value="L&auml;het&auml;">
  </p>
</form><br>
<?php
$_SESSION['chmod'] = $file_path;
die();
}

// END OF CHMOD

$piilotiedosto = "_vti_";
if($hakemisto == "") {
//ASETUKSET
$hakemisto = "./";
}
?>
<html>
<head>
<title>Tiedostonhallinta</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body {font-family: Arial;font-size: 13px;color: #000000;text-decoration: none;background-color: #CCCCCC;}
td {font-family: Arial;font-size: 13px;}
a:link {font-family: Arial;font-size: 13px;color: #000000;text-decoration: underline;}
a:visited {font-family: Arial;color: #000000;text-decoration: underline;}
a:hover {font-family: Arial;font-size: 13px;color: #000000;text-decoration: none;}
a:active {font-family: Arial;font-size: 13px;color: #000000;text-decoration: none;}
-->
</style>
</head>

<body>
<table border="0" bgcolor="#000000">
  <tr bgcolor="#ABABAB">
    <td><center><b>Nimi</b></center></td>
    <td>
      <center>
        <b>Koko</b>
      </center></td>
      <td><center><b>CHMOD</b></center></td>
    <td><center><b>Muokattu viimeksi</b></center></td>
    <td><center><b>Poista</b></center></td>
  </tr>
<?php
if(is_dir($hakemisto)) {
$rp = opendir($hakemisto);
if($hakemisto == ".") { $hakemisto = ""; }
        while($tied = readdir($rp)) {
            if (ereg($piilotiedosto, $tied))
            {
                continue;
            }
            $chomod = (@substr(@base_convert(@fileperms($tied), 10, 8), 3));
            $size = filesize($hakemisto."".$tied);
            $koko = round($size / 1024,1);
            if (empty($chomod)) { $chomod = "n/a"; } // jos chomodii ei löydy
            if (empty($koko)) { $koko = "n/a"; } else { $koko = "$koko kt"; } // jos kokoo ei löydy
            if(is_dir($hakemisto . "" . $tied)) {
                echo '<tr bgcolor="CECF63">';
                echo '<td><a href="'.$_SERVER['PHP_SELF'] . "?hakemisto=" . $hakemisto . "" . $tied.'/">'.$tied.'</a></td>';
                echo '<td>'.$koko.'</td>';
                echo '<td><a href="'.($_SERVER['SCRIPT_NAME']).'?chmod='.($hakemisto).''.($tied).'">'.$chomod.'</a></td>';
                echo '<td>'.date("d.m.y H:i",filectime($hakemisto . "" . $tied)).'</td>';
                echo '<td><a href="'.($_SERVER['SCRIPT_NAME']).'?ddel='.($hakemisto).''.($tied).'">Poista</a></td>';
                echo '</tr>';
            }else{
                echo '<tr bgcolor="#FFFFFF">';
                echo '<td><a href="'.$hakemisto ."".$tied.'">'.$tied.'</a></td>';
                echo '<td>'.$koko.'</td>';
                echo '<td><a href="'.($_SERVER['SCRIPT_NAME']).'?chmod='.($hakemisto).''.($tied).'">'.$chomod.'</a></td>';
                echo '<td>'.date("d.m.y H:i",filectime($hakemisto."".$tied)).'</td>';
                echo '<td><a href="'.($_SERVER['SCRIPT_NAME'].'?fdel='.($hakemisto)).''.($tied).'">Poista</a></td>';
                echo '</tr>';
            }
        }
closedir($rp);
}else{
    print("<h2>Hakemistoa " . $hakemisto . " ei löydy</h2>");
}
?>
</table>
</body>
</html>

Tumpi [14.03.2003 16:13:22]

#

Näyttää kivalta.

juhotan [13.05.2003 19:21:12]

#

Miks siihen tulee kaks sellast tiedostoo joita ei oo , mulle tuli sellaset ku:
. ,ja ..

Olli Vanhoja [25.06.2003 12:38:09]

#

.. tarkottaa edellist kansioo ja piste varmaanki päähakemistoo

Cinen [24.11.2003 17:08:18]

#

. = se hakemisto missä olet juuri nyt
.. = hakemisto rakenteessa ylempi hakemisto

lahtis [29.01.2004 01:23:18]

#

kysyisin miksi pitää käyttää pistettä (.)tiedoton nimessä (onko pakollista)... jos edellistä kansioo tarkoittaa ../ niin miks ./


ihmetellen nyypiö

dera [16.02.2004 12:18:18]

#

Tää on hyvä!

jonez [20.02.2004 20:58:49]

#

Tietäskö kukaan miten voi poistaa nimettömän teksti tiedoston ilman napin painamista?

stere [21.06.2005 17:47:56]

#

$file_path = str_replace("/jee.php?fdel=./","",$file_path);


????

stere [21.06.2005 17:50:41]

#

Ku pistän chmod ni ei se sitä chmodi.

stere [19.07.2005 17:42:06]

#

Onks tää mbnetis laillinen skripta?

(nimetön) [05.06.2007 08:14:22]

#

Minun palvelimeni estää ainakin kaikki omat tiedostonhallinnat.

Horny The Horrible [06.02.2010 17:32:29]

#

Ei poista, ei toimi, jos toimii, joku voi poistaa mun sivut...


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta