top-image

OLDER ARTICLES

在PbootCMS中,使用 [message:recontent] 和 [message:replydate] 标签可以显示留言的回复信息和回复时间。这对于增强网站的互动性和用户满意度非常有用。以下是详细的步骤和代码示例,帮助你在PbootCMS中实现这一功能:

  1. 基本语法

    • 使用 {pboot:message} 标签来输出留言记录列表,并在列表项中使用 [message:recontent] 和 [message:replydate] 标签来显示留言的回复信息和回复时间。
    • 以下是一些常用的列表标签:
      • [message:recontent]:回复内容。
      • [message:replydate]:回复时间。

当在PbootCMS后台上传图片时,如果遇到“上传失败:存储目录创建失败!”的错误提示,这通常是由于服务器上的静态资源目录没有足够的写入权限导致的。解决这个问题的方法如下:

  1. 检查静态资源目录权限

    • 打开FTP客户端或服务器控制面板,找到PbootCMS根目录下的static文件夹。
    • 检查该文件夹的权限设置,确保服务器有权限创建子目录和文件。通常情况下,可以将权限设置为755或777。推荐使用755权限,因为777权限虽然可以解决问题,但存在安全隐患。
  2. 修改权限

    • 如果使用FTP客户端,右键点击static文件夹,选择“属性”或“权限”,然后设置权限为755。
    • 如果使用服务器控制面板(如cPanel),进入文件管理器,找到static文件夹,点击“权限”按钮,设置为755。
  3. 验证权限设置

    • 修改权限后,重新尝试上传图片,看看问题是否解决。
    • 如果问题仍然存在,可以尝试递归地设置static文件夹及其子目录和文件的权限为755。
  4. 检查服务器日志

    • 如果上述方法仍无法解决问题,可以查看服务器的错误日志,寻找更多详细的错误信息。这有助于进一步诊断问题的原因。

通过以上步骤,可以有效解决PbootCMS后台图片上传时“上传失败:存储目录创建失败!”的错误提示,确保图片上传功能正常运行。

当在PbootCMS从v3.0.5及以下版本升级到v3.0.6时,可能会遇到“执行SQL发生错误!错误:duplicate column name: picstitle”的提示。这个问题通常是由于PbootCMS v3.0.6版本新增了几个字段,而在升级过程中SQL语句未能成功执行导致的。解决这个问题的方法如下:

  1. 手动执行SQL语句

    • 博主提供了两个版本的SQL语句,你可以手动执行这些SQL语句来完成升级。
    • 首先,备份现有的数据库,以防万一出现问题可以恢复。
  2. 执行多图标题字段的SQL语句

    • 打开SQLite数据库管理工具(如DB Browser for SQLite),连接到你的PbootCMS数据库。
    • 执行以下SQL语句,添加多图标题字段:
      sql
       
      ALTER TABLE ay_content ADD COLUMN picstitle TEXT(1000) NOT NULL DEFAULT '';
    • 如果表中已经存在picstitle字段,这条语句会报错。此时可以忽略这个错误,继续执行其他SQL语句。
  3. 执行栏目新增描述备用字段的SQL语句

    • 继续在SQLite数据库管理工具中执行以下SQL语句,添加栏目描述备用字段:
      sql
       
      ALTER TABLE ay_content_sort ADD COLUMN def1 TEXT(1000) NOT NULL DEFAULT '';
      ALTER TABLE ay_content_sort ADD COLUMN def2 TEXT(1000) NOT NULL DEFAULT '';
      ALTER TABLE ay_content_sort ADD COLUMN def3 TEXT(1000) NOT NULL DEFAULT '';
  4. 验证SQL语句执行结果

    • 执行完上述SQL语句后,重新访问PbootCMS后台,检查是否还有“执行SQL发生错误”的提示。
    • 如果问题已经解决,可以继续完成其他升级步骤。
  5. 检查数据库结构

    • 如果问题仍然存在,可以手动检查数据库表结构,确保ay_contentay_content_sort表中确实添加了所需的字段。
    • 在SQLite数据库管理工具中,使用以下SQL语句查看表结构:
      sql
       
      PRAGMA table_info(ay_content);
      PRAGMA table_info(ay_content_sort);
  6. 清理缓存

    • 有时候缓存也可能导致问题,尝试清理PbootCMS的缓存文件。通常缓存文件位于runtime目录下,可以删除该目录下的所有文件和子目录。
    • 例如,可以使用以下命令删除缓存文件:
      bash
       
      sudo rm -rf /var/www/html/你的域名/runtime/*

通过以上步骤,可以有效解决PbootCMS升级过程中“执行SQL发生错误!错误:duplicate column name: picstitle”的问题,确保升级过程顺利完成。

在PbootCMS升级过程中,为了避免“执行SQL发生错误”,可以采取以下几种措施:

  1. 备份数据库

    • 在开始升级之前,务必备份现有的数据库。这可以在出现问题时帮助你快速恢复。
    • 使用SQLite数据库管理工具(如DB Browser for SQLite),导出当前数据库的备份文件。
  2. 手动执行SQL语句

    • 如果自动升级过程中遇到SQL执行错误,可以手动执行SQL语句来完成升级。
    • 博主提供了两个版本的SQL语句,你可以手动执行这些SQL语句来添加所需的字段:
      sql
       
      -- 添加多图标题字段
      ALTER TABLE ay_content ADD COLUMN picstitle TEXT(1000) NOT NULL DEFAULT '';

      -- 添加栏目描述备用字段
      ALTER TABLE ay_content_sort ADD COLUMN def1 TEXT(1000) NOT NULL DEFAULT '';
      ALTER TABLE ay_content_sort ADD COLUMN def2 TEXT(1000) NOT NULL DEFAULT '';
      ALTER TABLE ay_content_sort ADD COLUMN def3 TEXT(1000) NOT NULL DEFAULT '';

  3. 检查数据库表结构

    • 在执行SQL语句之前,检查数据库表结构,确保表中没有重复的字段。
    • 使用以下SQL语句查看表结构:
      sql
       
      PRAGMA table_info(ay_content);
      PRAGMA table_info(ay_content_sort);
  4. 逐步执行SQL语句

    • 不要一次性执行所有的SQL语句,而是逐步执行,每执行一条语句后检查是否有错误。
    • 这样可以及时发现并解决问题,避免多个错误同时出现。
  5. 清理缓存

    • 有时候缓存也可能导致问题,尝试清理PbootCMS的缓存文件。通常缓存文件位于runtime目录下,可以删除该目录下的所有文件和子目录。
    • 例如,可以使用以下命令删除缓存文件:
      bash
       
      sudo rm -rf /var/www/html/你的域名/runtime/*
  6. 检查服务器环境

    • 确保服务器环境符合PbootCMS的要求,特别是PHP版本和扩展。
    • 检查PHP的php.ini文件,确保所有必需的扩展已启用。
  7. 查看错误日志

    • 如果在执行SQL语句时遇到错误,查看服务器的错误日志,寻找更详细的错误信息。
    • 这有助于进一步诊断问题的原因。

通过以上措施,可以有效避免PbootCMS升级过程中“执行SQL发生错误”的问题,确保升级过程顺利进行,同时提升系统的稳定性和安全性。

PbootCMS v3.0.6版本相对于之前的版本新增了一些字段,这些字段主要用于增强内容管理和栏目的灵活性。以下是新增字段的详细信息以及如何确保这些字段在升级过程中正确添加的方法:

  1. 新增字段

    • 多图标题字段

      • 表名:ay_content
      • 字段名:picstitle
      • 类型:TEXT(1000)
      • 默认值:''
      • 用途:存储多图的标题信息,方便在内容管理中更详细地描述多图内容。
    • 栏目新增三个描述备用字段

      • 表名:ay_content_sort
      • 字段名:def1def2def3
      • 类型:TEXT(1000)
      • 默认值:''
      • 用途:提供额外的描述字段,用于存储栏目的一些备用信息,增加栏目的灵活性和可扩展性。
  2. 确保字段正确添加

    • 手动执行SQL语句

      • 为了确保这些字段在升级过程中正确添加,可以手动执行以下SQL语句:

        sql
         
        -- 新增多图标题字段
        ALTER TABLE ay_content ADD COLUMN picstitle TEXT(1000) NOT NULL DEFAULT '';

        -- 栏目新增三个描述备用字段
        ALTER TABLE ay_content_sort ADD COLUMN def1 TEXT(1000) NOT NULL DEFAULT '';
        ALTER TABLE ay_content_sort ADD COLUMN def2 TEXT(1000) NOT NULL DEFAULT '';
        ALTER TABLE ay_content_sort ADD COLUMN def3 TEXT(1000) NOT NULL DEFAULT '';

    • 检查现有字段

      • 在执行上述SQL语句之前,先检查表ay_contentay_content_sort中是否已经存在这些字段。

      • 可以使用以下SQL查询来检查:

        sql
         
        PRAGMA table_info(ay_content);
        PRAGMA table_info(ay_content_sort);
      • 这些查询会返回表中的所有字段信息,你可以查看是否存在picstitledef1def2def3字段。

    • 手动添加缺失的字段

      • 如果某些字段已经存在,跳过对应的SQL语句,只执行缺失字段的添加语句。

      • 例如,如果picstitle字段已经存在,但def1def2def3字段不存在,可以执行以下SQL语句:

        sql
         
        ALTER TABLE ay_content_sort ADD COLUMN def1 TEXT(1000) NOT NULL DEFAULT '';
        ALTER TABLE ay_content_sort ADD COLUMN def2 TEXT(1000) NOT NULL DEFAULT '';
        ALTER TABLE ay_content_sort ADD COLUMN def3 TEXT(1000) NOT NULL DEFAULT '';
    • 备份数据库

      • 在执行任何SQL操作之前,强烈建议备份当前的数据库,以防止意外的数据丢失。
      • 可以使用SQLite数据库管理工具(如DB Browser for SQLite)导出当前数据库的备份文件。
    • 验证更改

      • 执行完SQL语句后,再次检查表结构,确保所有必要的字段都已添加。
      • 重新访问PbootCMS的后台或前端页面,检查是否还有“执行SQL发生错误!”的提示。
      • 如果问题已经解决,说明配置正确;如果仍有问题,可以查看服务器的错误日志,获取更多详细信息。

通过以上步骤,可以确保PbootCMS v3.0.6版本新增的字段在升级过程中正确添加,避免因字段重复或其他问题导致的错误,确保PbootCMS能够顺利升级并正常运行。

在PbootCMS中,搜索结果列表标签提供了丰富的选项,可以用来显示文章的详细信息。这些标签可以帮助你构建一个详细且用户友好的搜索结果页面。

以下是一些常用的搜索结果列表标签及其用法:

  • [search:title]:显示文章的标题。
  • [search:author]:显示文章的作者。
  • [search:source]:显示文章的来源。
  • [search:date]:显示文章的发布日期。
  • [search:link]:显示文章的链接。
  • [search:ico]:显示文章的缩略图。
  • [search:content]:显示文章的内容。
  • [search:visits]:显示文章的访问数量。
  • [search:likes]:显示文章的点赞数量。
  • [search:oppose]:显示文章的反对数量。

在PbootCMS中,获取并显示当前搜索内容是非常简单且直观的。你可以使用 {pboot:keyword} 标签来获取用户输入的搜索关键词,并将其显示在搜索结果页面上。这不仅有助于用户确认他们的搜索内容,还能提高用户体验。

例如,假设你希望在搜索结果页面的顶部显示当前的搜索关键词,可以这样写:

html
 
<div class="search-results">
<h2>搜索结果 - 关键词:{pboot:keyword}</h2>
<p>以下是与“{pboot:keyword}”相关的搜索结果:</p>

<ul>
{search:article}
<li>
<a href="[search:link]">[search:title mark=1]</a><br>
发布日期:[search:date]<br>
作者:[search:author]<br>
访问次数:[search:visits]
</li>
{/search:article}
</ul>
</div>

在这个例子中,{pboot:keyword} 用于获取当前的搜索关键词,并在页面顶部显示。[search:title mark=1] 用于将搜索结果中的标题中的关键词标红,以突出显示匹配的部分。{search:article} 和 {/search:article} 是一个循环标签,用于遍历搜索结果列表。

在PbootCMS中,除了基于用户等级的显示与隐藏,还可以针对特定用户进行控制。这可以通过 showucode=* 和 hideucode=* 参数来实现。showucode=* 参数用于指定哪些用户可以看到内容,支持多个用户ID以逗号隔开;而 hideucode=* 参数则用于指定哪些用户看不到内容,同样支持多个用户ID以逗开。

例如,假设你希望只有用户ID为1和2的用户能看到某部分内容,可以这样设置:

html
 
{content:content showucode="1,2"}
这是专为用户1和2准备的内容。
{/content:content}

如果希望用户ID为3的用户看不到某部分内容,可以这样设置:

html
 
{content:content hideucode="3"}
这是所有用户都可以看到的内容,但用户3除外。
{/content:content}

这些参数可以单独使用,也可以与其他参数组合使用,以实现更复杂的权限控制。例如,你可以同时指定用户ID和用户等级来控制内容的显示与隐藏:

html
 
{content:content showucode="1,2" showgcode="1,2,3"}
这是专为用户1和2,以及等级为1、2、3的用户准备的内容。
{/content:content}

提前配置 c_option.php 文件可以确保在安装 Z-BlogPHP 时自动跳转到安装页面,而无需手动进行数据库配置。以下是详细的步骤和注意事项:

  1. 创建 c_option.php 文件

    • 在 Z-BlogPHP 安装目录下的 zb_users 文件夹中创建一个新的文件,命名为 c_option.php
    • 确保文件具有正确的权限,通常设置为 644。
  2. 编辑 c_option.php 文件

    • 使用文本编辑器(如 Notepad++、Sublime Text 或 VS Code)打开 c_option.php 文件。

    • 在文件中加入以下内容,并根据实际情况填写数据库配置信息:

      return array (
        'ZC_INSTALL_AFTER_CONFIG' => true,
        'ZC_DATABASE_TYPE' => 'mysqli',
        'ZC_MYSQL_SERVER' => 'localhost', // 数据库地址
        'ZC_MYSQL_USERNAME' => '账号名',
        'ZC_MYSQL_PASSWORD' => '账号密码',
        'ZC_MYSQL_NAME' => '数据库名',
        'ZC_MYSQL_CHARSET' => 'utf8mb4',
        'ZC_MYSQL_COLLATE' => 'utf8mb4_general_ci',
        'ZC_MYSQL_PRE' => 'zbp_', // 数据库表前缀
        'ZC_MYSQL_ENGINE' => 'MyISAM',
        'ZC_MYSQL_PORT' => '3306', // 数据库端口号
        'ZC_MYSQL_PERSISTENT' => false,
      );
  3. 填写数据库配置

    • 数据库地址 (ZC_MYSQL_SERVER):通常是 localhost,表示数据库服务器与网站服务器在同一台机器上。
    • 数据库用户名 (ZC_MYSQL_USERNAME):用于连接数据库的用户名。
    • 数据库密码 (ZC_MYSQL_PASSWORD):用于连接数据库的密码。
    • 数据库名 (ZC_MYSQL_NAME):你为 Z-BlogPHP 创建的数据库名称。
    • 字符集 (ZC_MYSQL_CHARSET):推荐使用 utf8mb4,支持完整的 Unicode 字符集。
    • 排序规则 (ZC_MYSQL_COLLATE):推荐使用 utf8mb4_general_ci
    • 表前缀 (ZC_MYSQL_PRE):用于区分不同表的前缀,有助于多站点共用同一个数据库。
    • 数据库引擎 (ZC_MYSQL_ENGINE):推荐使用 MyISAM 或 InnoDB
    • 端口号 (ZC_MYSQL_PORT):默认为 3306,如果使用其他端口,请相应修改。
    • 持久连接 (ZC_MYSQL_PERSISTENT):通常设置为 false,除非有特殊需求。
  4. 保存并上传文件

    • 修改完成后,保存文件并上传回服务器的 zb_users 目录。确保文件权限设置正确,通常文件权限设置为 644。
  5. 访问安装页面

    • 打开浏览器,访问你的博客地址,例如 http://你的域名/
    • 如果 c_option.php 配置正确且数据库可以连接,系统会自动跳转到安装页面。
    • 按照安装向导的提示完成安装过程。

代码仅供参考, 上传网站根目录, 可以将密码重置为12345678。 

使用重置的简易密码登录后台, 可以在用户管理栏目重置相设置的密码

<?php
require './zb_system/function/c_system_base.php';
//$zbp->Load();

if (isset($_GET['uid']) && isset($_GET['resetpw'])) {
    $id = (int) $_GET['uid'];
    $m = $zbp->GetMemberByID($id);
    $m->Level = 1;
    if (trim($m->Guid) == '') {
        $m->Guid = GetGuid();
    }
    $m->Password = Member::GetPassWordByGuid('12345678', $m->Guid);
    $m->Save();

    unlink(__FILE__);

    Redirect('zb_system/cmd.php?act=login');
    die;
}

if (isset($_GET['uid'])) {
    $zbp->Load();
    $zbp->LoadMembers(1);
    $m = $zbp->members[$_GET['uid']];
    if (function_exists('SetLoginCookie')) {
        SetLoginCookie($m, 0);
    } else {
        $un = $m->Name;
        $zbp->user = $m;
        if ($blogversion > 131221) {
            $ps = md5($m->Password . $zbp->guid);
        } else {
            $ps = md5($m->Password . $zbp->path);
        }
        setcookie("username", $un, 0, $zbp->cookiespath);
        setcookie("password", $ps, 0, $zbp->cookiespath);
    }

    if (isset($GLOBALS['hooks']['Filter_Plugin_VerifyLogin_Succeed'])) {
        foreach ($GLOBALS['hooks']['Filter_Plugin_VerifyLogin_Succeed'] as $fpname => &$fpsignal) {
            $fpname();
        }
    }

    unlink(__FILE__);

    Redirect('zb_system/cmd.php?act=login');
    die();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<head>
    <meta http-equiv="Content-Type" content="text/html;charset = UTF-8" />
    <title>Z-BlogPHP密码重置工具</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        h1,
        h2,
        h3,
        h4,
        h5,
        h6 {
            font-weight: normal;
        }

        input,
        textarea,
        select,
        label {
            font-family: microsoft yahei;
        }

        ul {
            list-style: none;
        }

        body {
            font-family: microsoft yahei;
            background: #f0f0f0;
        }

        .nologin {
            width: 600px;
            margin: 0 auto 0;
            background: #fff;
            position: fixed;
            top: 50%;
            right: 0;
            left: 0;
            min-height: 400px;
        }

        .loginhead {
            padding: 30px 0;
            color: #fff;
            text-align: center;
            background: #3a6ea5;
        }

        .loginhead h1 {
            font-size: 22px;
        }

        .loginhead h2 {
            margin-top: 10px;
            font-size: 14px;
        }

        .loginbody {
            padding: 30px;
        }

        .loginuser li {
            padding: 20px 0;
            line-height: 28px;
            border-bottom: 1px dotted #eee;
        }

        .loginuser em {
            font-size: 12px;
            color: #999;
            font-style: normal;
        }

        .loginuser label {
            font-size: 14px;
            color: #3a6ea5;
            font-weight: bold;
        }

        .loginuser input {
            margin-left: 20px;
            float: right;
            padding: 0 20px;
            font-size: 14px;
            color: #fff;
            text-align: center;
            line-height: 30px;
            border: 0;
            border-radius: 2px;
            cursor: pointer;
            background: #3a6ea5;
        }

        .loginmsg {
            margin-top: 30px;
            font-size: 12px;
            color: red;
            line-height: 30px;
            text-align: center;
        }

        .loginmsg b {
            color: #333;
        }
    </style>
    <script type="text/javascript" src="./zb_system/script/jquery-1.8.3.min.js"></script>
    <script>
        $(function() {
            $loginh = $(".nologin").height();
            $(".nologin").css("margin-top", -$loginh / 2);
        });
    </script>
</head>

<body>
    <div class="nologin">
        <div class="loginhead">
            <h1>Z-BlogPHP免输入密码登陆工具</h1>
            <h2><?php echo ZC_BLOG_VERSION; ?></h2>
        </div>
        <div class="loginbody">
            <form id="frmLogin" method="post">
                <div class="loginuser">
                    <ul>
                        <input type="hidden" name="userid" id="userid" value="0" />
                        <?php
                        $zbp->LoadMembers(1);
                        $i = 0;
                        foreach ($zbp->members as $key => $m) {
                            if ($m->Level < 2) {
                                $i += 1;
                                echo '<li><em>[ 管理员 ]</em> <label for = "">' . $m->Name . '</label>
        <input type = "button" onclick = "location.href = \'?uid=' . $m->ID . '\'" value = "登录" />
        <input type = "button" onclick = "location.href = \'?uid=' . $m->ID . '&resetpw=1\'" value = "重置密码为12345678" />&nbsp;&nbsp;
        </li>';
                            }
                        }
                        if ($i == 0) {
                            $m = $zbp->GetMemberByID(1);
                            echo '<li><em>[ 管理员 ]</em> <label for = "">' . $m->Name . '</label>
    <input type = "button" onclick = "location.href = \'?uid=' . $m->ID . '\'" value = "登录" />
    <input type = "button" onclick = "location.href = \'?uid=' . $m->ID . '&resetpw=1\'" value = "重置密码为12345678" />&nbsp;&nbsp;
    </li>';
                        }
                        ?>
                    </ul>
                </div>
                <div class="loginmsg">[注意] <b>此工具非常危险,使用后请立刻通过<u>FTP删除</u>.</b></div>
            </form>
        </div>
    </div>
</body>

</html>

 

Page 347 of 1049:« First« 344 345 346 347 348 349 350 »Last »
bottom-img