零基础学做网站培训介绍

当前位置:

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.net/
*/

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.net/!<a href="'.$current_url.'">点此返回</a>', '发布成功');
}
else {
wp_die('发布失败!请返回重新发布!<a href="'.$current_url.'">点此返回</a>');
}
} get_header();?>

相关阅读:

PHP+MYSQL环境软件phpstudy

php中从三个数中选取最大的数

AJAX 无刷新获取PHP接口数据方法(附代码)

发表评论

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

相关教程

  • 国内特别常用的PHP+MySql免费CMS系统大全:0. WordPress - 是一款基于PHP和MySQL的Blog软件,但是它也可以当作简单的cms系统来用。通过它可以快速
  • 什么本地环境?就是在你个人的电脑上安装一个环境,模拟出你的虚拟空间一样的环境。这样还没有购买域名和网站空间的朋友,就可以先在本地搭建好word
  • 高仿phpcms门户网站主题 图文教程 (18094 次浏览)
    这款wordpress cms主题是高仿phpcms,信任很多人都用过phpcms,如今运用wordpress也能够完成这样的作用。本站发布过很多高仿wordpress主题,例如高仿b
  • 在wordpress模板制作时,我们需要根据不同的情况,进行页面的判断来显示不同的内容。下面是自己做网站论坛把wordpress模板制作教程中常用判断代码汇总
  • wordpress程序的评论头像是自动的调用全球gravatar头像,wordpress程序本身是不支持用户设置头像的,网站后台只支持“对于那些没有自定义头像的用户,
  • 在建站过程中,有时,看到出现乱码或不像视频教程中出现的情况,有时也知道是那一行的错误,怎么能快速知道错误在哪里呢?这种情况应该如何着手呢?
  • 老师,我的网站上用了一个JS代码,我定义了一个变量之后,想在JS循环里将这个变量与一个字符串组合成一个新变量,然输出,我使用var cityarr = "c
  • 在自己做网站过程中,有时需要获取某个字段的值,通过PHP就可以轻松获取到。php 截取指定字符后面的内容可以使用函数strripos,获取一个字符串在另
  • 我们做好网站之后,如果网站前台有提交表单,经常会出现被恶意发布信息。而且内容都英文,这时,我们可以通过jQuery检测字符串是否含有中文来解决这些
  • 我们在网站开发过程中,有时需要对某个数据进行验证,防止自己的网站被提交了一些不好的数据,这时我们就需要使用验证判断。实例:我们做网站
  • jquery遍历数组 each() (13409 次浏览)
    定义jquery遍历数组是通过each()方法,循环运行数组中的每一个值。语法jquery遍历数组语法:[cce_js]exp.each(function(){})[/cce_
  • 老师你好,我是建站学习新手,自学了一段时间的PHP,想问一下如何使用while循环内容写入数组?这个代码应该怎么写呢?使用while循环可以将循
  • 我们知道,我们可以通过表单提交数据到数据库里,我们常用的就是一个数据一次提交,如果想将多条数据一次性通过表单方式提示就比较麻烦了。为了解
  • 网站Logo是一个网站标志性图标,一个好的网站Logo可以让浏览者过目不忘,对网站留下很深的印象。那么在我们自己建网站过程中,如何替换网站Logo图片呢
  • 漏洞名称:dedecms任意文件上传漏洞漏洞原因:dedecms早期版本后台存在大量的富文本编辑器,该控件提供了一些文件上传接口,同时dedecms
  • 本节课程要点:本课程讲解一下wordpress如何发布文章。wordpress的文章发布有很多形式可以选择,所以对于第一次接触的您来说,是不是碰到问题了?
  • 近期,有一些学做网站论坛的学员反映,当他们在wordpress网站的后台发布文章后,点击编辑器的HTML模式,会发现在文章的下面出现了一段无名的代码。代
  • 功夫不负有心人,终于把建站课程全部学习完了,也做成了自己人生的第一个网站。虽然是仿站,但也特别有成就感。这是一个艺术幼儿摄影网站,特别适合艺
  • 我在本地搭建了个一WP网站,启用Akismet 这个插件的时候,说要注册一个Akismet API Key 我进去以后发现全是英文,我也看不懂,谁有教程呀。然后安装百
  • 很多用wordpress的用户都会为后台成千上万的垃圾评论烦恼,如果手动去删,脑袋都大了。对于我们自己建网站时,可以通过以下方法来一次性删除所
  • 反垃圾评论插件:Akismet介绍Akismet是Wordpress官方推荐用的反垃圾评论插件,是Wordpress自带的。工作原理是:将留下的评论用户记录提交到一台服务
  • 请注意,这里说的文章分页,不是学做网站论坛以前说的wordpress分页插件进行网站分类目录分页,而是一篇文章如果文字过多,会造成网页篇幅过长,影响
  • 在日常上网过程中,复制,粘贴是特别寻常不过的了,有时我们在某一网站复制后,粘贴到别的地方时,它会自己加上它网站的一个版权信息链接。比如:此文章转
  • 在wordpress网站,我们可以使用下面的代码在网站首页调用最新文章。[cce]<?php wp_get_archives('type=postbypost&limit=5'); ?>[/cce]