Skip to content
Advertisement

I have a 500 error with preg_match syntax

I’m dealing with this php script, which when executed on the host gives a 500 error, apparently the line where the preg_match is is the one that contains the error…

this file is going to be executed as a cron to validate.

<?php
$encoded = wordwrap($encoded, 80, "xa", true);
$license_file = $dir . "/modules/addons/Kayako/license.php";
if ($key != $sellKey) {
    die("Invalid "license . php" file!");
}
function getWhmcsDomain() {
    if (!empty($_SERVER["SERVER_NAME"])) {
        return $_SERVER["SERVER_NAME"];
    }
}
$license["checkdate"] = date("Ymd");
$keyName = $modleName . "_licensekey";
$dir = __DIR__;
$encoded = strrev($encoded);
$license["status"] = "Active";
$sellKey = "ModulesGarden_Kayako_54M02934WH301844E_HackbyRicRey";
$license["checktoken"] = $checkToken;
$key_data = WHMCSDatabaseCapsule::table("tblconfiguration")->where("setting", "kayako_localkey")->first();
$license = array("licensekey" => $key, "validdomain" => getWhmcsDomain(), "validip" => getIp(), "validdirectory" => $dir . "/modules/addons/Kayako," . $dir . "/modules/addons," . $dir . "/modules/addons/Kayako," . $dir . "/modules/addons/Kayako," . $dir . "/modules/addons," . $dir . "," . $dir . "/modules");
$secret = "659c08a59bbb484f3b40591";
include_once "init.php";
function getIp() {
    return isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : $_SERVER["LOCAL_ADDR"];
}
if (!$key_data) {
    WHMCSDatabaseCapsule::table("tblconfiguration")->insert(array("setting" => "kayako_localkey", "value" => ''));
}
$checkToken = time() . md5(rand(1000000000, 0) . $key);
$modleName = "kayako";
$encoded = $encoded . md5($encoded . $secret);
$encoded = serialize($license);
preg_match("/kayako_licensekeys?=s?"([A - Za - z0 - 9_] +) "/", $content, $matches);
$encoded = md5($license["checkdate"] . $secret) . $encoded;
$key = $matches[1];
$encoded = base64_encode($encoded);
if (file_exists($license_file)) {
    $content = file_get_contents($license_file);
} else {
    echo "Please Upload "license . php" File Inside: " . $dir . "/modules/addons/Kayako/";
}
$content = '';
try {
    WHMCSDatabaseCapsule::table("tblconfiguration")->where("setting", "kayako_localkey")->update(array("value" => $encoded));
    echo "Done!";
}
catch(Throwable $e) {
    echo "There is an issue, contact.";
} ?>

Advertisement

Answer

You have extra double quotes in the regular expression. You also have extra spaces inside the [] in the regexp. You can replace that character class with w, which matches alphanumerics and underscore.

preg_match('/kayako_licensekeys?=s?(w+)/', $content, $matches);

Another problem: You use a number of variables before you assign them:

  • $modleName
  • $checkToken
  • $key
  • $sellKey
  • $dir

Did you post the code out of order?

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement