PHP уроки для начинающих

PHP уроки

  • Главная
  • PHP с чего начать?
  • Уроки PHP
  • Массивы
  • Функции
  • MySQL
  • Форум
Меню

  • PHP - с чего начать?
  • Уроки PHP
  • Функции
  • Массивы
  • Denwer
  • MySQL
  • Информация
  • Dreamweaver уроки
  • Галерея
  • Как здесь качать?
  • КНИГИ

Связаны

  • Русские Скидки . Салоны Красоты - Микротоковая Терапия. Центр Эстетики Лица И Тела.

Что нового?
Как создать свой сайт? Урок третий.
Загрузка файлов
Регистрация PHP
Как создать свой сайт? Урок второй.
Как создать свой сайт?
Размер изображения
Index.php

Новости на email
Подпишись на новости.
Уроки PHP на email.


Имя(login):

*Ваш email:


Календарь
Май (2012)
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031   

Недорогие проекты домов из оцилиндрованного бревна. Коттеджи дома из оцилиндрованного бревна.
ИГРЫ Компьютерные, настольные, детские конструкторы, карточные игры, головоломки.
on-books.ru
 
Комментарии
Текст
сообщениясбрасы
ваются все
настройки
мозилы+удаляютс
я в...
"Сейчас
откройте
страничку в
браузере. Для
этого щёлкни...
Спасибо за
уроки
спосиба для
помщ
Читать учитесь.
 
TOP5-уроки
1.  Привет, МИР! - 62109
2.  Метод GET - 35587
3.  Как вставить картинку в скрипт PHP. - 33564
4.  Как настроить Adobe Dreamweaver для работы с сайтом. - 29802
5.  Метод POST - 29176

Хэш

Главная » Уроки PHP » Хэш

PHP урок № 295

Сравнение ХЭШ файла и его представление.

Хэш, хэширование (от английского hashing) - один из способов преобразования, кодирования входящих данных, разной длины. На выходе выдаётся битовая строка. Это принцип, но способы и сложность функций выдающих хэш разнообразны. Хэш называют отпечаток файла . Нет 100% гарантии того, что хэш у всех файлов разный, но степень совпадения ничтожно мала. Поэтому, если hash, у одного и того же файла разница, через промежуток времени, можно с большей уверенностью сказать, что он был изменён.
В данном уроке мы используем функцию PHP md5_file , которая чаще всего применяется для снятия отпечатка.
Синтаксис функции:
string md5_file (string filename)
Функция в качестве аргумента получает имя файла или путь до него и выдаёт строку хэш кода на выходе.

Листинг № 1 - Сравнение хэша файлов.

<style>
h1{
	color:#036;
	font-size:1.2em;
	font-family: Georgia, "Times New Roman", Times, serif;
	font-weight: lighter;
	}
legend{
	color: #036;
	font-family: Tahoma, Geneva, sans-serif;
	font-size: 0.9em;
	margin-right: 10px;
	margin-left: 10px;
}
fieldset{
	width: 500px;
	border: 1px solid #036;
	margin: 40px;
	padding-top: 15px;
	padding-right: 15px;
	padding-bottom: 15px;
	padding-left: 25px;
}
.red{
	color:#F33;
	font-family: Tahoma, Geneva, sans-serif;
	font-size: 1em;
	font-weight: bolder;
	}
.green{
	color:#090;
	font-family: Tahoma, Geneva, sans-serif;
	font-size: 1em;
	font-weight: bolder;
	}
#button{
	height: 22px;
	border: 1px solid #CCC;
	background-color: #FFF;
	width: 198px;
	}
#fileField{
	height: 22px;
	border: 1px none #CCC;
	background-color: #FFC;
	color: #F39;
	padding-left: 3px;
	}
</style>
<?php
$as 
= "Вставьте хэш для сравнения";

// Очищаем директория от файлов  
// Текущий каталог.
$dir = ".";
// Если каталог успешно открыт...
if ($dh = opendir($dir))
{
        
// ... считываем содержимое в переменную $file.
        
while (($file = readdir($dh)) !== false) 
        {
            
// Если это файл и он не index.php
            
if(is_file($file) && ($file != "index.php") )
            {
                
// ...удаляем его.
                
unlink("$file");
            }
        }
        
// Закрываем директорию.
        
closedir($dh); 
}

if(
$_POST['button'] == "Узнать ХЭШ" && !empty($_FILES["filename"]["name"]))
{
    
$hash = htmlspecialchars($_POST['hash']); // получаем исходный хэш из формы
    
if(!empty($hash) && $hash != $as)
    {
       
$as = $hash;    
    }
    if(
$_FILES["filename"]["size"] < 1024*2*1024)
    {
        if (
copy($_FILES["filename"]["tmp_name"], "../hash/".$_FILES["filename"]["name"]))
        {
            
$rz = "Размер файла: ".round( (($_FILES["filename"]["size"]/1024)/1024),3)." МБ";
            
$q = md5_file("../hash/".$_FILES["filename"]["name"]);
            if(
$hash !== $q)
            {
                   
$q =  "<div class='red'>". $q."</div>";
            }
        } 
        else
        {
            echo 
"Ошибка загрузки файла: " . $_FILES['filen']['name'];
        }
    }
    else
    {
       
$rz = "Ошибка. Файл превышает 2МБ";    
    }
}
?>
<fieldset>
  <legend>Проверить файл до 2МБ</legend>
  <h1>Хэш файла</h1>
<?php
   
echo $rz;
   echo 
"<div class='green'>".$q . "</div><br>";
?>
<form name="form1" enctype="multipart/form-data" method="post" action="">

    <input type="text" name="hash" id="fileField" size="50%" value="
<?php echo $as;?>
">
<br>
<br>
<input name="filename" type="file" id="fileField" size="50%">
<br>
<br>
<input type="submit" name="button2" id="button" value="Очистить">
 <input type="submit" name="button" id="button" value="Узнать ХЭШ">
</form>
</fieldset>
Принцип работы программы следующий.
  • Вы выбираете файл на своём компьютере, который нужно проверить на соответствие хэш коду полученному с этим же файлом.
  • В строку где написано "Вставьте хэш для сравнения", вводите соответственно проверочный код, т.е. присланный вместе с файлом.
  • Нажимаете кнопку "Узнать ХЭШ".
  • Если файл не менялся то получите зелёный хэш код, в противном случаи он будет красный.
Хочу отметить, что проверять следует хэш закодированный таким же способом, т.е. с помощью алгоритма md5 - это важно!
Этот код проверяет файлы весом не более 2МБ. Если требуется проверить больше этого объёма, надо править немного код. Строку ["size"] < 1024*2*1024 двойку между звёздочек исправить на сколько мегабайт вам надо. Плюс к этому, обязательно нужно на сервере (я использую Apache) изменить директивы отвечающие за размер обработки файлов (post_max_size и upload_max_filesize). Прописать им в байтах сколько можно обрабатывать. Иногда следует увеличить время обработки скрипта на сервере, по умолчанию оно равно 30 сек (apache). Ну и в заключение, все эти директивы находятся в конфигурационном файле httpd.conf. Кто использует Denwer, путь такой: \usr\local\apache\conf\httpd.conf
Скачать программу проверки хэш файла можно здесь.
Установка приложения.
  1. Распаковать архив в корень сайта.
  2. Затем в адресной строке наберите URL http://домен вашего сайта/hesh/
  3. Откроется приложение.
  4. Пользуйтесь на здоровье.
Проверить, испытать как работает приложение.

Урок закончен.

SETTER © LPHP.RU
Администрация сайта
01.04.2010 07:04:18

Обсудить на форуме.

Рекомендованные уроки этого раздела:
  • Передвигаем картинку. Двигаем рисунок.
  • Как создать свой сайт?
  • Как выводить по 3 фото в строку.
  • Слайдшоу

НАПИШИТЕ СВОЙ КОММЕНТАРИЙ

Имя:

Введите цифры с картинки:

Нет сообщений.

Copyright © 2009-2012 LPHP.RU