Tengo un "problemilla" con un Script que estoy probando...
W2box "sirve para crear carpetas y subir archivos a un servidor"
El path que me crea la carpeta parece no ser correcto porque me la crea en un lugar que no corresponde con el link que luego usa para abrirla.
Por si me he explicado mal o tenéis dudas la consulta seria:
http://www.marlugue.com/book/upload ( no me dejaba )
Aquí dejo el código por si alguien me pudiera echar un a mano:
Código PHP:
<?php
require("config.php");
$dir = (isset($_GET['d']))?$_GET['d']:$_POST['d'];
if ($dir && $config['enable_folder_maxdepth']){
$dir = split("/",$dir);
foreach ($dir as $k => $v) {
if (($v == "..") || ($v == ".") || ($v == "")) unset($dir[$k]);
}
$path = $config['storage_path'];
foreach ($dir as $k => $v) {
if (!file_exists($path."/$v"))
unset($dir[$k]);
else
$path .= "/$v";
}
$config['storage_path'] .= "/".join("/",$dir);
if (isset($dir)) $dirlevel = sizeof($dir); else $dirlevel = 0;
} else
unset($dir);
//authentication
$auth = !$config['admin_actived'];
authorize(true); //silent authorize first
if (isset($_GET["admin"])) {
authorize();
Header("Location: ".rooturl());
}
//bruteforce php ini, almost never work except on old php..
ini_set('post_max_size','500M') ;
ini_set('upload_max_filesize','500M');
ini_set('memory_limit','500M');
//find real max_filesize
$max_filesize = $config['max_filesize'] * pow(1024,2);
if (!$config['upload_progressbar']) //doesn't apply with the perl script
$max_filesize = min(return_bytes(ini_get('post_max_size')),return_bytes(ini_get('upload_max_filesize')),return_bytes(ini_get('memory_limit')),$max_filesize);
// deleting
if (isset($_POST["delete"])) {
if ($config['protect_delete']) authorize();
deletefile($_POST["delete"]);
}
function deletefile($cell){
global $config, $lang;
//decode str
$str=stripslashes(urldecode($cell));
$str=substr($str, strpos($str,'href="')+6);
$str=substr($str,0, strpos($str,'"'));
$file = $config['storage_path'].'/'.basename($str);
if (!file_exists($file))
echo $lang['delete_error_notfound']." ($file)";
else {
if (is_dir($file))
$return = @rmdir($file);
else
$return = @unlink($file);
if ($config['log_delete']) logadm($lang['DELETE']." ".$file);
if ($return)
echo "successful";
else {
if (is_dir($file))
echo $lang['delete_error_cant_dir'];
else
echo $lang['delete_error_cant'];
}
}
exit;
}
//progress bar notification
if (isset ($_POST['progress'])) {
//define filenames
$sessionid = basename($_POST['progress']);
$tmp_dir = $config['upload_tmpdir'];
$error_file = $tmp_dir."/$sessionid"."_err";
$signal_file = $tmp_dir."/$sessionid"."_signal";
$info_file = $tmp_dir."/$sessionid"."_flength";
$data_file = $tmp_dir."/$sessionid"."_postdata";
if(!file_exists($tmp_dir)) {
header("HTTP/1.1 500 Internal Server Error");
echo "tmp directory is invalid!";
} else if(file_exists($error_file)) {
# Send error code if error file exists
header("HTTP/1.1 500 Internal Server Error");
echo file_get_contents($error_file);
//clean the shit
$files = array($info_file,$data_file,$error_file,$signal_file);
foreach($files as $file) {
if(file_exists($file)) {
unlink($file);
}
}
} else if (file_exists($signal_file)) {
echo "FINISHED";
} else if (file_exists($info_file)){
$total = file_get_contents($info_file);
$current = @filesize($data_file);
echo intval(($current / $total) * 100);
}
else echo '0';
exit;
}
//progressbar upload
if ($config['upload_progressbar']){
if (isset($_GET['sid'])) {
$sid = $_GET['sid'];
$tmp_dir = $config['upload_tmpdir'];
$sid = ereg_replace("[^a-zA-Z0-9]","",$sid);//clean sid
$file = $tmp_dir.'/'.$sid.'_qstring';
if(!file_exists($file)) {
$errormsg = $lang['upload_error_sid'];
} else {
$qstr = join("",file($file));
//parse_str($qstr);
parse_str($qstr, $_POST);
//cleaning shit
$exts = array("_flength","_postdata","_err","_signal","_qstring");
foreach($exts as $ext) {
if(file_exists("$tmp_dir/$sid$ext")) {
@unlink("$tmp_dir/$sid$ext");
}
}
//setting vars like without progressbar
$_FILES['file']['name']=basename($_POST['file']['name']['0']);
$_FILES['file']['size']=$_POST['file']['size']['0'];
$_FILES['file']['tmp_name']=$_POST['file']['tmp_name']['0'];
}
} else if (isset($_POST['errormsg'])) {
$errormsg = urldecode($_POST['errormsg']);
if ($errormsg =="The maximum upload size has been exceeded")
$errormsg = $lang['upload_error_sizelimit'].' ('.getfilesize($max_filesize).').';
}
}
//uploading
if (isset($_FILES['file'])) {
if ($config['protect_upload']) authorize();
uploadfile($_FILES['file']);
}
function uploadfile($file) {
global $config, $lang, $max_filesize, $errormsg,$dir;
if ($file['error']!=0) {
$errormsg = $lang['upload_error'][$file['error']];
return;
}
//determine filename
$filename=$file['name'];
if (isset($_POST['filename']) && $_POST['filename']!="") $filename=$_POST['filename'];
$filename=basename($filename);
$filename=explode(".",basename($filename));
$ext = $filename[count($filename)-1];
unset($filename[count($filename)-1]);
$filename=join('_',$filename).'.'.$ext;
if (!in_array(strtolower(extname($filename)), $config['allowed_ext'])) {
$errormsg = $lang['upload_badext'];
return;
}
$filesize=$file['size'];
if ($filesize > $max_filesize) {
@unlink($file['tmp_name']);
$errormsg = $lang['upload_error_sizelimit'].' ('.getfilesize($max_filesize).').';
return;
}
$filedest = $config['storage_path'].'/'.$filename;
if (file_exists($filedest) && !$config['allow_overwrite']) {
@unlink($file['tmp_name']);
$errormsg = "$filename ".$lang['upload_error_fileexist'];
return;
}
$filesource=$file['tmp_name'];
if (!file_exists($filesource)) {
$errormsg = "$filesource do no exist!";
return;
} else if (!move_uploaded_file($filesource,$filedest)) {
if (!rename($filesource,$filedest)) {
$errormsg = $lang['upload_error_nocopy'];
return;
}
}
if ($errormsg=="") {
chmod ($filedest, 0755);
if ($config['log_upload']) logadm($lang['UPLOAD'].' '.$filedest);
$loc = rooturl();
if (sizeof($dir)>0) $loc .= join("/",$dir)."/";
Header("Location: ".$loc);
exit;
}
}
//make dir
if (isset ($_POST['dir'])) {
if ($config['protect_makedir']) authorize();
if ($dirlevel < $config['enable_folder_maxdepth']) {
$newdir = preg_replace("/[^0-9a-zA-Z\(\)\s]/i",'', $_POST['dir']);
if ($newdir <> "") {
$newdir = $config['storage_path']."/".$newdir;
if (file_exists($newdir))
$errormsg = $lang['make_error_exist'];
else {
if (mkdir($newdir)) {
$loc = rooturl();
if (sizeof($dir)>0) $loc .= join("/",$dir)."/";
Header("Location: ".$loc);
exit;
} else
$errormsg = $lang['make_error_cant'];
}
}
} else {
$errormsg = $lang['make_error_maxdepth'];
}
}
Gracias