<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title><![CDATA[黑奇网-个人网站]]></title> 
<atom:link href="https://heiqw.com/rss.php" rel="self" type="application/rss+xml" />
<description><![CDATA[黑奇网-个人网站]]></description>
<link>https://heiqw.com/</link>
<language>zh-cn</language>
<generator>www.emlog.net</generator>
<item>
    <title>php读取数据库列表以及操作数据库修改密码/忘记后台密码</title>
    <link>https://heiqw.com/post-303.html</link>
    <description><![CDATA[<blockquote>
<p>php读取数据库列表以及操作数据库修改密码，用来有ftp以及有文件权限时，但是缺不知道后台密码，或者忘记后台密码，后台密码被重置的情况了</p>
</blockquote>
<p>还可以用在比如说有的空间有防火墙，直接把phpmyadmin或者adminer之类的传上去会被拦截的情况，像昨天晚上我就遇到一例，一个人的后台密码被黑了被改了，弱口令，但是又临时需要急着传图片，无奈我只能手搓一个php先把后台密码改了，再回去后台传</p>
<h2>注意事项</h2>
<p>1、不一定能用，因为后续让ai重写的，我开始还没整合成一个php，但是应该没问题的，逻辑是这么个逻辑<br />
2、下列直接修改的仅适用于普通的md5密码存储，如果是特定的源码不是直接md5密码加密的，还需要改成对应的算法密文储存的数据才行哦</p>
<h2>简易数据库管理小工具（PHP5.3+ 兼容，极简代码）</h2>
<p>采用原生PDO（PHP5.3默认自带），无框架、无第三方类库，结构极简，三个功能：</p>
<ol>
<li>连接数据库，展示所有数据表</li>
<li>点击表名查看该表全部数据</li>
<li>根据ID编辑任意字段值保存</li>
</ol>
<h2>db_manager.php 完整单文件代码</h2>
<pre><code class="language-php">&lt;?php
// ==========数据库配置（自行修改）==========
$db_host = 'localhost';
$db_user = 'root';
$db_pwd  = 'root';
$db_name = 'testdb';
$charset = 'utf8';

// PDO连接数据库（PHP5.3兼容写法）
try {
    $dsn = "mysql:host=$db_host;dbname=$db_name;charset=$charset";
    $pdo = new PDO($dsn, $db_user, $db_pwd);
    $pdo-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    die("数据库连接失败：".$e-&gt;getMessage());
}

// 获取当前操作
$action = isset($_GET['act']) ? $_GET['act'] : 'tables';
$table  = isset($_GET['table']) ? $_GET['table'] : '';
$id     = isset($_GET['id']) ? intval($_GET['id']) : 0;

// 1、展示所有数据表
if($action == 'tables'){
    $stmt = $pdo-&gt;query("SHOW TABLES");
    $tables = $stmt-&gt;fetchAll(PDO::FETCH_NUM);
    echo '&lt;h3&gt;数据库 '.$db_name.' 所有数据表&lt;/h3&gt;';
    echo '&lt;ul&gt;';
    foreach($tables as $t){
        $tb = $t[0];
        echo "&lt;li&gt;&lt;a href='?act=show&amp;table=$tb'&gt;$tb&lt;/a&gt;&lt;/li&gt;";
    }
    echo '&lt;/ul&gt;';
}

// 2、查看指定表数据列表
elseif($action == 'show' &amp;&amp; !empty($table)){
    echo "&lt;p&gt;&lt;a href='?'&gt;返回表列表&lt;/a&gt;&lt;/p&gt;";
    echo "&lt;h3&gt;数据表：$table&lt;/h3&gt;";

    // 查询表字段
    $fieldStmt = $pdo-&gt;query("DESC `$table`");
    $fields = $fieldStmt-&gt;fetchAll(PDO::FETCH_ASSOC);

    // 查询表数据
    $dataStmt = $pdo-&gt;query("SELECT * FROM `$table`");
    $rows = $dataStmt-&gt;fetchAll(PDO::FETCH_ASSOC);

    if(empty($rows)){
        echo '&lt;p&gt;该表暂无数据&lt;/p&gt;';
    }else{
        // 输出表头
        echo '&lt;table border="1" cellpadding="4"&gt;';
        echo '&lt;tr&gt;';
        foreach($fields as $f){
            echo '&lt;th&gt;'.$f['Field'].'&lt;/th&gt;';
        }
        echo '&lt;th&gt;操作&lt;/th&gt;&lt;/tr&gt;';

        // 输出数据行
        foreach($rows as $row){
            echo '&lt;tr&gt;';
            foreach($row as $k=&gt;$v){
                echo '&lt;td&gt;'.htmlspecialchars($v).'&lt;/td&gt;';
            }
            // 取第一个字段当做主键ID（常规自增id）
            $pk = $fields[0]['Field'];
            $pkVal = $row[$pk];
            echo "&lt;td&gt;&lt;a href='?act=edit&amp;table=$table&amp;id=$pkVal'&gt;编辑&lt;/a&gt;&lt;/td&gt;";
            echo '&lt;/tr&gt;';
        }
        echo '&lt;/table&gt;';
    }
}

// 3、编辑单条数据表单
elseif($action == 'edit' &amp;&amp; !empty($table) &amp;&amp; $id&gt;0){
    echo "&lt;p&gt;&lt;a href='?act=show&amp;table=$table'&gt;返回表数据&lt;/a&gt;&lt;/p&gt;";
    echo "&lt;h3&gt;编辑ID=$id 的数据&lt;/h3&gt;";

    // 获取表字段
    $fieldStmt = $pdo-&gt;query("DESC `$table`");
    $fields = $fieldStmt-&gt;fetchAll(PDO::FETCH_ASSOC);
    $pk = $fields[0]['Field'];

    // 查询本条数据
    $rowStmt = $pdo-&gt;prepare("SELECT * FROM `$table` WHERE `$pk`=?");
    $rowStmt-&gt;execute([$id]);
    $row = $rowStmt-&gt;fetch(PDO::FETCH_ASSOC);
    if(!$row) die('数据不存在');

    // 提交保存修改
    if($_POST){
        $setArr = [];
        $param = [];
        foreach($fields as $f){
            $fname = $f['Field'];
            if($fname == $pk) continue; // 主键不允许修改
            $val = isset($_POST[$fname]) ? $_POST[$fname] : '';
            $setArr[] = "`$fname`=?";
            $param[] = $val;
        }
        $param[] = $id;
        $sql = "UPDATE `$table` SET ".implode(',',$setArr)." WHERE `$pk`=?";
        $updateStmt = $pdo-&gt;prepare($sql);
        $updateStmt-&gt;execute($param);
        echo '&lt;p style="color:green;"&gt;修改成功！&lt;a href="?act=show&amp;table='.$table.'"&gt;点击返回数据列表&lt;/a&gt;&lt;/p&gt;';
    }

    // 输出编辑表单
    echo '&lt;form method="post"&gt;';
    foreach($fields as $f){
        $fname = $f['Field'];
        $val = htmlspecialchars($row[$fname]);
        if($fname == $pk){
            echo "&lt;p&gt;$fname：$val (主键不可修改)&lt;/p&gt;";
        }else{
            echo "&lt;p&gt;$fname：&lt;input type='text' name='$fname' value='$val' style='width:350px;'&gt;&lt;/p&gt;";
        }
    }
    echo '&lt;p&gt;&lt;button type="submit"&gt;保存修改&lt;/button&gt;&lt;/p&gt;';
    echo '&lt;/form&gt;';
}
?&gt;</code></pre>
<h2>使用说明</h2>
<ol>
<li>修改代码顶部<strong>数据库配置项</strong>：主机、用户名、密码、数据库名</li>
<li>直接放到PHP5.3及以上环境运行（PHP5.3默认开启PDO-MySQL）</li>
<li>流程：
<ul>
<li>首页：列出当前库所有数据表</li>
<li>点表名：查看该表全部数据</li>
<li>每行右侧点【编辑】：打开表单修改除主键ID外所有字段，提交保存</li>
</ul></li>
</ol>
<h2>兼容性说明</h2>
<ol>
<li>PHP5.3 原生支持 PDO，无需额外安装扩展</li>
<li>使用<code>htmlspecialchars</code>防XSS简单安全处理</li>
<li>使用预处理语句防SQL注入</li>
<li>自动把表第一个字段作为主键（一般为id自增主键），主键禁止修改</li>
<li>单文件极简实现，无样式冗余代码，可自行加CSS美化</li>
</ol>
<h2>简易安全提醒</h2>
<p>本代码仅用于本地内网测试，不要直接部署到公网，没有做访问权限验证，公网使用需要加登录验证。</p>
<p>需要我给代码加一段极简CSS美化表格页面吗？</p>]]></description>
    <pubDate>Thu, 25 Jun 2026 17:08:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-303.html</guid>
</item>
<item>
    <title>pbootcms留言验证码加固/刷新解决不过期/删除会话验证码</title>
    <link>https://heiqw.com/post-302.html</link>
    <description><![CDATA[<blockquote>
<p>pbootcms程序有很大的安全问题，比如说系统自带的验证码很长时间不会过期，这样虽然哪怕有了验证码一样的会被刷留言啊，根本无法防护，所以直接在后台加一行代码即可解决，这样验证码就会过期了只能用一次，直接删除会话里的验证码</p>
</blockquote>
<p><img src="https://image.heiqw.com/i/2026/06/24/imk0db.png" alt="" /></p>
<p>打开<code>/apps/home/controller</code>找到<code>MessageController.php</code>大约56行左右，直接加一行下面的代码即可</p>
<pre><code>// 关键：校验通过立刻销毁验证码，一次性使用，防止XHR重放
unset($_SESSION['checkcode']);</code></pre>]]></description>
    <pubDate>Wed, 24 Jun 2026 11:22:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-302.html</guid>
</item>
<item>
    <title>pbootcms后台登录错误缓存清理自动执行代码</title>
    <link>https://heiqw.com/post-301.html</link>
    <description><![CDATA[<p>我给你写<strong>极简、安全、可直接运行</strong>的代码，分两个文件：</p>
<ol>
<li>前端：jQuery AJAX 请求代码（HTML/JS）</li>
<li>后端：原生PHP接口（无框架、防路径遍历/文件漏洞、无数据库所以无需防SQL注入）</li>
<li>逻辑严格按你要求：检查<code>runtime</code>目录创建时间 → 非当天删除 → 全流程返回JSON</li>
</ol>
<hr />
<h2>一、前端 jQuery 代码 (index.html)</h2>
<p><strong>功能</strong>：页面加载自动发送请求，接收PHP返回的JSON结果并提示</p>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="zh-CN&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;检查Runtime目录&lt;/title&gt;
    &lt;!-- 引入jQuery CDN --&gt;
    &lt;script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div id="result"&gt;&lt;/div&gt;

    &lt;script&gt;
        // 页面加载完成后，发送AJAX请求到PHP接口
        $(function () {
            $.ajax({
                url: "check_runtime.php", // PHP接口地址
                type: "POST",
                dataType: "json", // 强制接收JSON
                // 无传递参数，杜绝注入风险
                success: function (res) {
                    // 处理返回结果
                    console.log(res);
                    $("#result").html(`&lt;p&gt;${res.msg}&lt;/p&gt;`);
                    alert(res.msg);
                },
                error: function () {
                    alert("请求失败，请检查接口是否正常");
                }
            });
        });
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<hr />
<h2>二、后端 原生PHP接口 (check_runtime.php)</h2>
<p><strong>核心安全</strong>：</p>
<ul>
<li>禁止目录遍历（防文件漏洞）</li>
<li>递归删除目录（支持runtime内有子文件/子目录）</li>
<li>严格判断创建时间</li>
<li>统一JSON响应格式</li>
<li>无数据库操作 → 天然无SQL注入风险</li>
</ul>
<pre><code class="language-php">&lt;?php
// 强制返回JSON格式，防止乱码
header('Content-Type: application/json; charset=utf-8');
// 禁止缓存
header('Cache-Control: no-cache, no-store, must-revalidate');

// ===================== 配置 =====================
// 目标目录：当前目录下的 runtime
$targetDir = __DIR__ . '/runtime';
// 今天的日期（年月日）
$today = date('Y-m-d');

// ===================== 安全检查 =====================
// 防止路径遍历攻击，仅允许操作当前目录的runtime
if (strpos(realpath($targetDir), realpath(__DIR__)) !== 0) {
    echo json_encode([
        'code' =&gt; 1,
        'msg' =&gt; '非法目录操作，已拦截'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

// ===================== 核心逻辑 =====================
// 1. 判断目录是否存在
if (!is_dir($targetDir)) {
    echo json_encode([
        'code' =&gt; 0,
        'msg' =&gt; 'runtime目录不存在，无需处理'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

// 2. 获取目录创建时间（Windows：创建时间；Linux：inode修改时间，通用标准）
$createTime = filectime($targetDir);
$createDate = date('Y-m-d', $createTime);

// 3. 判断是否为当天创建
if ($createDate === $today) {
    // 是当天：不处理
    echo json_encode([
        'code' =&gt; 0,
        'msg' =&gt; 'runtime目录为当天创建，无需删除'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

// 4. 非当天：删除目录
$delResult = delDir($targetDir);
if ($delResult) {
    echo json_encode([
        'code' =&gt; 0,
        'msg' =&gt; 'runtime目录非当天创建，已成功删除'
    ], JSON_UNESCAPED_UNICODE);
} else {
    echo json_encode([
        'code' =&gt; 1,
        'msg' =&gt; 'runtime目录删除失败，请检查权限'
    ], JSON_UNESCAPED_UNICODE);
}

// ===================== 工具函数：递归删除目录 =====================
function delDir($dir)
{
    // 不是目录直接返回
    if (!is_dir($dir)) return false;
    // 扫描目录内容
    $files = array_diff(scandir($dir), ['.', '..']);
    foreach ($files as $file) {
        $path = $dir . '/' . $file;
        is_dir($path) ? delDir($path) : unlink($path);
    }
    // 删除空目录
    return rmdir($dir);
}
?&gt;</code></pre>
<hr />
<h2>三、代码说明 &amp; 使用方法</h2>
<h3>1. 文件结构</h3>
<p>把两个文件放在<strong>网站根目录</strong>，结构如下：</p>
<pre><code>你的网站根目录/
├─ index.html       (前端jQuery代码)
├─ check_runtime.php (PHP接口)
└─ runtime/         (需要检查的目录)</code></pre>
<h3>2. 核心逻辑</h3>
<ol>
<li>前端jQuery自动发送POST请求到PHP</li>
<li>PHP检查<code>runtime</code>目录是否存在</li>
<li>获取目录创建日期，和<strong>当天日期</strong>对比</li>
<li>非当天 → 递归删除整个目录；当天 → 不处理</li>
<li>所有状态<strong>返回标准JSON</strong></li>
</ol>
<h3>3. 安全说明</h3>
<ul>
<li>✅ 无数据库操作 → 无SQL注入风险</li>
<li>✅ 限制目录操作范围 → 防路径遍历/文件删除漏洞</li>
<li>✅ 递归删除仅针对目标目录 → 不会误删其他文件</li>
<li>✅ 强制JSON响应、禁止缓存 → 接口更稳定</li>
</ul>
<h3>4. 测试方法</h3>
<ol>
<li>访问 <code>index.html</code></li>
<li>会自动执行检查，弹出结果提示</li>
<li>查看根目录的<code>runtime</code>目录，非当天会被自动删除</li>
</ol>
<hr />
<h2>四、返回JSON格式示例</h2>
<ol>
<li>目录不存在
<pre><code class="language-json">{"code":0,"msg":"runtime目录不存在，无需处理"}</code></pre></li>
<li>当天创建
<pre><code class="language-json">{"code":0,"msg":"runtime目录为当天创建，无需删除"}</code></pre></li>
<li>删除成功
<pre><code class="language-json">{"code":0,"msg":"runtime目录非当天创建，已成功删除"}</code></pre></li>
<li>权限不足删除失败
<pre><code class="language-json">{"code":1,"msg":"runtime目录删除失败，请检查权限"}</code></pre></li>
</ol>
<h2>上面是接口版，下面是静默版</h2>
<pre><code class="language-php">&lt;?php
// 注释JSON响应头，静默不输出返回内容
// header('Content-Type: application/json; charset=utf-8');
// header('Cache-Control: no-cache, no-store, must-revalidate');

// ===================== 配置 =====================
$targetDir = __DIR__ . '/runtime';
$today = date('Y-m-d');

// ===================== 安全检查：防止路径遍历攻击 =====================
if (strpos(realpath($targetDir), realpath(__DIR__)) !== 0) {
    // 不再输出JSON、不exit终止脚本，直接返回不再往下执行
    return;
}

// 目录不存在，直接返回
if (!is_dir($targetDir)) {
    return;
}

// 获取目录创建时间
$createTime = filectime($targetDir);
$createDate = date('Y-m-d', $createTime);

// 当天创建，无需删除，直接返回
if ($createDate === $today) {
    return;
}

// 非当天执行目录删除，删除后直接返回，不输出任何内容
delDir($targetDir);
return;

// ===================== 工具函数：递归删除目录 =====================
function delDir($dir)
{
    if (!is_dir($dir)) return false;
    $files = array_diff(scandir($dir), ['.', '..']);
    foreach ($files as $file) {
        $path = $dir . '/' . $file;
        is_dir($path) ? delDir($path) : unlink($path);
    }
    return rmdir($dir);
}
?&gt;</code></pre>
<h3>修改要点</h3>
<ol>
<li>移除所有 <code>echo json_encode()</code> 输出语句，不再向前端返回任何数据，实现静默执行</li>
<li>将所有 <code>exit</code> 替换为 <code>return</code>，仅终止当前脚本逻辑，不会中断外部引用文件的程序运行</li>
<li>保留原有路径安全校验、目录时间判断、递归删除全部核心逻辑不变</li>
<li>注释掉JSON相关响应头，避免响应头冲突干扰其他业务接口</li>
<li>无数据库操作，天然规避SQL注入风险，路径遍历防护保留</li>
</ol>
<h2>php引用文件</h2>
<pre><code>// 只引入一次，多次写这句也只执行一次文件代码
require_once 'config.php';</code></pre>]]></description>
    <pubDate>Wed, 17 Jun 2026 23:08:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-301.html</guid>
</item>
<item>
    <title>nginx伪静态设置允许指定ip放行禁止ip访问</title>
    <link>https://heiqw.com/post-300.html</link>
    <description><![CDATA[<h3>核心原理</h3>
<p>Nginx 自带 <code>ngx_http_access_module</code> 模块，通过 <code>allow</code>（允许）和 <code>deny</code>（拒绝）指令实现IP黑白名单，<strong>顺序绝对不能颠倒</strong>：必须先写允许的白名单IP，再写拒绝所有其他IP，否则规则会失效。</p>
<pre><code>location / {
    allow 123.123.123.123;
    deny all;
}</code></pre>
<p>关键代码如下，也可以放在已有的nginx伪静态最前面</p>
<pre><code>
    allow 123.123.123.123;
    deny all;</code></pre>
<h2>常见问题排查</h2>
<ol>
<li><strong>配置后所有IP都访问不了</strong>：肯定是 <code>allow</code> 和 <code>deny</code> 顺序写反了，必须先 <code>allow</code> 再 <code>deny all</code>。</li>
<li><strong>配置后所有IP都能访问</strong>：
<ul>
<li>检查规则是不是放在了正确的 <code>location</code> 里，被其他配置覆盖了；</li>
<li>如果用了CDN/代理，是不是没配置真实IP获取规则，也没放行CDN/代理的IP段；</li>
<li>检查IP是不是写错了，有没有多余的空格。</li>
</ul></li>
<li><strong>被拦截后返回404而不是403</strong>：可以自定义错误页面，在 <code>server</code> 块里加：
<pre><code class="language-nginx">error_page 403 /403.html;
location = /403.html {
   root /var/www/error;
   internal;
}</code></pre></li>
</ol>]]></description>
    <pubDate>Wed, 10 Jun 2026 10:47:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-300.html</guid>
</item>
<item>
    <title>word文档docx以及doc格式文档压缩教程</title>
    <link>https://heiqw.com/post-299.html</link>
    <description><![CDATA[<blockquote>
<p>起因是朋友做标书，文档太大了，而限制上传10M的标书，找我问能不能压缩？那必然是可以啊，重点不是压缩，而是不要会员的压缩，免费的压缩，哈哈</p>
</blockquote>
<p>故搜索之，感谢互联网的内容丰富</p>
<h2>引用52pojie @一点浩然气</h2>
<p>告诉你一个独门秘诀哈，我们做标书的因为投标软件上传Word文件有大小限制，可以将Word的文件后缀.docx改为zip,然后将点开zip文件Word-media将里面的图片复制出来，接着用图片压缩软件，这里推荐图片无损压缩大师，将压缩后的图片直接复制覆盖zip文件Word-media的图片，最后将.zip改为docx，完美缩小到10m以内。</p>
<p><a href="https://heiqw.com/content/uploadfile/202606/45bb1780564412.png"><img src="https://heiqw.com/content/uploadfile/202606/thum-45bb1780564412.png" alt="" /></a></p>
<p>我看了下还真是，原理就是word文档的图片都会放在一个目录里，而我们把目录里的图片压缩替换，再把文件名改回去就行</p>
<p>图片无损压缩大师：<a href="https://wwph.lanzout.com/iRkv92rzm9vc">https://wwph.lanzout.com/iRkv92rzm9vc</a></p>]]></description>
    <pubDate>Thu, 04 Jun 2026 17:09:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-299.html</guid>
</item>
<item>
    <title>解决报错EasyWeChat\Kernel\Exceptions\RuntimeException Failed to cache access token.</title>
    <link>https://heiqw.com/post-298.html</link>
    <description><![CDATA[<blockquote>
<p>解决报错：EasyWeChat\Kernel\Exceptions\RuntimeException Failed to cache access token.</p>
</blockquote>
<pre><code>1. in /www/wwwroot/xxx.cn/vendor/overtrue/wechat/src/Kernel/AccessToken.php at line 143
134135136137138139140141142143144145146147148149150151152
     */
    public function setToken(string $token, int $lifetime = 7200): AccessTokenInterface
    {
        $this-&gt;getCache()-&gt;set($this-&gt;getCacheKey(), [
            $this-&gt;tokenKey =&gt; $token,
            'expires_in' =&gt; $lifetime,
        ], $lifetime - $this-&gt;safeSeconds);

        if (!$this-&gt;getCache()-&gt;has($this-&gt;getCacheKey())) {
            throw new RuntimeException('Failed to cache access token.');
        }

        return $this;
    }

    /**
     * @return \EasyWeChat\Kernel\Contracts\AccessTokenInterface
     *
     * @throws \EasyWeChat\Kernel\Exceptions\HttpException
2. in /www/wwwroot/xxx.cn/vendor/overtrue/wechat/src/Kernel/AccessToken.php at line 121 – </code></pre>
<h2>解决办法</h2>
<p>把<code>/tmp/symfony-cache</code>路径的所有者改成www并且权限弄成755，宝塔面板里修改也就是图片默认直接点保存就行</p>
<p><img src="https://image.heiqw.com/i/2026/05/08/sp93xt.png" alt="" /></p>]]></description>
    <pubDate>Fri, 08 May 2026 17:34:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-298.html</guid>
</item>
<item>
    <title>出现身份验证错误要求的函数不受支持 远程计算机: 这可能是由于 CredSsP 加密数据库修正</title>
    <link>https://heiqw.com/post-297.html</link>
    <description><![CDATA[<blockquote>
<p>出现身份验证错误。要求的函数不受支持 远程计算机: 这可能是由于 CredSsP 加密数据库修正,若要了解详细信息，请访问 <a href="https://go.microsoft,com/">https://go.microsoft,com/</a></p>
</blockquote>
<p><img src="https://image.heiqw.com/i/2026/04/28/p3axgx.png" alt="" /></p>
<p>适用于windows专业版及以上。<br />
步骤一：win+r打开运行窗口，输入  gpedit.msc  ，回车运行。<br />
打开组策略编辑器，依次进入如下路径。<br />
<img src="https://image.heiqw.com/i/2026/04/28/p3ttu1.png" alt="" /><br />
找到  凭据分配  ，点击进入，在右侧栏目中找到加密数据库修正。<br />
<img src="https://image.heiqw.com/i/2026/04/28/p3whtv.png" alt="" /><br />
右键，加密数据库修正，点击编辑按钮。进入如下界面，我们将状态更改为启用，将保护级别修改为易受攻击。点击下面的应用和确定按钮。<br />
<img src="https://image.heiqw.com/i/2026/04/28/p3y9ot.png" alt="" /><br />
退出后，我们再次来尝试连接远程。此时我们可以正常连接上了，问题解决成功！</p>
<p>转载自：<a href="https://cloud.tencent.com/developer/article/1635883">https://cloud.tencent.com/developer/article/1635883</a></p>
<p>问题成功解决</p>]]></description>
    <pubDate>Tue, 28 Apr 2026 15:16:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-297.html</guid>
</item>
<item>
    <title>低画质图片拍照app/小内存图片拍照软件</title>
    <link>https://heiqw.com/post-296.html</link>
    <description><![CDATA[<blockquote>
<p>因工作需要，需要一个安卓的app，能够调用相机，调节分辨率，降低拍照存下的照片大小容量。压缩图片的工具我也有，但希望一步到位，直接拍低清的图片。<br />
我知道苹果的”低清相机“可以实现自定义分辨率，我需要的是640*480的分辨率拍照，但安卓我并没有找到类似的软件，本人手持小米和荣耀的手机，谢谢各位大大了！</p>
</blockquote>
<p>以上应用是我在百度搜索的时候找到的52pojie里和我一样需求的兄弟，我的需求也一样，就是工作需要拍照留痕，而自带相机拍照内存占用一个几m太大了，一方面是自带的不想去动他，假设设置忘记调了下次你生活拍照又得调回去不方便，而单独下载一个拍照app那么就和工作分开，这个时候就特别需要一款这样的软件了</p>
<p>而这个<code>Open Camera Android</code>就符合需求，主要这个app才<code>4.5M</code>真牛，为数不多的清流了，拍照就拍照</p>
<p>下载地址：</p>
<p>1、<a href="https://www.malavida.com/es/soft/open-camera/android/">https://www.malavida.com/es/soft/open-camera/android/</a></p>
<p>2、<a href="https://www.32r.com/app/126689.html">https://www.32r.com/app/126689.html</a></p>
<p>优先用第一个国外的下载地址吧，搜的谷歌play镜像站，第二个国内的下载站</p>
<p>找到一个貌似官网的，但不能下载只能看看，方便你看谷歌play下载地址，然后再用谷歌play镜像站下载apk安装包（上面的第一个链接就是镜像的）</p>
<p><a href="https://opencamera.org.uk/">https://opencamera.org.uk/</a></p>
<p><img src="https://image.heiqw.com/i/2026/04/27/ffkffb.png" alt="" /></p>
<p>52破解参考链接：<a href="https://www.52pojie.cn/forum.php?mod=viewthread&amp;tid=2001539">https://www.52pojie.cn/forum.php?mod=viewthread&amp;tid=2001539</a></p>
<h2>搬运内容</h2>
<p>我最推荐使用Open Camera：<a href="https://www.32r.com/app/126689.html">https://www.32r.com/app/126689.html</a></p>
<ol>
<li>完全免费</li>
<li>可以精确设置分辨率（包括你需要的640*480）</li>
<li>可以设置JPEG压缩质量</li>
<li>没有广告</li>
<li>适配性好，支持大多数安卓设备</li>
</ol>
<p>设置方法：</p>
<ol>
<li>下载安装Open Camera</li>
<li>点击设置图标</li>
<li>进入&quot;照片设置&quot;</li>
<li>可以设置照片分辨率和JPEG质量</li>
</ol>
<p>你可以在Google Play或者其他应用商店搜索&quot;Open Camera&quot;下载。当然还有Camera MX，Footej Camera 2<br />
<strong>Camera MX</strong></p>
<ul>
<li>可以调整照片质量</li>
<li>界面比较友好</li>
<li>但自定义选项没有Open Camera多</li>
</ul>
<p><strong>Footej Camera 2</strong></p>
<ul>
<li>支持调整分辨率和图片质量</li>
<li>界面现代化</li>
<li>有免费版和付费版</li>
</ul>]]></description>
    <pubDate>Mon, 27 Apr 2026 09:26:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-296.html</guid>
</item>
<item>
    <title>宝塔升级命令/bt升级命令/降级命令</title>
    <link>https://heiqw.com/post-295.html</link>
    <description><![CDATA[<h2>升级命令</h2>
<pre><code>curl http://download.bt.cn/install/update_panel.sh|bash</code></pre>
<h3>如何降级安装，这里列举从9.0.0版本降级到8.0.5，如果需要其他版本，自己更改版本号即可。脚本如下：</h3>
<pre><code>cd /root
mkdir bt
cd bt
# 这里以 8.0.5 版本为例，可以自行更改想降级的版本
wget https://download.bt.cn/install/update/LinuxPanel-8.0.5.zip
unzip LinuxPanel-8.0.5.zip
cd panel/
bash update.sh</code></pre>
<p>之后强制刷新一下面板即可。如果需要更新到最新版，可以自己点击右上角的更新按钮</p>]]></description>
    <pubDate>Sun, 26 Apr 2026 16:27:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-295.html</guid>
</item>
<item>
    <title>translate.js 前端翻译</title>
    <link>https://heiqw.com/post-294.html</link>
    <description><![CDATA[<blockquote>
<p><a href="http://translate.zvo.cn/41162.html">http://translate.zvo.cn/41162.html</a></p>
</blockquote>
<p>两行js实现html全自动翻译。</p>
<p>无需改动页面、无语言配置文件、无API Key、对SEO友好！<br />
特性说明<br />
使用极其简单。 无需任何前期准备，直接加入几行代码即可拥有多种语言全自动切换能力。<br />
不增加工作量。 无需另行改造页面本身，也没有各种语言都要单独配置的语言文件，更不需要你对页面本身要显示的文字区域进行代码调用，我认为那样对技术人员实在是太不友好了。而且它也不需要你到某某网站申请什么key，它本身就是开放的，拿来即用。<br />
极其灵活扩展。 您可指定它只翻译某些指定区域、切换语言时显示下拉框还是通过摆放多个切换语言按钮进行、可指定某些特定的元素不进行翻译忽略……<br />
自动匹配语种。 自动根据用户所在的国家切换其国家所使用的语种<br />
瞬间翻译能力。 内置缓存预加载机制，只要翻译过的网页，再次看时会达到瞬间翻译的效果，给用户的感觉就是，这个页面本来就是这种语言的，而不是经过第三方翻译的。<br />
永久免费使用。 采用Apache-2.0开源协议，您可永久免费使用。<br />
搜索引擎友好。 完全不影响你本身网站搜索引擎的收录。爬虫所爬取的网页源代码，它不会对其进行任何改动，你可完全放心。<br />
后端翻译开源。 在某些政府机关及大集团内部项目中，对数据隐私及安全保密有强要求场景、或您对自有客户希望提供自建高可靠翻译服务场景时，您可将后端翻译接口进行私有化部署，不走我们公开开放的翻译接口，以做到安全保密及后端服务全部自行掌控。<br />
多个翻译节点。每间隔1分钟自动获取一次延迟最小的节点进行接入使用，全面规避全球使用时，某个地域网络波动导致后端翻译接口无法响应的情况发生。自动适配最快节点，做到更好的使用体验！<br />
在线体验<br />
<a href="http://res.zvo.cn/translate/demo.html">http://res.zvo.cn/translate/demo.html</a></p>
<p>测试效果<br />
先拿别人的网站动手试试效果<br />
效果</p>
<p>随便打开一个网页<br />
右键 - 审查元素<br />
粘贴入以下代码：</p>
<pre><code>var head= document.getElementsByTagName('head')[0]; var script= document.createElement('script'); script.type= 'text/javascript'; script.src= 'https://res.zvo.cn/translate/inspector_v2.js'; head.appendChild(script);</code></pre>
<p>Enter 回车键 ， 执行<br />
在当前网页的左上角，就出现了一个大大的切换语言，切换试试看。<br />
快速使用<br />
在网页最末尾， </html> 之前，加入以下代码，一般在页面的最底部就出现了选择语言的 select 切换标签。 其实就这么简单：</p>
<script src="https://cdn.staticfile.net/translate.js/3.5.1/translate.js"></script>
<script>
translate.language.setLocal('chinese_simplified'); //设置本地语种（当前网页的语种）。如果不设置，默认自动识别当前网页显示文字的语种。 可填写如 'english'、'chinese_simplified' 等，具体参见文档下方关于此的说明。
translate.service.use('client.edge'); //设置机器翻译服务通道，直接客户端本身，不依赖服务端 。相关说明参考 http://translate.zvo.cn/43086.html
translate.execute();//进行翻译 
</script>]]></description>
    <pubDate>Wed, 15 Apr 2026 10:42:00 +0800</pubDate>
    <dc:creator>Donco</dc:creator>
    <guid>https://heiqw.com/post-294.html</guid>
</item></channel>
</rss>