Как я говорю если чье-то фальсифицирование типа файла? (PHP)

Переменная x1 не объявлена. Поэтому это должен быть вариант. Похоже, что [myCar] подразумевается как имя диапазона. Если это так, можно было бы присвоить его x1, если бы его местоположение было известно. Возможно, ваш TextBox находится на рабочем листе, и ссылка на самом деле работает. Возможно, x1 пусто с этого момента. Я предлагаю вам проверить.

Затем вы назначаете «MyCar» свойству RowSource в ListBox. Как вы знаете, это свойство содержит строку. Если MyCar является именем ранга, он не может быть действительным адресом диапазона. Возможно, что-то вроде Range(MyCar).Address подойдет. .RowSource = "myCar" просто назначает слово «MyCar» для RowSource, и это должно дать сбой. В For i = 1 To UBound(x1, 1) вы теперь ожидаете, что x1 будет массивом. Возможно, x1 = [myCar] эквивалентно ActiveSheet.Range(MyCar).Value. Я бы не использовал этот синтаксис, но вы проверили его функциональность выше.

Предполагается, что x1 действительно содержит значения диапазона. назначить их свойству List в ListBox не удастся, если свойство ColumnsCount не установлено. Это не видно из вашего кода. Мы также не можем сказать, равны ли столбцы, доступные в x1, столбцам, доступным в списке, или столбцам, требуемым кодом.

ListBox имеет строки и столбцы. Учитывая, что ваша переменная i считает строки, ваша переменная ii должна считать столбцы (я бы использовал R и C, чтобы помочь мне следить за тем, что я делаю). Затем, с учетом всех строк и столбцов, на что рассчитывает ваша переменная iii?

Итак, совершенно очевидно, что в вашем коде недостаточно контроля над строками и столбцами ListBox. Однако после сортировки вы можете обнаружить, что значения, которые вы хотите присвоить, не существуют. Поэтому строка, которая вылетает из вашей программы, может содержать более одной ошибки.

12
задан Mihai Limbășan 11 October 2008 в 16:37
поделиться

9 ответов

Магическое число. Если можно считать первые несколько байтов двоичного файла, можно знать, какой файл это.

18
ответ дан 2 December 2019 в 03:56
поделиться

Проверьте расширение FileInfo PECL для PHP, который может сделать поиски волшебства MIME для Вас.

8
ответ дан 2 December 2019 в 03:56
поделиться

Вид. Большинство типов файлов имеет некоторые байты, зарезервированные для маркировки их так, чтобы Вы не полагались на расширение. Сайт http://wotsit.org является большим ресурсом для обнаружения этого для конкретного типа.

Если Вы находитесь в системе Unix, я полагаю, что команда файла не полагается на расширение, таким образом, Вы могли выйти из оболочки к нему, если Вы не хотите писать код проверки байта.

Для PNG (http://www.w3.org/TR/PNG-Rationale.html)

Первые восемь байтов файла PNG всегда содержат следующие значения:

(десятичное число) 137 80 78 71 13 10 26 10

(шестнадцатеричный) 89 50 4e 47 0d 0a 1a 0a

(ASCII C нотация) \211 P N G \r \n \032 \n

4
ответ дан 2 December 2019 в 03:56
поделиться

Много типов файлов имеют "магические числа" в начале файла для идентификации их, можно считать некоторые байты из передней стороны файла и сравнить их со списком известных магических чисел.

2
ответ дан 2 December 2019 в 03:56
поделиться

Если Вы только имеете дело с изображениями, то getimagesize () должен отличить действительное изображение от поддельного.

$ php -r 'var_dump(getimagesize("b&n.jpg"));'
array(7) {
  [0]=>
  int(200)
  [1]=>
  int(200)
  [2]=>
  int(2)
  [3]=>
  string(24) "width="200" height="200""
  ["bits"]=>
  int(8)
  ["channels"]=>
  int(3)
  ["mime"]=>
  string(10) "image/jpeg"
}

$ php -r 'var_dump(getimagesize("/etc/passwd"));'
bool(false)

Ложное значение от getimagesize не является изображением.

2
ответ дан 2 December 2019 в 03:56
поделиться

В системе Unix, получая вывод от команды 'файла' должен обеспечить соответствующую информацию.

1
ответ дан 2 December 2019 в 03:56
поделиться

Для точного ответа о том, как Вы могли быстро сделать это в PHP, проверьте этот вопрос: Как я нахожу тип пантомимы файла с php?

1
ответ дан 2 December 2019 в 03:56
поделиться

А также определяя тип файла, Вы могли бы хотеть не упустить файлы с другими файлами, встроенными или добавленными им. Это, к сожалению, потребует более всестороннего анализа содержания файла, чем просто использование "магических чисел".

Например, http://quantumrook.wordpress.com/2007/06/06/hide-a-rar-file-in-a-jpg-file/ (этот конкретный тип сокрытия данных может легко работаться вокруг путем загрузки и пересохранения в новый файл данных действительного образа.. другие будут более трудными.)

1
ответ дан 2 December 2019 в 03:56
поделиться

Как примечание стороны я столкнулся с подобной проблемой, где я должен был сделать свою собственную проверку типа. Интерфейс фронтэнда к моему приложению был сделан во флэш-памяти. Файлы передавались через флэш-память сценарию PHP. Когда я пытался сделать, проверка типа MIME с помощью php тип, всегда возвращаемый, была application/octetstream, потому что это прибывало из флэш-памяти.

Я должен был реализовать, магические числа вводят парадигму. Я просто создал XML-файл, который содержал тип файла наряду с некоторыми шаблонами определения, найденными в течение начала файла. После того как файл достиг сервера, я сделал некоторое сопоставление с образцом с XML-файлом и затем принял или отклонил файл. Я не сделал заметил любое реальное снижение производительности также, которое я ожидал.

Это - просто примечание стороны любому, кто может использовать флэш-память как там фронтэнд и пытаться ввести, проверяют файл, после того как это загружается.

1
ответ дан 2 December 2019 в 03:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: