将变量传递给php7中的类

时间:2018-01-26 04:37:27

标签: javascript php arrays class

我有运行加密和解密的代码,我想从我的mysql数据库中传递值,但它不起作用

这是我的代码

    <?php
    require_once('koneksi.php');
    $sql = "SELECT * from keamanan WHERE id='1'";
    $r = mysqli_query($con,$sql);

        //Membuat Array Kosong
        $result = array();

        while($row = mysqli_fetch_array($r)){

                //Memasukkan Nama dan ID kedalam Array Kosong yang telah dibuat
                array_push($result,array(
                        "iv"=>$row['kunci_pribadi'],
                        "key"=>$row['kunci_bersama'],
                        "token1"=>$row['token_lampu1'],
                        "token2"=>$row['token_lampu2'],
                        "token2"=>$row['token_lampu3'],
                        "token2"=>$row['token_lampu4'],

                ));
        }

        $json = json_encode(array('result'=>$result));
        $data = json_decode($json);


class MCrypt

{
    $iv;
    $key;


    function __construct()
    {
        $this->iv = $key;
        $this->key = $iv;
    }
    function encrypt($str) {

      //$key = $this->hex2bin($key);
      $iv = $this->iv;

      $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv);

      mcrypt_generic_init($td, $this->key, $iv);
      $encrypted = mcrypt_generic($td, $str);

      mcrypt_generic_deinit($td);
      mcrypt_module_close($td);

      return bin2hex($encrypted);
    }

    function decrypt($code) {
      //$key = $this->hex2bin($key);
      $code = $this->hex2bin($code);
      $iv = $this->iv;
$td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv);

      mcrypt_generic_init($td, $this->key, $iv);
      $decrypted = mdecrypt_generic($td, $code);

      mcrypt_generic_deinit($td);
      mcrypt_module_close($td);

      return utf8_encode(trim($decrypted));
    }

    protected function hex2bin($hexdata) {
      $bindata = '';

      for ($i = 0; $i < strlen($hexdata); $i += 2) {
        $bindata .= chr(hexdec(substr($hexdata, $i, 2)));
      }

      return $bindata;
    }
}

$mcrypt = new MCrypt($data->result[0]->key,$data->result[0]->iv);
#Encrypt
$encrypted = '9975e28df055c336a9b7090b03f88689';
#Decrypt
$decrypted = $mcrypt->decrypt($encrypted);
var_dump($encrypted);
var_dump($decrypted);

?>
我想念的地方? 我不知道我的脚本它仍然可以在php7中使用。 我试着配置什么错误。如果我手动编写它代码运行没有错误,但为什么我不能从我的数据库mysql传递值变量。 有谁可以帮助我?

1 个答案:

答案 0 :(得分:0)

您班级的构造函数没有输入参数,而您在此处使用参数调用

new MCrypt($data->result[0]->key,$data->result[0]->iv);

将__construct函数更改为

function __construct($key, $iv)
{
    $this->iv = $key;
    $this->key = $iv;
}

此外,我建议您使用PDO进行数据库连接,这被认为更安全。也许你可以看看这个https://phpdelusions.net/pdo