<?php
$dir = $_SERVER['DOCUMENT_ROOT']."/text"; // bestandspad zonder een slash aan het einde
$allowed = array("css", "js", "txt"); // toegestane filetypen $pattern = "/^([\w_-]+\.)*([\w_-])+$/"; // regexp voor toegestane filenamen
$focus = false; // of het textveld gefocussed moet worden (werkt nog niet)
$error = "<FONT COLOR=\"#ff0000\"><B>[error]</B></FONT> "; // foutboodschap voorvoegsel
function getext($name) {
// pre: een bestandsnaam
// ret: de extensie van de bestandsnaam
}
function getname($name) {
// pre: een bestandsnaam
// ret: het naam-deel van de bestandsnaam
}
if(isset($_POST['action'])) { // selecteer een bestand
if($_POST['action'] == "select") {
$filename = $_POST['ffile']; // selecteer het textbestand
$focus = true;
}
// wijzig een bestand
if($_POST['action'] == "change") {
$filename = $_POST['ffile']; // selecteer het textbestand
chmod($dir."/".$filename, 0666); $handle = fopen($dir."/".$filename, "wt"); // openen om (t)extfile te over(w)riten chmod($dir."/".$filename, 0600); $msg = "file '".$filename."' saved succesfully";
$focus = true;
}
// maak een bestand
if($_POST['action'] == "create") {
$newfile = $_POST['cfile'].".".$_POST['ext']; // naam en extensie
if(!touch($dir."/".$newfile)) { $msg = $error."failed to create file '".$newfile."'";
} else {
$msg = "successfully created file '".$newfile."'";
chmod($dir."/".$newfile, 0600); $filename = $newfile; // selecteer het textbestand
$focus = true;
}
} else {
$msg = $error."file '".$newfile."' already exists";
}
} else {
$msg = $error."invalid file name";
}
}
// verwijder een bestand
if($_POST['action'] == "delete") {
$bdel = @unlink($dir."/".$_POST['ffile']); $msg = "removing ".$_POST['ffile']." ".($bdel ? "" : "un")."succesful";
}
// hernoem een bestand
if($_POST['action'] == "rename") {
if(!strcmp($_POST['fname'].".".$_POST['ext'], $_POST['ffile'])) { $msg = $error."source and destination file have the same name";
} else {
if(file_exists($dir."/".$_POST['fname'].".".$_POST['ext'])) { $msg = $error."the target name exists already";
} else {
$msg = $error."error renaming to '".$_POST['fname'].".".$_POST['ext']."'";
} else {
if(rename($dir."/".$_POST['ffile'], $dir."/".$_POST['fname'].".".$_POST['ext'])) { $msg = "'".$_POST['ffile']."' renamed to '".$_POST['fname'].".".$_POST['ext']."'";
$filename = $_POST['fname'].".".$_POST['ext']; // select the textfile
$focus = true;
} else {
$msg = $error."error renaming file";
}
}
}
}
} // einde hernoeming
} // einde actie
?>
<html>
<head>
<title>file manipulation</title>
<link href="style.css" type="text/css" rel="stylesheet">
</head>
<body class="def"<?= ($focus ? " onLoad=\"document.forms['frm'].elements['tekst'].focus();\"" : "") ?>>
<br /><br />
<hr noshade>
<table width="600" border="0" cellspacing="0" cellpadding="2">
<tr>
<td width="250">
<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post">
<select name="ffile" onChange="this.form.submit();" size="1">
<?php
// als er geen bestand is geselecteerd
?>
<option value="" selected="selected">select a file</option>
<?php
}
// lees de directory en kijk of hier toegestane bestand(styp)en in staan
while(false !== ($file = readdir($dhandle))) { if(filetype($dir."/".$file) == "file") { ?>
<option value="<?= $file ?>"<?= ($file == $filename ? " selected=\"selected\"" : "") ?>><?= $file ?></option>
<?php
}
}
}
?>
</select>
<input type="hidden" name="action" value="select" />
</form>
</td>
<td width="350">
<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post">
create <input type="text" name="cfile" size="20" maxlength="200" />.<select class="form" name="ext">
<?php
// maak een lijst van toegestane filetypes
foreach($allowed as $v) {
?>
<option value="<?= $v ?>"><?= $v ?></option>
<?php
}
?>
</select>
<input class="form" type="submit" name="submit" value="create" />
<input type="hidden" name="action" value="create" />
</form>
</td>
</tr>
</table>
<b>status message:</b>
<?= (isset($msg) ?
$msg : "none") ?><br />
<?php
?>
<form name="frm" action="<?= $_SERVER['PHP_SELF'] ?>" method="post">
<textarea class="code" name="tekst" cols="80" rows="20" onChange="document.forms['frm'].elements['wijz'].disabled = false; document.forms['frm'].elements['wijz'].focus();">
<?php
$handle = fopen($dir."/".$filename, "rt"); // open to (r)ead, (t)ext file }
?>
</textarea><br />
<table width="600" border="0" cellspacing="0" cellpadding="2">
<tr>
<td width="250">
<INPUT TYPE="hidden" NAME="ffile" VALUE="<?= $filename ?>" />
<input class="form" type="submit" name="action" value="change" disabled="disabled" id="wijz" />
<input class="form" type="submit" name="action" value="delete" onClick="return window.confirm('Delete file?');" />
</td>
<td width="350">
rename to <input class="form" type="text" name="fname" value="<?= getname($filename) ?>" size="20" maxlength="200" />.<select class="form" name="ext">
<?php
// maak een lijst van toegestane filetypes
foreach($allowed as $v) {
?>
<option value="<?= $v ?>"<?= (getext($filename) == $v ? " selected=\"selected\"" : "") ?>><?= $v ?></option>
<?php
}
?>
</select>
<input class="form" type="submit" name="action" value="rename" />
</td>
</tr>
</table>
</form>
<?php
}
?>
</body>
</html>