Ъплоад скрипт

Malfurion

Registered
Така...използвам една система за ъплоад на файлове...всеки потребител когаро се регистрира си създава папка със неговият Username(въведен по рано при регистрацията)...всеки потребител си ъплоадва във неговата си папка със ъплаод скрипт както си е редно...въпросът ми е как всеки потребител да може да вижда САМО файловете които е качил и да може да ги изтрие(само тях без да може да трие и на другите потребители)?
 
Аз в моя скрипт ползвам една доста полезна функция - md5();
Файловете нали са в папката на потребителя ? Т.е. пример: soul4o/asdf.txt
Идеята е че след като кодирам адреса с md5 не може да се изтрие нищо друго.
Пак има гет заявка за файла, само че тя после се кодира, така че ако потребителя (хакера) е сложил примерно ../index.php да не може да се изтрие.
Нещо такова става:

<?php
if($_GET['url'] != null){

$url = md5($_GET['url']);
$directory = opendir($user); /// $user е името на потребителя, т.е. папката
while ($files = readdir($directory)){
if (($files != "..") AND ($files != ".")){
if (md5($files)) == $url){
unlink($user."/".$files);
break;
}
}
}

}
?>


Може да товари малко повече хоста, но според мен това е най безопасния начин. :roll:
 
хмм...неможах да се оправа... ето това ми е листа който показва само качените от потребителя файлове но незнам как да добава функцията Delete... ще ми помогнеш ли?

Код:
<?php
oB_start(); 
include("config.php"); 
$upload_dir = "$logged[username]";
$handle=opendir($upload_dir);
$filelist = "";
$filesarray = Array();

while ($file = readdir($handle))

if(!is_dir($file) && !is_link($file) && $file != ".." && $file != ".")
$filesarray["$file"] = intval(ereg_replace("[^0-9]", "0", $file));
asort($filesarray);
foreach($filesarray as $file=>$key)

$filelist .= " :: <a href='$upload_dir/$file'>$file</a><br />";
$filelist = substr($filelist, 0, strlen($filelist )-6);

$filelist .= " <font color = 'red'>Ново</font><br>";
echo $filelist;

?>
 
Виж така:

Код:
<?php
oB_start();
include("config.php");
$user = $logged[username];

if($_GET['url'] != null){

$url = md5($_GET['url']);
$directory = opendir($user); 
while ($files = readdir($directory)){
if (($files != "..") AND ($files != ".")){
if (md5($files)) == $url){
unlink($user."/".$files);
break;
}
}
}

} 
////////////////
$upload_dir = "$logged[username]";
$handle=opendir($upload_dir);
$filelist = "";
$filesarray = Array();

while ($file = readdir($handle))

if(!is_dir($file) && !is_link($file) && $file != ".." && $file != ".")
$filesarray["$file"] = intval(ereg_replace("[^0-9]", "0", $file));
asort($filesarray);
foreach($filesarray as $file=>$key)

$filelist .= " :: <a href='$upload_dir/$file'>$file</a> <a href=\"?url=".$file."\">[X]</a><br />";
$filelist = substr($filelist, 0, strlen($filelist )-6);

$filelist .= " <font color = 'red'>Ново</font><br>";
echo $filelist;


?>
 
Код:
Parse error: syntax error, unexpected T_IS_EQUAL in D:\xampp\xampp\htdocs\log\log1\data.php on line 12
ще го доразгелдам но това е грешката която излезна :(
Да пробвах и така но не стана...се пак е лесно до ума да се досетя да сложа променлива $user... има ли друг начин???
 
Хмм...
а я виж така.
Код:
<?php
oB_start();
include("config.php");
$user = $logged[username];

if($_GET['url'] != null){

$url = md5($_GET['url']);
$directory = opendir($user); 
while ($files = readdir($directory)){
if (($files != "..") AND ($files != ".")){
$the_files = md5($files);
if ($the_files == $url){
unlink($user."/".$files);
break;
}
}
}

} 
////////////////
$upload_dir = "$logged[username]";
$handle=opendir($upload_dir);
$filelist = "";
$filesarray = Array();

while ($file = readdir($handle))

if(!is_dir($file) && !is_link($file) && $file != ".." && $file != ".")
$filesarray["$file"] = intval(ereg_replace("[^0-9]", "0", $file));
asort($filesarray);
foreach($filesarray as $file=>$key)

$filelist .= " :: <a href='$upload_dir/$file'>$file</a> <a href=\"?url=".$file."\">[X]</a><br />";
$filelist = substr($filelist, 0, strlen($filelist )-6);

$filelist .= " <font color = 'red'>Ново</font><br>";
echo $filelist;




?>
 

Back
Горе