欢迎光临 - 我的站长站,本站所有资源仅供学习与参考,禁止用于商业用途或从事违法行为!

帝国cms教程

帝国CMS检测字段重复教程

帝国cms教程 我的站长站 2025-02-25 共0人阅读

帝国CMS检测字段重复,其实这个帝国CMS就自带的,大家可以参考帝国CMS判断标题是否重复的代码,改成你的需要判断的代码就可以了。

但是有些情况帝国自带的标题重复方法达不到要求,下面我的站长站教大家如何自己手写一个帝国CMS检测字段重复教程。

方法一

HTML 示例代码:

<label for="siteurl">输入网址:</label>
<input type="text" id="siteurl" name="siteurl" oninput="checkSiteUrl()">
<span id="result"></span>
<script>
function checkSiteUrl() {
    const siteurl = document.getElementById('siteurl').value;
    if (siteurl.trim() === '') return;
    // 发送 AJAX 请求到后端
    fetch('/check-url', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({ siteurl })
    })
    .then(response => response.json())
    .then(data => {
        const resultElement = document.getElementById('result');
        if (data.exists) {
            resultElement.style.color = 'red';
            resultElement.textContent = '此网址已存在!';
        } else {
            resultElement.style.color = 'green';
            resultElement.textContent = '此网址可用。';
        }
    })
    .catch(error => console.error('Error:', error));
}
</script>

后端php代码

<?php
header('Content-Type: application/json');
// 假设这是数据库中的已有 URL 列表
$existing_urls = [
    "http://www.qq.com/",
    "https://qq.com",
    "http://example.com"
];
// 获取前端传来的数据
$input_url = $_POST['siteurl'] ?? '';
if (empty($input_url)) {
    echo json_encode(['exists' => false]);
    exit;
}
/**
* 对 URL 进行标准化处理
*/
function normalize_url($url) {
    // 解析 URL
    $parsed_url = parse_url($url);
    // 提取域名部分
    $host = strtolower($parsed_url['host'] ?? '');
    if (substr($host, 0, 4) === 'www.') {
        $host = substr($host, 4); // 去掉 www.
    }
    // 提取路径部分并去掉多余的斜杠
    $path = isset($parsed_url['path']) ? rtrim($parsed_url['path'], '/') : '';
    // 返回标准化后的 URL
    return [
        'host' => $host,
        'path' => $path
    ];
}
/**
* 生成所有可能的 URL 变体
*/
function generate_variations($normalized_url) {
    $variations = [];
    $protocols = ['http', 'https'];
    $host = $normalized_url['host'];
    $path = $normalized_url['path'];
    foreach ($protocols as $protocol) {
        // 不带 www.
        $variations[] = $protocol . '://' . $host . $path;
        // 带 www.
        $variations[] = $protocol . '://www.' . $host . $path;
    }
    return $variations;
}
// 标准化输入的 URL
$normalized_input = normalize_url($input_url);
// 生成所有可能的变体
$variations = generate_variations($normalized_input);
// 检查变体是否存在于数据库中
$exists = false;
foreach ($variations as $variation) {
    if (in_array($variation, $existing_urls)) {
        $exists = true;
        break;
    }
}
// 返回结果
echo json_encode(['exists' => $exists]);
?>

方法二

1.后台-》管理数据表-》找到title字段-》输入表单替换html代码

找到:

<input type=text name=title value="<?=ehtmlspecialchars(stripSlashes($r[title]))?>" size="60">

替换成:

<input type=text name=title value="<?=ehtmlspecialchars(stripSlashes($r[title]))?>" size="60" onblur="checkTitle()">

在最下面添加如下代码:(JQ库自己加入就进了,这里的链接用的绝对地址)

<script type="text/javascript" src="/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript">function checkTitle()
    {      
               var classid=<?=$_GET[classid]?>;               var id=<?=$_GET[classid]?>;                var tit=document.add.title.value;
                console.log("我是标题="+tit);
                console.log("我是classid="+classid);
                console.log("我是id="+id);
$.ajax({
            url: 'ReTitleAjax.php?classid='+classid+'&id='+id+'&title='+tit,
            dataType:"json",
            cache: false,
                        error: function(){
                alert("检测失败,请重试");
            },
            success: function(data){                if (data==1){
                    alert('重复标题');
                }                if (data==0){                    //alert('可以添加信息');
                                        console.log("可以添加信息");
                }
            }
        });    
    }</script>

2.新建一个PHP文件ReTitleAJAX.php添加如下代码到PHP代码中

define('EmpireCMSAdmin','1');
require("../class/connect.php");
require("../class/db_sql.php");
require("../class/functions.php");
require LoadLang("pub/fun.php");
require("../data/dbcache/class.php");
$link=db_connect();
$empire=new mysqlquery();
$editor=1;
//验证用户
$lur=is_login();
$logininid=$lur['userid'];
$loginin=$lur['username'];
$loginrnd=$lur['rnd'];
$loginlevel=$lur['groupid'];
$loginadminstyleid=$lur['adminstyleid'];
$classid=(int)$_GET['classid'];
$id=(int)$_GET['id'];
$title=AddAddsData($_GET['title']);
$where='';
if($id)
{
$where=' and id<>'.$id;
}
//已审核
$num=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where title='".addslashes($title)."'".$where." limit 1");
//未审核
if(empty($num))
{
$num=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_".$class_r[$classid][tbname]."_check where title='".addslashes($title)."'".$where." limit 1");
}
echo json_encode($num)

然后把这个ReTitleAjax.php文件传到管理员目录也就是(/e/admin/目录下就可以了)