Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
function validate_invite($hash_serialize, $userfile) {
// если при загрузке изображения не было ошибок, размер изображения не превышает допустимый и тип стоответсвует нужному
if (isset($userfile) && is_uploaded_file($userfile['tmp_name']) && $userfile['size'] < 5*1024 && $userfile['type'] == 'image/png' && $userfile['error'] == 0) {
// создаём изображение на основе загруженного
$source = ImageCreateFromPNG($userfile['tmp_name']);
// определяем точки в которых будет проверяться цвет
$x[] = 48; $y[] = 48; $x[] = 2; $y[] = 2; $x[] = 48; $y[] = 2; $x[] = 2; $y[] = 48;
$rgb_array = Array();
for ($i = 0; $i < 4; ++$i) {
// получает индекс цвета в точке
$color_index = imagecolorat($source, $x[$i], $y[$i]);
// получает цвет для индекса
$color_tran = imagecolorsforindex($source, $color_index);
// записываеться в массив
$rgb = Array();
$rgb[] = $color_tran['red'];
$rgb[] = $color_tran['green'];
$rgb[] = $color_tran['blue'];
$rgb_array[] = $rgb;
}
// преобоазует массив в байтово-поточное представление для сопоставления с записью в массиве
$serialize_rgb_array = serialize($rgb_array);
// получает хэш
$hash_serialize_rgb_array = md5($serialize_rgb_array);
// ищет запись в бд
$_CORE['db']->query('SELECT `di_invite`.`invite_id` FROM `di_invite` WHERE `di_invite`.`invite_hash` = ?;', $hash_serialize_rgb_array);
// если найдено, очищает память, и возвращает true, иначе очищает память и возвращает false
if ($_CORE['db']->num_rows() < 1) {
imagedestroy($source);
return false;
} else {
imagedestroy($source);
$hash_serialize = $hash_serialize_rgb_array;
return true;
}
} else return false;
}$rgb_array = Array();
for ($i=0; $i < 4; ++$i) {
$rgb = Array();
$randnum = intval(mt_rand(0,255)); $rgb[] = $randnum;
$randnum = intval(mt_rand(0,255)); $rgb[] = $randnum;
$randnum = intval(mt_rand(0,255)); $rgb[] = $randnum;
$rgb_array[] = $rgb;
}
$rgb_array = Array();
for ($idx=0; $idx < 4; ++$idx) {
$rgb = array();
for($idx2 = 0; $idx2 < 3; ++ $idx2) $rgb[] = mt_rand(0, 255);
$rgb_array[] = $rgb;
}
$serialize = serialize($rgb_array);
$hash = md5(serialize($rgb_array));
$rgb = array();
for($idx2 = 0; $idx2 < 3; ++ $idx2) $rgb[] = mt_rand(0, 255);
$rgb = array(mt_rand(0, 255),mt_rand(0, 255),mt_rand(0, 255));$rgb = array();
for($idx2 = 0; $idx2 < 3; ++ $idx2) $rgb[] = mt_rand(0, 255);
$rgb_array[] = $rgb;
$rgb_array[] = array(mt_rand(0, 255),mt_rand(0, 255),mt_rand(0, 255));rgb = [ random.randint(0, 255) for _ in range(0,3) ]

SELECT `di_invite`.`invite_serialize`, `di_invite`.`invite_username_recipient` FROM `di_invite`.`di_invite` WHERE `invite_hash` = ?;
Генерация приглашений, похожих на инвайты сайта habrahabr