学做网站培训课程介绍

当前位置:

PHP判断字符串是否含有数组任意值(阻止网站发布垃圾文章)

我们在网站开发过程中,有时需要对某个数据进行验证,防止自己的网站被提交了一些不好的数据,这时我们就需要使用验证判断。

实例:

我们做网站时,在自己网站上添加了在线投稿功能,但这个投稿功能会有一定的风险,会被一些别有用心的人拿来发布不合规内容,这样对于我们网站本身也是特别不好的。

如何对网站发布的内容进行验证呢,如果网站发布的内容中包含了一些违规词,就不能发布。如果使用之前讲的php判断字符串中是否包含另一个字符串的方法就很难有效,因为它只能判断一个词,这就要用到我们今天说的知识:PHP判断字符串是否含有数组中的任意值。

基本语法:


<?php
$arr=[];
$str='';
$result=0;
foreach($arras$item){
if(strpos($str,$item)!==false){
$result=1;
break;
}
}
echo $result;
?>

实际应用:


<?php
$arr=array('不合规词1','不合规词1');
$str='这里是文章发布的内容';
$result=0;
foreach($arras$item){
if(strpos($str,$item)!==false){
$result=1;
break;
}
}
echo $result;
?>

代码解释:

$arr 是填写网站过滤的词,每个词用逗号隔开;
$str 是要被检验的内容
$result 是检验的结果,如果$result=0 代表不包含  $result=1 代表包含

使用案例:

通过使用上面的代码中$result 的输出值,我们可以进行检验判断。以下是将这段代码与前端用户投稿功能结合的案例代码。它对用户发布的内容和标题进行验证判断,如果包含了不合规词语,将不能发布。对于自己开网站很有用!


<?php
$badkey=array('女神','网游','不错的文章');
$result=0;
foreach($badkey as $item){
if(strpos($title,$item)!==false){
$result=1;
break;
}
}
$jieguo = $result;
if($jieguo==1){wp_die('内容不当!');}
?>

代码解释:

在这段代码里,我们一共设置了三个过滤词,分别是 女神,网游,不错的文章 ,并将它们写在数组$badkey里;
wp_die() 起到了阻止发布的作用,如果判断$jieguo==1 代码发布的内容中包含了三个过滤词任意一个,这时就阻止它发布。

以下是带有PHP判断的wordpress 用户投稿功能代码:(可以有效的防止网站发布垃圾文章)


<?php
/*
Template Name: 发布模板
代码来源:学做网站论坛 https://www.xuewangzhan.com/
*/

if( isset($_POST['tougao_form']) && $_POST['tougao_form'] == 'send') {
global $wpdb;
$last_post = $wpdb->get_var("SELECT `post_date` FROM `$wpdb->posts` ORDER BY `post_date` DESC LIMIT 1");
if ( (date_i18n('U') - strtotime($last_post)) < 120 ) {
wp_die('您发布也太勤快了吧,先歇会儿!<a href="'.$current_url.'">点此返回</a>'); }
// 表单变量初始化
$name = isset( $_POST['tougao_authorname'] ) ? trim(htmlspecialchars($_POST['tougao_authorname'], ENT_QUOTES)) : '';
$email = isset( $_POST['tougao_authoremail'] ) ? trim(htmlspecialchars($_POST['tougao_authoremail'], ENT_QUOTES)) : '';
$blog = isset( $_POST['tougao_authorblog'] ) ? trim(htmlspecialchars($_POST['tougao_authorblog'], ENT_QUOTES)) : '';
$title = isset( $_POST['tougao_title'] ) ? trim(htmlspecialchars($_POST['tougao_title'], ENT_QUOTES)) : '';
$category = isset( $_POST['cat'] ) ? (int)$_POST['cat'] : 0;
$content = isset( $_POST['tougao_content'] ) ? trim($_POST['tougao_content']) : '';
$content = str_ireplace('?>', '?&gt;', $content);
$content = str_ireplace('<?', '&lt;?', $content);
$content = str_ireplace('<script', '&lt;script', $content);
$content = str_ireplace('<a ', '<a rel="external nofollow" ', $content);

// 表单项数据验证
if ( empty($name) || mb_strlen($name) > 20 ) {
wp_die('昵称必须填写,且长度不得超过20字。<a href="'.$current_url.'">点此返回</a>');
}
$badkey=array('女神','网游','不错的文章');
$result=0;
foreach($badkey as $item){
if(strpos($title,$item)!==false){
$result=1;
break;
}
}
$jieguo = $result;
if($jieguo==1){wp_die('内容不当!');}

if ( empty($email) || strlen($email) > 60 || !preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $email)) {
wp_die('Email必须填写,且长度不得超过60字,必须符合Email格式。<a href="'.$current_url.'">点此返回</a>');
}

if ( empty($title) || mb_strlen($title) > 100 ) {
wp_die('标题必须填写,且长度不得超过100字。<a href="'.$current_url.'">点此返回</a>');
}

if ( empty($content) || mb_strlen($content) > 3000 || mb_strlen($content) < 50) {
wp_die('内容必须填写,且长度不得超过3000字,不得少于50字。<a href="'.$current_url.'">点此返回</a>');
}

$post_content = '作者: '.$name.'<br />Email: '.$email.'<br />详细内容:<br />'.$content.'<br /><br />联系我时,请说是在学做网站论坛看到的,谢谢!<br />';

$tougao = array(
'post_title' => $title,
'post_content' => $post_content,
'post_category' => array($category)
);
// 将文章插入数据库
$status = wp_insert_post( $tougao );

if ($status != 0) {
// 发布成功给博主发送邮件
// somebody#example.com替换博主邮箱
// My subject替换为邮件标题,content替换为邮件内容
wp_mail("dangtu123@126.com","发贴成功了……","恭喜你,在学做网站论坛发贴成功了");
wp_die('发布成功!需经过学做网站论坛审核之后才能显示!快审核,请记住我们网址:https://www.xuewangzhan.com/!<a href="'.$current_url.'">点此返回</a>', '发布成功');
}
else {
wp_die('发布失败!请返回重新发布!<a href="'.$current_url.'">点此返回</a>');
}
} get_header();?>

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

相关教程

  • 什么本地环境?就是在你个人的电脑上安装一个环境,模拟出你的虚拟空间一样的环境。这样还没有购买域名和网站空间的朋友,就可以先在本地搭建好word
  • 一般论坛在根目录下放置,在后台设置默认域名就可以解决这个问题,但是论坛放在一级目录下解决这个问题的时候就会存在一些困难了,那么如何将域名后面
  • wordpress程序的评论头像是自动的调用全球gravatar头像,wordpress程序本身是不支持用户设置头像的,网站后台只支持“对于那些没有自定义头像的用户,
  • 很多学建网站学员在使用wordpress仿站时,会碰到这样的情况,目标网站的文章列表版块中,第一篇文章的样式与其它文章的样式不一样。如下图所示:(相
  • 老师,我的网站上用了一个JS代码,我定义了一个变量之后,想在JS循环里将这个变量与一个字符串组合成一个新变量,然输出,我使用var cityarr = "c
  • 在自己做网站过程中,有时需要获取某个字段的值,通过PHP就可以轻松获取到。php 截取指定字符后面的内容可以使用函数strripos,获取一个字符串在另
  • 我们做好网站之后,如果网站前台有提交表单,经常会出现被恶意发布信息。而且内容都英文,这时,我们可以通过jQuery检测字符串是否含有中文来解决这些
  • 我们在网站开发过程中,有时需要对某个数据进行验证,防止自己的网站被提交了一些不好的数据,这时我们就需要使用验证判断。实例:我们做网站
  • 老师你好,我是建站学习新手,自学了一段时间的PHP,想问一下如何使用while循环内容写入数组?这个代码应该怎么写呢?使用while循环可以将循
  • 我们知道,我们可以通过表单提交数据到数据库里,我们常用的就是一个数据一次提交,如果想将多条数据一次性通过表单方式提示就比较麻烦了。为了解
  • 网站建好之后,经常会被别人恶意的攻击扫描,企图通过暴力探测方式获取网站中一些内部配置文件和信息。我们可以使用htaccess阻止IP、域名访问攻击扫描
  • 本节课程要点:本课程讲解一下wordpress如何发布文章。wordpress的文章发布有很多形式可以选择,所以对于第一次接触的您来说,是不是碰到问题了?
  • 近期,有一些学做网站论坛的学员反映,当他们在wordpress网站的后台发布文章后,点击编辑器的HTML模式,会发现在文章的下面出现了一段无名的代码。代
  • 很多用wordpress的用户都会为后台成千上万的垃圾评论烦恼,如果手动去删,脑袋都大了。对于我们自己建网站时,可以通过以下方法来一次性删除所
  • 在学做网站论坛,有一些同学做了论坛网站,由于疏于管理,论坛网站被人恶意的发了很多的垃圾贴,虽然网站后台设置了审核,但垃圾贴仍然存在于论坛网站
  • 在日常上网过程中,复制,粘贴是特别寻常不过的了,有时我们在某一网站复制后,粘贴到别的地方时,它会自己加上它网站的一个版权信息链接。比如:此文章转