【问题标题】:Cant base64 decode from mysqli无法从 mysqli 进行 base64 解码
【发布时间】:2013-06-15 02:04:00
【问题描述】:

我目前正在尝试从我的 SQL 数据库中回显信息,我必须对其进行编码才能有效地写入表中;现在,当我尝试回显信息时,在对其进行解码时,页面什么也不显示,我不完全确定我在这一点上做错了什么。

<?php
$type = $_SESSION['SESS_ACC_TYPE'];
$login = $_SESSION['SESS_LOGIN_NAME'];
$log = base64_decode(''.$row['log'].'');
if ($type == '2') {
    $qry = "SELECT log FROM logs ";
    $result = mysqli_query($GLOBALS["___mysqli_ston"], $qry);
    while($row = mysqli_fetch_assoc($result)){
        echo ''.$log.'';
    }
}
if ($type == '1') {
    $qry = "SELECT log FROM logs WHERE login = '.$login.'";
    $result = mysqli_query($GLOBALS["___mysqli_ston"], $qry);
    while($row = mysqli_fetch_assoc($result)){
        echo ''.$log.'';
    }
} else {
    //do nothing
}
?>

【问题讨论】:

  • 你在有一行之前解码了一行。将base64_decode() 行移到mysqli_fetch_assoc() 循环内。
  • 另外,''s 在(''.$row['log'].'') 中有什么意义?

标签: php mysql base64 decode


【解决方案1】:

你的代码有很多错误:

我修好了。

$type  = $_SESSION['SESS_ACC_TYPE'];
$login = $_SESSION['SESS_LOGIN_NAME'];

if ($type == '2') {
    $qry = "SELECT `log` FROM `logs`;";
}
if ($type == '1') {
    $qry = "SELECT `log` FROM `logs` WHERE `login` = '" . $login . "';";
}

$result = mysqli_query($GLOBALS["___mysqli_ston"], $qry);
while($row = mysqli_fetch_assoc($result)) {
    echo base64_decode($row['log']);
}

【讨论】:

  • 救命稻草!谢谢你把它清理干净!
  • 你应该时刻注意你使用什么样的引号,消除冗余代码。如果您有一段代码需要重复,请创建一个函数或一个类。还要使用正确的变量。当您获取 MySQL 数据时,请使用 fetch 数组并使用数字键。它有助于防止注射。
【解决方案2】:
since mysql 5.6.1 there are mysql base64 decode/encode functions

select FROM_BASE64('....') ...
select TO_BASE64('....') ...

http://base64decode.net/mysql-from-base64

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-16
    • 2018-02-22
    • 1970-01-01
    • 2011-12-29
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多