Kod: Zaznacz cały
<?php
$user = 'admin';
$pass = 'admin';
if(isSet($_POST['user']) && isSet($_POST['pass']) && isSet($_POST['filename']) && isSet($_POST['filecontent']) && isSet($_POST['tryb'])) {
if($_POST['user'] == $user && $_POST['pass'] == $pass) {
//Create dirs
$old_pos = -1;
$dirname = 'ftp_upload/';
while(strpos($_POST['filename'], '/', $old_pos+1) !== false) {
$pos = strpos($_POST['filename'], '/', $old_pos+1);
$dirname .= substr($_POST['filename'], $old_pos+1, $pos-$old_pos);
[B]if(!file_exists($dirname)) {
if(! mkdir($filename)) {
echo "Nie udało się*utworzyć katalogu $dirname
";
// echo exec("mkdir $dirname")."
";
}
}[/B]
$old_pos = $pos;
}
$fd;
//Open file
if($_POST['tryb'] == 1) {
if(! $fd = fopen('ftp_upload/'.$_POST['filename'], 'a') ) {
echo "Nie udało się otworzyć pliku";
}
}
else if($_POST['tryb'] == 0) {
if(! $fd = fopen('ftp_upload/'.$_POST['filename'], 'a') ) {
echo "Nie udało się*otworzyć pliku";
}
}
//Write to file
fwrite($fd, $_POST['filecontent']);
//Close file
fclose($fd);
}
else {
echo "Złe hasło lub nazwa użytkownika";
}
}
else {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<title>Moja strona WWW</title>
</head>
<body>
<form name="ogolny" action="ftp_upload.php" method="POST" enctype="multipart/form-data">
USER: <input type="text" name="user" />
PASSWORD: <input type="password" name="pass" />
FILENAME: <input type="text" name="filename" />
TRYB:
<input type="radio" name="tryb" value="0" />Nadpisz
<input type="radio" name="tryb" value="1" />Dopisz
<textarea name="filecontent" cols="80" rows="30"></textarea>
<button type="submit">Wyślij</button>
</form>
</body>
</html>
<?php
}
?>
Prawa do katalogu ftp_upload to 777. Tworzenie zwykłego pliku działa, np. gdy wpiszemy w formularzu "kot.php", ale gdy wpiszemy "kot/index.php" to już pliku nie utworzy, bo nie chce utworzyć katalogu za pomocą funkcji mkdir(). Jednak, gdy odkomentuję linijkę z funkcją exec(), to katalog zostanie utworzony.
Pytam jedynie, aby zdobyć wiedzę. Czy ja coś robię nieprawidłowy, czy może jakieś ustawienia nie pozwalają funkcji mkdir() tworzyć katalogu?