Спустя 17 минут, 48 секунд m4a1fox написал(а):
Ха! А в великом google то мало что есть на эту тему!
Спустя 57 минут, 15 секунд m4a1fox написал(а):
эво как! Неужели никто не сталкивался?
Спустя 57 минут, 30 секунд (17.08.2011 - 23:35) Kusss написал(а):
pdf php upload - Запрос в Google
Работоспособность не проверял
<form action="<?php print $PHP_SELF?>" enctype="multipart/form-data" method="post">
Last Name:<br /> <input type="text" name="name" value="" /><br />
Class Notes:<br /> <input type="file" name="classnotes" value="" /><br />
<p><input type="submit" name="submit" value="Submit Notes" /></p>
</form>
<?php
define ("FILEREPOSITORY","./");
if (is_uploaded_file($_FILES['classnotes']['tmp_name'])) {
if ($_FILES['classnotes']['type'] != "application/pdf") {
echo "<p>Class notes must be uploaded in PDF format.</p>";
} else {
$name = $_POST['name'];
$result = move_uploaded_file($_FILES['classnotes']['tmp_name'], FILEREPOSITORY."/$name.pdf");
if ($result == 1) echo "<p>File successfully uploaded.</p>";
else echo "<p>There was a problem uploading the file.</p>";
} #endIF
} #endIF
?>
Работоспособность не проверял
Спустя 7 минут, 28 секунд (17.08.2011 - 23:43) m4a1fox написал(а):
Kusss
Есть тут баг один! Маленький баг но есть.
Если взять картинку, и сменить разрешение с jpg=>pdf, то скрипт благополучно пропустит его творение. про этот способ я знал, пришлось вернуться к нему!
Спустя 5 минут, 9 секунд m4a1fox написал(а):
Ха! Нашел выход! Поделиться???
Есть тут баг один! Маленький баг но есть.
Если взять картинку, и сменить разрешение с jpg=>pdf, то скрипт благополучно пропустит его творение. про этот способ я знал, пришлось вернуться к нему!
Спустя 5 минут, 9 секунд m4a1fox написал(а):
Ха! Нашел выход! Поделиться???
Спустя 6 минут, 3 секунды (17.08.2011 - 23:49) neadekvat написал(а):
Цитата (m4a1fox @ 18.08.2011 - 00:43) |
Если взять картинку, и сменить разрешение с jpg=>pdf |
Тут же по mime-типу проверка.
Кроме того, запрети выполнять любые скрипты в каталоге, в которых загружается pdf, вот и все. А когда отдаешь на скачку пользователям - предупреждай, что загружен файл таким же пользователем и там может быть вирус.
Спустя 4 минуты, 2 секунды (17.08.2011 - 23:53) Invis1ble написал(а):
m4a1fox
Цитата |
Ха! Нашел выход! Поделиться??? |
ну-ка, убей нас

Спустя 4 минуты, 1 секунда (17.08.2011 - 23:57) m4a1fox написал(а):
Invis1ble
Вот ты меня убиваешь! Думаешь я ни на что не годен?
Вот ты меня убиваешь! Думаешь я ни на что не годен?

Спустя 53 секунды (17.08.2011 - 23:58) m4a1fox написал(а):
Короче дело такое. методы. Ловите
Скажите где не прав, знать то хоть буду!
public $allowType = array('image/jpeg', 'image/jpg', 'image/png', 'image/gif');
public function TypeOfFile(){
if($_FILES["filename"]["type"]=="application/pdf" && $this->GetImageSize() === TRUE){
return true;
}
}
public function GetImageSize() {
if(!empty($_FILES["filename"]["name"])){
$type = getimagesize($_FILES['filename']['tmp_name']);
if(in_array($type['mime'], $this->allowType)){
return false;
}else{
return true;
}
}
}
Скажите где не прав, знать то хоть буду!
Спустя 27 секунд (17.08.2011 - 23:58) Invis1ble написал(а):
m4a1fox
Нееееет!!!
Я пощутил )
Нееееет!!!

Я пощутил )
Спустя 41 секунда (17.08.2011 - 23:59) neadekvat написал(а):
Какое это имеет отношение к pdf?
Спустя 3 минуты, 41 секунда (18.08.2011 - 00:02) Invis1ble написал(а):
ахаха
это же проверка для картинок, и то, далеко - не панацея
это же проверка для картинок, и то, далеко - не панацея
Спустя 1 минута, 48 секунд (18.08.2011 - 00:04) m4a1fox написал(а):
Invis1ble
Ваше предложение?
Ваше предложение?
Спустя 8 секунд (18.08.2011 - 00:04) neadekvat написал(а):
Invis1ble, getimagesize вернет false, если "изображение" - не изображение. И уж если вернуло массив, то можно просто пересоздать изображение, избавившись тем самым от потенциальных скриптов.
Спустя 48 секунд (18.08.2011 - 00:05) m4a1fox написал(а):
neadekvat
Цитата |
избавившись тем самым от потенциальных скриптов. |
Спасибо! Я бы не смог обосновать!
Спустя 11 секунд (18.08.2011 - 00:05) Invis1ble написал(а):
m4a1fox
Ты этот код хоть пробовал запустить? Это же бред полный
Спустя 1 минута, 18 секунд Invis1ble написал(а):
neadekvat
Ты этот код хоть пробовал запустить? Это же бред полный

Спустя 1 минута, 18 секунд Invis1ble написал(а):
neadekvat
Цитата |
getimagesize вернет false, если "изображение" - не изображение. И уж если вернуло массив, то можно просто пересоздать изображение, избавившись тем самым от потенциальных скриптов. |
я в курсе насчет этого хака, но ты присмотрись к коду повнимательней

Спустя 2 минуты, 34 секунды (18.08.2011 - 00:08) m4a1fox написал(а):
Invis1ble
Цитата |
коду повнимательней |
Ну скажи баг коли нашел! У меня то он работает!
Спустя 55 секунд (18.08.2011 - 00:09) Invis1ble написал(а):
m4a1fox
покажи, как ты пользуешься этим добром
покажи, как ты пользуешься этим добром
Спустя 1 минута, 22 секунды (18.08.2011 - 00:10) m4a1fox написал(а):
Invis1ble
Всмысле показать? Не догоняю! Если файл не картинка и с типом aplication/pdf то перемещаю его в папку, иначе false.
Всмысле показать? Не догоняю! Если файл не картинка и с типом aplication/pdf то перемещаю его в папку, иначе false.
Спустя 2 минуты, 33 секунды (18.08.2011 - 00:13) Invis1ble написал(а):
В смысле как объект создаешь, какие методы вызываешь. Т.е. код полностью приведи
Спустя 1 минута, 54 секунды (18.08.2011 - 00:15) m4a1fox написал(а):
Invis1ble
Не вопрос
Подскажите, если что!
Не вопрос
class downloadPdf {
private $path = 'file/'; // path for load on the folder
private static $table = 'journal_numbers'; // table in the DB
private $allowType = array('image/jpeg', 'image/jpg', 'image/png', 'image/gif');
private $ok = '<div style="background-color: #AEF9F8;
width: 110px; padding: 5px;"><font color=green>
file download. Ok</font></div>';
private $error = '<div style="background-color: grey;
width: 450px; padding: 5px;"><font color=red>
Some error isset. Please chenge format of dowload file or download file</font></div>';
public function downloadFile(){
if($this->CheckIsUploadedFile() === true && $this->TypeOfFile() === true){
$this->MoveFile();
$this->chengePdfLoad();
return $this->ok;
}else{
return $this->error;
}
}
/**
* check the file is isset
*/
private function CheckIsUploadedFile() {
if(is_uploaded_file($_FILES["filename"]["tmp_name"])) {
return true;
}
}
/**
* method for moove file in the folder
*/
public function MoveFile() {
move_uploaded_file($_FILES["filename"]["tmp_name"], "".$this->path."".$_POST['pdf_number'].".pdf");
return true;
}
/**
* method for chanche the field 'lpdf_load'=>1
*/
public function chengePdfLoad(){
$sql = "UPDATE `".self::$table."` SET
`pdf_load` = '1'
WHERE `number` = '".$_POST['pdf_number']."'
";
return connectDb::sql($sql);
}
public function TypeOfFile(){
if($_FILES["filename"]["type"]=="application/pdf" && $this->GetImageSize() === TRUE){
return true;
}
}
public function GetImageSize() {
if(!empty($_FILES["filename"]["name"])){
$type = getimagesize($_FILES['filename']['tmp_name']);
if(in_array($type['mime'], $this->allowType)){
return false;
}else{
return true;
}
}
}
}
Подскажите, если что!
Спустя 6 минут, 51 секунда (18.08.2011 - 00:21) Invis1ble написал(а):
1. при загрузке любой не-картинки getimagesize() вернет false
2. индекса 'mime' у булева значения быть не может (как и любого другого индекса) - здесь получаем Notice
3. булево false не содержится в массиве запрещенных mime-типов
и..... бинго! ф-ция GetImageSize() возвращает true!
А теперь попробуй загрузить тотже exe-шник
2. индекса 'mime' у булева значения быть не может (как и любого другого индекса) - здесь получаем Notice
3. булево false не содержится в массиве запрещенных mime-типов
и..... бинго! ф-ция GetImageSize() возвращает true!
А теперь попробуй загрузить тотже exe-шник

Спустя 4 минуты, 22 секунды (18.08.2011 - 00:26) m4a1fox написал(а):
Invis1ble
Цитата |
А теперь попробуй загрузить тотже exe-шник |
Ок! Попробую поспорить

Цитата |
$_FILES["filename"]["type"]=="application/pdf" |
Значит условие вернет false соответственно дальше действие скрипта остановится и будет error
Там же по сути двойная проверка!
Спустя 2 минуты, 35 секунд (18.08.2011 - 00:28) Invis1ble написал(а):
m4a1fox
Цитата |
$_FILES["filename"]["type"]=="application/pdf" Значит условие вернет false |
да, тут ты прав. Но вторая часть условия не имеет смысла никакого, кроме того, там полный бред
Спустя 1 минута, 33 секунды (18.08.2011 - 00:30) m4a1fox написал(а):
Invis1ble
Ну дык картинки не проходят, не проходят и картинки с расширение pdf, а вот pdf проходит! Мне кажется, это нормально! Но! Ваше предложения какие? Что бы вы изминили?
Ну дык картинки не проходят, не проходят и картинки с расширение pdf, а вот pdf проходит! Мне кажется, это нормально! Но! Ваше предложения какие? Что бы вы изминили?
Спустя 3 минуты, 49 секунд (18.08.2011 - 00:34) Invis1ble написал(а):
m4a1fox
Мое предложение - выкинуть ВЕСЬ этот УГ в топку и оставить условие
и предупреждать юзверей о возможности того, что файлы содержат вирусы. Ну либо все таки заливать их на сервер и проверять антивирусом, но тоже не панацея.
Мое предложение - выкинуть ВЕСЬ этот УГ в топку и оставить условие
if ($_FILES["filename"]["type"]=="application/pdf") {
// move_uploaded_file();
}
и предупреждать юзверей о возможности того, что файлы содержат вирусы. Ну либо все таки заливать их на сервер и проверять антивирусом, но тоже не панацея.
Спустя 5 минут, 58 секунд (18.08.2011 - 00:40) m4a1fox написал(а):
Invis1ble
Считаете? Хм. Но это будет админка! :)! Окей. Я ваше предложение понял! Еще вопрос не по теме ветки.
Есть подключение к БД
Говорят что там не хватает
Считаете? Хм. Но это будет админка! :)! Окей. Я ваше предложение понял! Еще вопрос не по теме ветки.
Есть подключение к БД
class connectDb extends defaultVar {
private $connection;
function __construct() {
$this->open_connection();
//echo "Connection is set";
}
private function open_connection() {
$this->connection = mysql_connect($this->DB_HOST, $this->DB_USER, $this->DB_PASS);
if(!$this->connection) {
die("Database connection faild: ".mysql_error());
}
else {
$db_select = mysql_select_db($this->DB_NAME);
if(!$db_select) {
die ("Database selected faild: ".mysql_error());
}
}
mysql_query("set names utf8") or die ("set names utf8 faild");
}
static function sql ($query) {
$result = mysql_query($query) or die(mysql_error());
if(!$result) {
die("Database query failed: ".mysql_error());
}
return $result;
}
}
Говорят что там не хватает
Цитата |
в классе работы с базой нет real_escape |
но где он должен быть - я не в курсе! Полдскажите, а, если не трудно!
Спустя 5 минут, 43 секунды (18.08.2011 - 00:45) Invis1ble написал(а):
Цитата |
в классе работы с базой нет real_escape |
речь идет очевидно об экранировании данных, но что у тебя там экранировать - я лично не вижу
Спустя 43 секунды (18.08.2011 - 00:46) waldicom написал(а):
Если свой хостинг, то можно использовать никсовую утилитку file
Спустя 1 минута, 32 секунды (18.08.2011 - 00:48) Invis1ble написал(а):
waldicom
ты о проверке mime? но ведь по идее и file можно "обмануть"...
ты о проверке mime? но ведь по идее и file можно "обмануть"...

Спустя 5 минут, 55 секунд (18.08.2011 - 00:54) m4a1fox написал(а):
Invis1ble
Цитата |
экранировании данных |
Я правильно понял, имеется ввиду mysql_real_escape_string?
Спустя 1 минута, 32 секунды (18.08.2011 - 00:55) Invis1ble написал(а):
m4a1fox
А чтоб я так знал
Наверное да.
А чтоб я так знал

Наверное да.
Спустя 7 минут, 7 секунд (18.08.2011 - 01:02) waldicom написал(а):
Цитата (Invis1ble @ 17.08.2011 - 22:48) |
ты о проверке mime? но ведь по идее и file можно "обмануть"... unsure.gif |
Если я не ошибаюсь, утилитка file смотрит по заголовкам файла. Так легко как проверку выше file не обойти.
Вот из документации:
Цитата |
There are three sets of tests, performed in this order: filesystem tests, magic number tests, and language tests. The first test that succeeds causes the file type to be printed. |
Я когда использовал её для одного проекта (продажа музыки) игрался с ней. Просто переименование файлов, удаление/изменение расширения программке не помеха - узнает спокойно. Но не исключаю, что и её можно обойти.
Спустя 1 минута, 49 секунд (18.08.2011 - 01:04) m4a1fox написал(а):
Invis1ble
Лады! Вот и поговорили! Что то вы сударь не в настроении сегодня!
Лады! Вот и поговорили! Что то вы сударь не в настроении сегодня!
Спустя 2 минуты, 44 секунды (18.08.2011 - 01:07) Invis1ble написал(а):
m4a1fox
Цитата |
Что то вы сударь не в настроении сегодня! |
это с чего еще ты взял? )
Спустя 3 минуты, 53 секунды (18.08.2011 - 01:11) m4a1fox написал(а):
Invis1ble
Да так... кажется просто мне!
Да так... кажется просто мне!