Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php eval(base64_decode('CiBnb3RvIGpVakJWOyBoUG1ybDogJHN0bXRTZWxlY3RJUHMtPmNsb3NlKCk7IGdv..

Decoded Output download


 goto jUjBV; hPmrl: $stmtSelectIPs->close(); goto lCZ1Q; td_Iy: $selectIPsQuery = "SELECT DISTINCT ip_address, country FROM user_hits WHERE projectUID = ? AND date = ? AND country = ?"; goto Ad0XO; uJKWH: $date = isset($_POST["date"]) ? $_POST["date"] : date("Y-m-d"); goto kg8Om; B9xPk: function getCountryFlagURL($countryCode) { $flagURL = "https://flagsapi.com/{$countryCode}/flat/64.png"; return $flagURL; } goto OEAeB; NLpjh: header("Content-Type: application/json"); goto irBgy; Ad0XO: $stmtSelectIPs = $mysql->prepare($selectIPsQuery); goto P8l0J; P8l0J: $stmtSelectIPs->bind_param("sss", $projectUID, $date, $country); goto rmTcl; rmTcl: $stmtSelectIPs->execute(); goto YWOed; Dqz5y: $cityData = array(); goto daT1V; PTrk3: if (empty($country)) { echo json_encode(array("error" => "Country parameter is missing."), JSON_PRETTY_PRINT); die; } goto td_Iy; OEAeB: $projectUID = isset($_POST["projectUID"]) ? $_POST["projectUID"] : "default_project_uid"; goto uJKWH; lCZ1Q: $mysql->close(); goto se_dc; kg8Om: $country = isset($_POST["country"]) ? $_POST["country"] : ''; goto PTrk3; se_dc: $cityData = array_filter($cityData, function ($entry) { return !empty($entry["city"]); }); goto PSern; irBgy: echo json_encode(array_values($cityData), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); goto CGcIc; daT1V: while ($stmtSelectIPs->fetch()) { $city = getCityName($ipAddress); if (isset($cityData[$city])) { $cityData[$city]["users"]++; } else { $cityData[$city] = array("city" => $city, "users" => 1, "flag_url" => getCountryFlagURL($countryCode)); } } goto hPmrl; QJk2p: $stmtSelectIPs->bind_result($ipAddress, $countryCode); goto Dqz5y; Rt0VM: function getCityName($ip) { $tokens = array("7ea0764dd1d44a", "61f2e083d13617", "b9fd0ed34b2a61", "417c29079689ca", "28afe9e5faab16", "a4a0cc9f9cf43d", "073c3cb8c4a720", "c45dc150638ca3"); $randomToken = $tokens[array_rand($tokens)]; $url = "https://ipinfo.io/{$ip}/json?token={$randomToken}"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true); return $data["city"] ?? ''; } goto B9xPk; PSern: usort($cityData, function ($a, $b) { return $b["users"] - $a["users"]; }); goto NLpjh; jUjBV: require_once "connection.php"; goto Rt0VM; YWOed: $stmtSelectIPs->store_result(); goto QJk2p; CGcIc: 

Did this file decode correctly?

Original Code

<?php eval(base64_decode('CiBnb3RvIGpVakJWOyBoUG1ybDogJHN0bXRTZWxlY3RJUHMtPmNsb3NlKCk7IGdvdG8gbENaMVE7IHRkX0l5OiAkc2VsZWN0SVBzUXVlcnkgPSAiXDEyM1wxMDVceDRjXHg0NVwxMDNceDU0XHgyMFwxMDRceDQ5XHg1M1wxMjRcMTExXHg0ZVx4NDNceDU0XDQwXDE1MVx4NzBceDVmXDE0MVx4NjRceDY0XHg3MlwxNDVcMTYzXHg3M1w1NFx4MjBcMTQzXDE1N1x4NzVcMTU2XDE2NFwxNjJceDc5XHgyMFwxMDZcMTIyXDExN1wxMTVcNDBcMTY1XHg3M1wxNDVcMTYyXHg1Zlx4NjhceDY5XDE2NFwxNjNceDIwXDEyN1wxMTBceDQ1XHg1MlwxMDVcNDBcMTYwXDE2Mlx4NmZcMTUyXHg2NVwxNDNcMTY0XDEyNVwxMTFcMTA0XHgyMFx4M2RcNDBceDNmXDQwXDEwMVx4NGVceDQ0XDQwXHg2NFwxNDFceDc0XDE0NVw0MFx4M2RceDIwXDc3XDQwXDEwMVx4NGVceDQ0XDQwXDE0M1x4NmZceDc1XDE1NlwxNjRcMTYyXDE3MVx4MjBcNzVceDIwXDc3IjsgZ290byBBZDBYTzsgdUpLV0g6ICRkYXRlID0gaXNzZXQoJF9QT1NUWyJcMTQ0XDE0MVwxNjRceDY1Il0pID8gJF9QT1NUWyJceDY0XHg2MVx4NzRcMTQ1Il0gOiBkYXRlKCJceDU5XHgyZFwxNTVceDJkXHg2NCIpOyBnb3RvIGtnOE9tOyBCOXhQazogZnVuY3Rpb24gZ2V0Q291bnRyeUZsYWdVUkwoJGNvdW50cnlDb2RlKSB7ICRmbGFnVVJMID0gIlwxNTBceDc0XHg3NFx4NzBcMTYzXHgzYVx4MmZcNTdcMTQ2XHg2Y1x4NjFceDY3XDE2M1wxNDFceDcwXHg2OVx4MmVceDYzXDE1N1x4NmRcNTd7JGNvdW50cnlDb2RlfVx4MmZceDY2XHg2Y1wxNDFcMTY0XHgyZlw2Nlx4MzRcNTZceDcwXDE1Nlx4NjciOyByZXR1cm4gJGZsYWdVUkw7IH0gZ290byBPRUFlQjsgTkxwamg6IGhlYWRlcigiXDEwM1wxNTdcMTU2XHg3NFx4NjVcMTU2XDE2NFw1NVwxMjRceDc5XHg3MFwxNDVceDNhXDQwXHg2MVwxNjBceDcwXDE1NFwxNTFcMTQzXDE0MVwxNjRcMTUxXHg2Zlx4NmVceDJmXDE1MlwxNjNceDZmXHg2ZSIpOyBnb3RvIGlyQmd5OyBBZDBYTzogJHN0bXRTZWxlY3RJUHMgPSAkbXlzcWwtPnByZXBhcmUoJHNlbGVjdElQc1F1ZXJ5KTsgZ290byBQOGwwSjsgUDhsMEo6ICRzdG10U2VsZWN0SVBzLT5iaW5kX3BhcmFtKCJcMTYzXDE2M1wxNjMiLCAkcHJvamVjdFVJRCwgJGRhdGUsICRjb3VudHJ5KTsgZ290byBybVRjbDsgcm1UY2w6ICRzdG10U2VsZWN0SVBzLT5leGVjdXRlKCk7IGdvdG8gWVdPZWQ7IERxejV5OiAkY2l0eURhdGEgPSBhcnJheSgpOyBnb3RvIGRhVDFWOyBQVHJrMzogaWYgKGVtcHR5KCRjb3VudHJ5KSkgeyBlY2hvIGpzb25fZW5jb2RlKGFycmF5KCJceDY1XHg3Mlx4NzJceDZmXDE2MiIgPT4gIlwxMDNceDZmXDE2NVx4NmVcMTY0XHg3Mlx4NzlceDIwXDE2MFx4NjFceDcyXHg2MVx4NmRceDY1XHg3NFx4NjVceDcyXDQwXHg2OVx4NzNcNDBcMTU1XHg2OVx4NzNceDczXDE1MVwxNTZceDY3XHgyZSIpLCBKU09OX1BSRVRUWV9QUklOVCk7IGRpZTsgfSBnb3RvIHRkX0l5OyBPRUFlQjogJHByb2plY3RVSUQgPSBpc3NldCgkX1BPU1RbIlx4NzBcMTYyXHg2ZlwxNTJceDY1XDE0M1wxNjRceDU1XDExMVx4NDQiXSkgPyAkX1BPU1RbIlwxNjBcMTYyXDE1N1wxNTJcMTQ1XHg2M1x4NzRceDU1XDExMVwxMDQiXSA6ICJcMTQ0XDE0NVwxNDZcMTQxXDE2NVwxNTRcMTY0XDEzN1x4NzBcMTYyXHg2Zlx4NmFceDY1XDE0M1wxNjRcMTM3XDE2NVwxNTFceDY0IjsgZ290byB1SktXSDsgbENaMVE6ICRteXNxbC0+Y2xvc2UoKTsgZ290byBzZV9kYzsga2c4T206ICRjb3VudHJ5ID0gaXNzZXQoJF9QT1NUWyJcMTQzXHg2ZlwxNjVceDZlXDE2NFx4NzJcMTcxIl0pID8gJF9QT1NUWyJceDYzXDE1N1wxNjVceDZlXDE2NFwxNjJcMTcxIl0gOiAnJzsgZ290byBQVHJrMzsgc2VfZGM6ICRjaXR5RGF0YSA9IGFycmF5X2ZpbHRlcigkY2l0eURhdGEsIGZ1bmN0aW9uICgkZW50cnkpIHsgcmV0dXJuICFlbXB0eSgkZW50cnlbIlx4NjNcMTUxXHg3NFwxNzEiXSk7IH0pOyBnb3RvIFBTZXJuOyBpckJneTogZWNobyBqc29uX2VuY29kZShhcnJheV92YWx1ZXMoJGNpdHlEYXRhKSwgSlNPTl9VTkVTQ0FQRURfVU5JQ09ERSB8IEpTT05fUFJFVFRZX1BSSU5UKTsgZ290byBDR2NJYzsgZGFUMVY6IHdoaWxlICgkc3RtdFNlbGVjdElQcy0+ZmV0Y2goKSkgeyAkY2l0eSA9IGdldENpdHlOYW1lKCRpcEFkZHJlc3MpOyBpZiAoaXNzZXQoJGNpdHlEYXRhWyRjaXR5XSkpIHsgJGNpdHlEYXRhWyRjaXR5XVsiXHg3NVwxNjNcMTQ1XDE2Mlx4NzMiXSsrOyB9IGVsc2UgeyAkY2l0eURhdGFbJGNpdHldID0gYXJyYXkoIlwxNDNceDY5XDE2NFwxNzEiID0+ICRjaXR5LCAiXDE2NVwxNjNcMTQ1XDE2MlwxNjMiID0+IDEsICJcMTQ2XDE1NFwxNDFceDY3XHg1Zlx4NzVcMTYyXDE1NCIgPT4gZ2V0Q291bnRyeUZsYWdVUkwoJGNvdW50cnlDb2RlKSk7IH0gfSBnb3RvIGhQbXJsOyBRSmsycDogJHN0bXRTZWxlY3RJUHMtPmJpbmRfcmVzdWx0KCRpcEFkZHJlc3MsICRjb3VudHJ5Q29kZSk7IGdvdG8gRHF6NXk7IFJ0MFZNOiBmdW5jdGlvbiBnZXRDaXR5TmFtZSgkaXApIHsgJHRva2VucyA9IGFycmF5KCJceDM3XHg2NVwxNDFceDMwXHgzN1x4MzZcNjRcMTQ0XDE0NFx4MzFcMTQ0XDY0XDY0XHg2MSIsICJceDM2XDYxXHg2Nlx4MzJcMTQ1XDYwXDcwXHgzM1x4NjRcNjFceDMzXHgzNlw2MVx4MzciLCAiXDE0Mlw3MVwxNDZceDY0XHgzMFwxNDVceDY0XDYzXHgzNFx4NjJcNjJcMTQxXHgzNlw2MSIsICJcNjRcNjFcNjdceDYzXDYyXDcxXHgzMFx4MzdceDM5XDY2XHgzOFw3MVx4NjNcMTQxIiwgIlw2Mlw3MFx4NjFcMTQ2XDE0NVx4MzlceDY1XDY1XHg2NlwxNDFcMTQxXDE0Mlw2MVw2NiIsICJcMTQxXDY0XHg2MVx4MzBceDYzXHg2M1w3MVwxNDZcNzFcMTQzXHg2Nlw2NFx4MzNceDY0IiwgIlx4MzBceDM3XDYzXDE0M1x4MzNceDYzXHg2Mlw3MFwxNDNceDM0XHg2MVx4MzdcNjJceDMwIiwgIlx4NjNceDM0XDY1XDE0NFx4NjNceDMxXDY1XHgzMFw2Nlw2M1w3MFx4NjNcMTQxXHgzMyIpOyAkcmFuZG9tVG9rZW4gPSAkdG9rZW5zW2FycmF5X3JhbmQoJHRva2VucyldOyAkdXJsID0gIlx4NjhceDc0XDE2NFx4NzBceDczXDcyXDU3XDU3XHg2OVx4NzBcMTUxXHg2ZVx4NjZceDZmXHgyZVwxNTFceDZmXDU3eyRpcH1cNTdcMTUyXDE2M1wxNTdceDZlXHgzZlx4NzRcMTU3XHg2Ylx4NjVceDZlXHgzZHskcmFuZG9tVG9rZW59IjsgJGNoID0gY3VybF9pbml0KCk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICR1cmwpOyBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOyAkcmVzcG9uc2UgPSBjdXJsX2V4ZWMoJGNoKTsgY3VybF9jbG9zZSgkY2gpOyAkZGF0YSA9IGpzb25fZGVjb2RlKCRyZXNwb25zZSwgdHJ1ZSk7IHJldHVybiAkZGF0YVsiXHg2M1wxNTFceDc0XHg3OSJdID8/ICcnOyB9IGdvdG8gQjl4UGs7IFBTZXJuOiB1c29ydCgkY2l0eURhdGEsIGZ1bmN0aW9uICgkYSwgJGIpIHsgcmV0dXJuICRiWyJcMTY1XHg3M1wxNDVcMTYyXHg3MyJdIC0gJGFbIlwxNjVcMTYzXHg2NVx4NzJcMTYzIl07IH0pOyBnb3RvIE5McGpoOyBqVWpCVjogcmVxdWlyZV9vbmNlICJceDYzXHg2ZlwxNTZcMTU2XDE0NVx4NjNcMTY0XHg2OVwxNTdceDZlXDU2XHg3MFx4NjhcMTYwIjsgZ290byBSdDBWTTsgWVdPZWQ6ICRzdG10U2VsZWN0SVBzLT5zdG9yZV9yZXN1bHQoKTsgZ290byBRSmsycDsgQ0djSWM6IA==')); ?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 d5966e47564fbb35fb3f79622c360b50
Eval Count 1
Decode Time 134 ms