From 1bfcb343c7b5bdbba5d7952e9959716e044e6b63 Mon Sep 17 00:00:00 2001 From: printempw Date: Thu, 21 Jan 2016 22:36:27 +0800 Subject: [PATCH] add: remove original texture automatically before uploading --- includes/user.class.php | 5 +- includes/utils.class.php | 55 ++++++++++++------ ...bc008b443780698aaedbb7d4e29960e8a2c754a771 | Bin 0 -> 1457 bytes ...d59d02ecb1cf25dfd21fc88be1c183c9261f5fdd69 | Bin 3689 -> 0 bytes 4 files changed, 42 insertions(+), 18 deletions(-) create mode 100644 textures/3f14a21723023642b9e8d2bc008b443780698aaedbb7d4e29960e8a2c754a771 delete mode 100644 textures/834cbd848f0a29008bf5b1d59d02ecb1cf25dfd21fc88be1c183c9261f5fdd69 diff --git a/includes/user.class.php b/includes/user.class.php index af375ca2..d8274eb0 100644 --- a/includes/user.class.php +++ b/includes/user.class.php @@ -3,7 +3,7 @@ * @Author: printempw * @Date: 2016-01-16 23:01:33 * @Last Modified by: prpr - * @Last Modified time: 2016-01-17 12:02:23 + * @Last Modified time: 2016-01-21 22:33:37 */ class user { @@ -63,9 +63,12 @@ class user { public function setTexture($type, $file) { $hash = utils::upload($file); if ($type == "skin") { + // remove the original texture first + utils::remove("./textures/".$this->getTexture('skin')); return utils::update($this -> uname, 'skin_hash', $hash); echo "shit"; } else if ($type == "cape") { + utils::remove("./textures/".$this->getTexture('cape')); return utils::update($this -> uname, 'cape_hash', $hash); } return false; diff --git a/includes/utils.class.php b/includes/utils.class.php index 640b3eff..7fd65ca6 100644 --- a/includes/utils.class.php +++ b/includes/utils.class.php @@ -3,7 +3,7 @@ * @Author: printempw * @Date: 2016-01-16 23:01:33 * @Last Modified by: prpr - * @Last Modified time: 2016-01-21 21:59:47 + * @Last Modified time: 2016-01-21 22:26:07 */ $dir = dirname(dirname(__FILE__)); require "$dir/config.php"; @@ -14,7 +14,7 @@ class utils { /** * Connect to database * - * @return null + * @return void */ public static function connect() { if (!self::$connection) { @@ -31,9 +31,9 @@ class utils { /** * Use static function to replace raising a exception * - * @param {integer} errno - * @param {string} msg, message to show - * @return null + * @param int $errno + * @param string $msg, message to show + * @return void */ public static function raise($errno = -1, $msg = "Error occured.") { $exception['errno'] = $errno; @@ -42,11 +42,11 @@ class utils { } /** - * Return array of rows which matches provided key adn value + * Return array of rows which matches provided key and value * - * @param {string} key - * @param {string} value - * @return {array} row array returned by mysql_fetch_array() + * @param string $key + * @param string $value + * @return array $row, rows matched the key and value */ public static function select($key, $value) { $query = self::query("SELECT * FROM users WHERE $key='$value'"); @@ -57,8 +57,8 @@ class utils { /** * Insert a record to database * - * @param {array} array, [uname, passwd, ip] - * @return boolean + * @param array $array, [uname, passwd, ip] + * @return bool */ public static function insert($array) { $uname = $array['uname']; @@ -77,8 +77,8 @@ class utils { /** * Rename uploaded file * - * @param {array} file, files uploaded via HTTP POST - * @return {string} hash, file's sha256 hash + * @param array $file, files uploaded via HTTP POST + * @return string $hash, sha256 hash of file */ public static function upload($file) { move_uploaded_file($file["tmp_name"], "./textures/tmp.png"); @@ -87,11 +87,25 @@ class utils { return $hash; } + /** + * Remove a file + * + * @param $filename + * @return $bool + */ + public static function remove($filename) { + if (!unlink($filename)) { + self::raise(-1, "Uncaught error when deleting $filename"); + } else { + return true; + } + } + /** * Simple SQL injection protection * - * @param {string} string, string to convert - * @return {string} + * @param string $string + * @return string */ public static function convertString($string) { return stripslashes(trim($string)); @@ -100,8 +114,8 @@ class utils { /** * Query with raw SQL statement * - * @param {string} sql, raw SQL statement - * @return {boolean} + * @param string $sql, raw SQL statement + * @return bool */ private static function query($sql) { self::connect(); @@ -114,6 +128,13 @@ class utils { mysql_close(self::$connection); } + /** + * Get the value of key in an array if index exist + * + * @param string $key + * @param array $array + * @return object + */ function getValue($key, $array) { if (array_key_exists($key, $array)) { return $array[$key]; diff --git a/textures/3f14a21723023642b9e8d2bc008b443780698aaedbb7d4e29960e8a2c754a771 b/textures/3f14a21723023642b9e8d2bc008b443780698aaedbb7d4e29960e8a2c754a771 new file mode 100644 index 0000000000000000000000000000000000000000..9e65a4f1940f38e5ca2a46587ed59759d04ed7cb GIT binary patch literal 1457 zcmV;i1y1^jP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1tLjAK~!i%%~wrp zR528tzu>=cA?iZK3L+vZejtcN(S=YIp$lCy1z66?I_+wNS*a zq#*tR3tDg;-?=j zn_=$4xU^yNWe6kpnyvokn6rPwDT||zs{c#{D~2)5dF$PI55IuVl5jl@S`*PF0jK+i zlRyC;b1pznz$E~h&yp}D1pN8&HCe?Xx+DO5}&&1U*Xvz~KhU#)v}v=-dK805r}PWRQ>^5x}d^k{|?>f@Fc5HUZkC2PWI#Qd-wz zh6o|4wx%-Ks&DfK^nXn}iRS!k;%S&4J6F8YN(7{|kLwY8GJh%FB2lv>!fILrHU3`% zYzb4cDH3?QB(+-Q9s1DF@-i1Nnx`c!zpe7us3cg?ya`-uG6kxV`~CH8-6goDl`ZNZ znadzS3gnp4(Z9v4k$64-ViK@+5QI$1D&pE!=IUjOl1awHmI!G1dNbXfmcS<@psz{7 zkFAvy(rA!ifd~lZ9EyZEt~8&t9)iDeC+=MglGH>k&}k4LrYgr@T#6AN-%_-@Sm5kC zZwbTz98hbkcHLDZlmKX1A*pp`uBnP=0g_4LK@&-+0R4P_zop%2X`yYDTR&b!0`QH} zwuGiE)+Q~WKmxR_O`4J20!xvQ$_p4T?4HT>_;-BOwX_*QR~i&EpP32a^XFyvJ;pF6 z1l8Q4o+t?+g$ET6X0@ebLMfTyLya=_^;mi_Vr^sbR;5ke^U>Ga+SiGWkn!NbGBTR+ zpcxyi1&E)Ix30Z}CD3fqF5P|;%^e4adxWv)c^6RoX(Flp5^?Q3z)1yP?>rWC^)kop zJBLE4POV=bO4Zx{)REzUx_RpvsWub!*4z1pw*cU04xbIPXD$j6UIF-AdW<=Mf3|5; zvSQ9FBmjH$lmL+MKM-*K(HWC1I60nY-uae+&NHv&n36|6b| zDK_bUm`nLP=4qm-RHsMbHwoywm9DVLi&Q9vv# zEXY|>fHYb9CIC1KFb6ng4UqLpl7JF;8!xOc;->&%eOrUHAoRUX0w4noc0z!5BO5dR ziGY;^Mf*c)P5U)vju#3w+vzNT>yGZ;e$a0MUJZU_h=qv>*HWq{X$T$Ju9V z<#a-%_t9h^2e9|NC0geR9o+)R@lmzbOJkg4YaccM2ylG#=*N#8=N!g$#>l(@^CWo4`aBtfodE{td%>6A`_OS*PeQN>M643uP)O-bM&00B|K674Ypv+G7bmnYyeGfVskH0VRLh7c4aR} Lb!}m8+w5H!|6ZIN literal 0 HcmV?d00001 diff --git a/textures/834cbd848f0a29008bf5b1d59d02ecb1cf25dfd21fc88be1c183c9261f5fdd69 b/textures/834cbd848f0a29008bf5b1d59d02ecb1cf25dfd21fc88be1c183c9261f5fdd69 deleted file mode 100644 index 4bce6596998c387829506fdc439b77ac1a318e7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3689 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 Hu0mjfG>HA2