我有php代码检查使用AES加密编码的电话号码的数据库。在某些情况下,代码会在数据库中看到它必须作用的4行(通过短信网关打电话)。是否可以使用AES脚本的迭代解密4个数字,或者我必须等待并使用每分钟一次的cron作业重新加载我的代码才能实现此目的。或者我应该调查构建一个单独的类来实现这一目标。目前我在尝试时遇到错误:无法重新声明AES。或者是否有特定的变量我可以在AES类中取消设置以实现解密的召回。这是关于此问题的一般建议请求,而不是代码。
Code Requested Edit:数据库查询行
$sms = $row['sms'];
$num = @mysqli_num_rows($rrv);
if($num>0){
while ($row = mysqli_fetch_array($rrv, MYSQLI_ASSOC)) {
$price = $row['price'];
$priceLive = $price;
if ($gt_lt == 'GT') {
if ($priceLive > $priceOrder) {
include '1.php';
$sms = $y1;
1.php的代码
<?php
include 'AES.php';//Code as at the AES website.
$aes = new AES($sms, '-----', 256);//Input Text, Input Key, Block Size
$y1=$aes->decrypt();//give back to $sms
?>
如果只需要一个号码,则一切正常。
答案 0 :(得分:0)
有错误,因为你不能两次包含同一个类,并且你在循环中进行它。最好的解决方案是使用自动加载器。可行的解决方案比您的解决方案更好
include_once 'AES.php';
$sms = $row['sms'];
$num = @mysqli_num_rows($rrv);
if ($num > 0) {
while ($row = mysqli_fetch_array($rrv, MYSQLI_ASSOC)) {
$price = $row['price'];
$priceLive = $price;
if ($gt_lt == 'GT') {
if ($priceLive > $priceOrder) {
$aes = new AES($sms, '-----', 256);//Input Text, Input Key, Block Size
$sms = $aes->decrypt();
我不知道您的AES类是如何定义的,但也许只能声明一次对象然后在相同的密钥中使用它(和IV取决于您的分组密码模式)。
更重要的是:
@
运算符,只需检查$rrv
是否为FALSE就可以检查是否有错误