-6
我想不出什麼導致這個錯誤:PHP T_Public語法錯誤?
Parse error: syntax error, unexpected T_PUBLIC
它說的錯誤是在此代碼(public function upload($uid = 'public')
的第二行存在的。
//--> Uploads the file
public function upload($uid = 'public')
{
//Get file details
if(isset($_GET['ajax']))
{
if(!$_SERVER['HTTP_X_FILE_SIZE'] > 0) return false;
$filename = strip_tags($_SERVER['HTTP_X_FILE_NAME']);
$file_type = $_SERVER['HTTP_X_FILE_TYPE'];
$size = round($_SERVER['HTTP_X_FILE_SIZE']/1000, 3);
}
else
{
if($_FILES["files"]["error"] > 0 or empty($_FILES)) return false;
$filename = strip_tags($_FILES['files']['name']);
$file_type = $_FILES['files']['type'];
$size = round($_FILES['files']['size']/1000, 3);
}
//FF null type fix
if($file_type == null || strlen($file_type) == 0) $file_type = "unknown";
//Reduce filename to < 255 char
if(strlen($filename) > 255)
{
$filename = urldecode($filename);
$filename = substr($filename, 0, 36) . '--.' . pathinfo($filename, PATHINFO_EXTENSION);
$filename = urlencode($filename);
}
//Check file size
if($size > (maxFileSize/1000))
{
$this->errorMessage = "file too large";
return false;
}
//Check file type
if(limitFileTypes and !in_array($file_type, explode(',', allowedFileTypes)))
{
$this->errorMessage = "file type not allowed";
return false;
}
$db = $this->connectDB();
$share = isset($_GET['ajax'])?$_SERVER['HTTP_BITDROPSHARE']:$_POST['bitdrop_share'];
$share = ($share == 'true' || $share == 'share')? 1 : 0;
$password = isset($_GET['ajax'])?$_SERVER['HTTP_BITDROPPASS']:$_POST['bitdrop_password'];
//Find an available shortURL
$res = $db->prepare("select count(shortURL) from share where binary shortURL = ?;");
do
{
$shortURL = $this->shortURL();
$res->execute(array($shortURL));
$data = $res->fetchAll(PDO::FETCH_COLUMN, 0);
}
while($data[0] != 0);
$password = (is_null($password) or strlen($password)==0) ? 0 : sha1($password . $shortURL) ;
$q = "insert into details (date, name, size, type, public, password) values (now(), ?, ?, ?, ?, ?)";
$data = array($filename, $size, $file_type, $share, $password);
$res = $db->prepare($q);
//exec command or print error
if(!$res->execute($data)) print_r($db->errorInfo());
$fid = $db->lastInsertId();
$q = "insert into share (shortURL, file_id) values (?, ?)";
$data = array($shortURL, $fid);
$res = $db->prepare($q);
$res->execute($data);
//Connect unique user to file
$tid = $this->addTag("_$uid");
$q = "insert into `fid-tid` (file_id, tag_id) values ('$fid', '$tid');";
$res = $db->prepare($q);
$res->execute();
$file = $_SERVER[DOCUMENT_ROOT] . "/uploads/$fid.temp";
$this->log('upload', '{ "uid" : "'.$uid.'", "fid" : "'.$fid.'", "shortURL" : "'.$shortURL.'" }');
$db = null;
//Upload file
if(isset($_GET['ajax']))
{
if(!isset($_SERVER['HTTP_X_FILE_NAME']) && !isset($_SERVER['CONTENT_LENGTH']))
{
$this->errorMessage = "no headers found";
return false;
}
$fileReader = fopen('php://input', "r");
$fileWriter = fopen($file, "w+");
while(true)
{
$buffer = fgets($fileReader, 4096);
if(strlen($buffer) == 0)
{
fclose($fileReader);
fclose($fileWriter);
$this->createThumb($fid, $shortURL);
$this->shortURL = $shortURL;
return true;
}
fwrite($fileWriter, $buffer);
}
}
else
{
move_uploaded_file($_FILES["files"]["tmp_name"], $file);
$this->createThumb($fid, $shortURL);
$this->shortURL = $shortURL;
return true;
}
}
哎呀!你的縮進發生了什麼? ':-)' – halfer
下一次,看看你是否可以做一個簡單的例子。在你的情況下,你可以做一個這樣的例子:'public function test(){echo'test';}'..你仍然會得到錯誤,問題會變得更加清晰。答案不會更有趣,因爲'公共'不允許在那裏,但它會提出更好的問題:) – Nanne
似乎像經典的部分複製+粘貼(雖然可能是其他一些語法問題)。 Origin,btw:'bitdrop.class.php - v1.4'。 – mario