Tima42 7 Опубликовано 30 июня, 2017 Всем привет! В базе данных есть ячейка crest, в clan_data Я так понимаю в ней лежит иконка клана. Если это так, подскажите мне пожалуйста, как ее извлечь на страничку? Ну или киньте ссылкой на какие нибудь мануалы по php/sql, потому что я не знаю как этот тип данных называется и как с ним работать. Спасибо! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Desquire 451 Опубликовано 30 июня, 2017 Можноhttps://faibyshev.com/test/crest.php?clanid=268806343&serverid=1&crest=clanhttps://faibyshev.com/test/crest.php?clanid=268681255&serverid=1&crest=allyБыли идеи сделать автоподтягивает из бд на сайт для али + клана... но руки не дошли Вот куски, для теста делал, крон так и не допил creast.php <?php /* Powered by - Faibyshev A.O. Site - https://faibyshev.com/ */ define('UNHACK', true); require_once("libs/libs.php"); require_once("config/config.php"); if (isset($_REQUEST["clanid"]) && isset($_REQUEST["serverid"]) && isset($_REQUEST["crest"])) { if ($config_server[$_REQUEST["serverid"]]['access'] === TRUE ) { $crest = $id = (($_REQUEST["crest"] == 'clan' ) || ($_REQUEST["crest"] == 'ally') ) ? $_REQUEST["crest"] : 'clan'; $clan_crest = load_crest($_REQUEST["serverid"], $_REQUEST["clanid"], $crest); } else { empty_image(2); } } else { empty_image(3); } $file = tmpfile(); fwrite($file, $clan_crest); fseek($file, 0); $dds = fread($file,4); if ($dds!=='DDS ') empty_image(5);; //DDS header $hdrSize = readInt($file); $hdrFlags = readInt($file); $imgHeight = readInt($file)-4; $imgWidth = readInt($file); $imgPitch = readShort($file); //DXT1 header fseek($file, 84); $dxt1 = fread($file,4); if ($dxt1!=='DXT1') empty_image(6);; //here we go fseek($file, 128); @header ("Content-type: image/png"); @header("Cache-Control: max-age=3600"); $img=imagecreatetruecolor($imgWidth,$imgHeight); for ($y=-1; $y<$imgHeight/4; $y++) { for ($x=0; $x<$imgWidth/4; $x++) { $color0_16 = readShort($file); $color1_16 = readShort($file); $r0 = ($color0_16 >> 11) << 3; $g0 = (($color0_16 >> 5) & 63) << 2; $b0 = ($color0_16 & 31) << 3; $r1 = ($color1_16 >> 11) << 3; $g1 = (($color1_16 >> 5) & 63) << 2; $b1 = ($color1_16 & 31) << 3; $color0_32 = imagecolorallocate($img,$r0,$g0,$b0); $color1_32 = imagecolorallocate($img,$r1,$g1,$b1); $color01_32 = imagecolorallocate($img,$r0/2+$r1/2,$g0/2+$g1/2,$b0/2+$b1/2); $black = imagecolorallocate($img,0,0,0); $data = readInt($file); for ($yy=0;$yy<4;$yy++) { for ($xx=0;$xx<4;$xx++) { $bb = $data & 3; $data = $data >> 2; switch ($bb) { case 0: $c = $color0_32; break; case 1: $c = $color1_32; break; case 2: $c = $color01_32; break; default: $c = $black; break; } imagesetpixel($img,$x*4+$xx,$y*4+$yy,$c); } } } } imagepng($img); fclose($file); exit; ?> Всякие функции function clear_int($str) { return preg_replace("/[^0-9]/i", "", $str); } function empty_image($size = 1) { @header("Content-type: image/gif"); @header("Cache-Control: max-age=3600"); $img=imagecreatetruecolor($size, $size); imagecolortransparent($img, 0); imagegif($img); imagedestroy($img); exit(); } function readInt($file) { $b4 = ord(fgetc($file)); $b3 = ord(fgetc($file)); $b2 = ord(fgetc($file)); $b1 = ord(fgetc($file)); return ($b1<<24)|($b2<<16)|($b3<<|$b4; } function readShort($file) { $b2 = ord(fgetc($file)); $b1 = ord(fgetc($file)); return ($b1<<|$b2; } function load_crest($serverid, $clanid , $crest = 'clan' ) { try { global $config_db; $conn = pdo_connect($config_db); if (!$conn) { throw new Exception(1); } $STH = $conn->prepare("select * from crests where server_id = ? AND clan_id = ? AND crest_type = ?"); $STH->execute(array($serverid, $clanid, $crest)); if (!$STH) { throw new Exception(1); } $STH->setFetchMode(PDO::FETCH_ASSOC); $info = $STH->fetch(); return $info['crest']; } catch (Exception $e) { empty_image(); } } Если нужен дамп с данными, черкани в скайп. -- -- Структура таблицы `ally_data` -- CREATE TABLE IF NOT EXISTS `ally_data` ( `ally_id` int(11) NOT NULL DEFAULT '0', `ally_name` varchar(45) CHARACTER SET utf8 DEFAULT NULL, `leader_id` int(11) NOT NULL DEFAULT '0', `expelled_member` int(10) unsigned NOT NULL DEFAULT '0', `crest` varbinary(192) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Структура таблицы `clan_data` -- CREATE TABLE IF NOT EXISTS `clan_data` ( `clan_id` int(11) NOT NULL DEFAULT '0', `clan_name` varchar(45) CHARACTER SET utf8 DEFAULT NULL, `clan_level` tinyint(3) unsigned NOT NULL DEFAULT '0', `hasCastle` tinyint(3) unsigned NOT NULL DEFAULT '0', `hasFortress` tinyint(3) unsigned NOT NULL DEFAULT '0', `hasHideout` tinyint(3) unsigned NOT NULL DEFAULT '0', `ally_id` int(11) NOT NULL DEFAULT '0', `leader_id` int(11) NOT NULL DEFAULT '0', `crest` varbinary(256) DEFAULT NULL, `largecrest` varbinary(8192) DEFAULT NULL, `reputation_score` int(11) NOT NULL DEFAULT '0', `warehouse` int(11) NOT NULL DEFAULT '0', `expelled_member` int(10) unsigned NOT NULL DEFAULT '0', `leaved_ally` int(10) unsigned NOT NULL DEFAULT '0', `dissolved_ally` int(10) unsigned NOT NULL DEFAULT '0', `auction_bid_at` int(11) NOT NULL DEFAULT '0', `airship` smallint(6) NOT NULL DEFAULT '-1', `point` int(11) NOT NULL DEFAULT '20' ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Структура таблицы `crests` -- CREATE TABLE IF NOT EXISTS `crests` ( `server_id` int(11) NOT NULL, `clan_id` int(11) NOT NULL, `crest_type` varchar(256) NOT NULL, `crest` varbinary(256) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Индексы сохранённых таблиц -- -- -- Индексы таблицы `ally_data` -- ALTER TABLE `ally_data` ADD PRIMARY KEY (`ally_id`), ADD KEY `leader_id` (`leader_id`); -- -- Индексы таблицы `clan_data` -- ALTER TABLE `clan_data` ADD PRIMARY KEY (`clan_id`), ADD KEY `leader_id` (`leader_id`), ADD KEY `ally_id` (`ally_id`); -- -- Индексы таблицы `crests` -- ALTER TABLE `crests` ADD KEY `search` (`server_id`,`crest_type`(255),`clan_id`); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Tima42 7 Опубликовано 30 июня, 2017 (изменено) Можно https://faibyshev.com/test/crest.php?clanid=268806343&serverid=1&crest=clan https://faibyshev.com/test/crest.php?clanid=268681255&serverid=1&crest=ally Были идеи сделать автоподтягивает из бд на сайт для али + клана... но руки не дошли Вот куски, для теста делал, крон так и не допил Снова вы! Добрый день! Спасибо, на досуге ознакомлюсь. Пробежался по диагонали, вроде бы мысль уловил. Изменено 30 июня, 2017 пользователем Tima42 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты