常见问题分类
全部问题
-
427
/
/
PHP strpos() 查找字符串第一次出现的位置
两种检测方法:
1、利用strpos()检测指定字符在字符串中第一次出现的位置,语法“strpos(字符串,字符,开始位置)”,如果返回代表位置的数字则表示包含,如果返回FALSE则表示不包含。
2、利用strrpos()检测指定字符在字符串中最后一次出现的位置,语法“strrpos(字符串,字符,开始位置)”,如果返回代表位置的数字则表示包含,如果返回FALSE则表示不包含。 -
400
/
/
js 获取url的多种方式
window.location.href:这个属性返回当前窗口(当前页面、iframe)的完整 URL。 window.parent.location.href 是上一层页面跳转url window.top.location.href 是最外层的页面跳转url document.URL:这个属性也可以用来获取当前窗口的完整 URL window.location.toString():使用该方法同样可以获得当前页面的完整 URL。 window.location.protocol + '//' + window.location.host + window.location.pathname -
421
/
/
php分割字符串
$str = "www.chenziwen.cn"; $i = explode(".",$str); print_r ($i); -
413
/
/
php删除/过滤字符串首尾字符串
trim($data,',');//过滤掉字符串首尾的, ltrim($data,',');//过滤掉字符串首部的, rtrim($data,',');//过滤掉字符串尾部的, -
429
/
/
JS调试输出
使用 window.alert() 弹出警告框。 使用 document.write() 方法将内容写到 HTML 文档中。 使用 innerHTML 写入到 HTML 元素。 使用 console.log() 写入到浏览器的控制台。 -
406
/
/
php json输出中文乱码
{"code":201,"msg":"\u6765\u6e90\u9519\u8bef!"}原因:json输出时会对中文进行编码,需要指定为不进行编码,如下:
echo json_encode($data, JSON_UNESCAPED_UNICODE);//不进行Unicode编码 -
454
/
/
插件开发-常用方法
获取 GET 和 POST 变量
推荐使用核心的 Input 类来获取 GET 和 POST 提交的变量,不要直接使用 $a = $_POST['xxxx'] 的方式来获取,可能造成 SQL 注入等安全问题。
// 读取通过 POST 提交的字符串,默认值设置为空 $var_name = Input::postStrVar('var_name', ''); // 读取通过 POST 提交的数字类型,默认值设置为 0 $var_name = Input::postIntVar('var_name', 0); // 读取通过 GET 提交的字符串,默认值设置为空 $var_name = Input::getStrVar('var_name', ''); // 读取通过 GET 提交的数字类型,默认值设置为 0 $var_name = Input::getIntVar('var_name', 0); // 读取 POST 提交的数字类型的数组,如: name="ids[]",默认值为:[] $logs = Input::postIntArray('blog'); // 读取 POST 提交的字符串类型的数组,如: name="someting[]",默认值为:[] $logs = Input::postStrArray('blog'); // 读取通过 GET, POST, and COOKIE 提交的字符串,默认值设置为空 $var_name = Input::requestStrVar('var_name', ''); // 读取通过 GET, POST, and COOKIE 提交的数字类型,默认值设置为 0 $var_name = Input::requestNumVar('var_name', 0);发送邮件通知
$mail = 'xxx@qq.com'; $title = '邮件标题'; $content = '邮件内容'; Notice::sendMail($mail, $title, $content); -
408
/
/
前后台挂载点-3轮流接管式挂载
执行原理:执行挂在钩子上的所有函数,上一个执行结果作为下一个的输入,且会修改传入的第二个变量值。
适用场景:对指定内容进行修改,eg:不同插件对文章内容进行不同的修改替换。
// 挂载点名称:article_content_echo,文章内容展示挂载点,带有参数$log_content, $log_content // 第一个参数 $logData:输入原始的文章数据,数组结构包括标题、内容、文章id等信息 // 第二个参数 $logData:被插件修改后的文章数据,完成内容变量的覆盖替换。 doMultiAction('article_content_echo', $logData, $logData);挂载点列表(轮流接管式挂载)
挂载点 所在文件 描述 doMultiAction('article_content_echo', $log_content, $log_content); include/controller/log_controller.php 文章内容输入挂载点,可用于文章内容替换 示例
// 将文章内容中的 aaaa 替换为 bbbb,并将替换后的文章内容存入变量 $result function content_replace($logData, &$result){ $result = str_replace('aaaa', 'bbbb', $logData['log_content']) } addAction('article_content_echo', 'content_replace'); -
409
/
/
前后台挂载点-2单次接管式挂载
执行原理:执行挂在钩子上的第一个函数,仅执行一次,接收输入input,且会修改传入的变量$ret)
适用场景:替换核心的函数,如接管核心的文件上传函数,将上传本地改为上传云端
// 挂载点名称:upload_media,上传文件挂载点,带有参数$attach,$ret doOnceAction('upload_media', $attach, $ret); // 插件开发例子:将函数upload2qiniu 挂载到upload_media挂载点 addAction('upload_media', 'upload2qiniu'); function upload2qiniu($attach, &$result) { }挂载点列表(单次接管式挂载)
挂载点 所在文件 描述 doOnceAction('upload_media', $attach, $ret); admin/media.php 资源文件上传挂载点,可以用于云存储插件开发 doOnceAction('get_Gravatar', $email, $gravatar_url); include/lib/common.php 评论人头像挂载点,可以用于改变头像的生成方式 -
438
/
/
前后台挂载点-1插入式挂载点
执行原理:顺序执行挂在钩子上的函数,支持多参数
适用场景:在挂载点位置插入指定内容,或者执行某些动作。
// 挂载点名称:adm_main_top doAction('adm_main_top'); // 插件开发例子:在如上挂载点 "adm_main_top",挂载tips函数,实现管理后台插入一句话。 addAction('adm_main_top', 'tips'); function tips() { echo "<div>世界你好</div>"; }带有参数的挂载点,参数会按照顺序传递给挂载在上面的函数。如下面的例子
// 挂载点名称:save_log,保存文章的挂载点,带有参数$blogid doAction('save_log', $blogid) // 插件开发例子:将函数test_foo挂载到如上 save_log 挂载点,并接收传递的第一个参数 $blogid addAction('save_log', 'test_foo'); function test_foo($blogid) { }后台相关挂载点
挂载点 所在文件 描述 doAction('adm_main_top') admin/views/header.php 后台首页顶部区域扩展,官方小贴士插件就使用了该挂载点 doAction('adm_head') admin/views/header.php 后台头部扩展:可以用于增加后台css样式、加载js等 doAction('adm_menu') admin/views/header.php 后台侧边栏一级菜单扩展,仅管理员可见。 doAction('login_head') admin/views/user_head.php 登录、注册页面头部扩展,可用于添加登录样式css等。 doAction('user_menu') admin/views/uc_header.php 个人中心顶部菜单扩展,仅注册用户可见。 doAction('adm_menu_ext') admin/views/header.php 后台侧边栏扩展二级菜单,用于插件单独页面。 doAction('adm_footer') admin/views/footer.php 后台底部扩展:可以用于增加后台js等 doAction('adm_main_content') admin/views/index.php 管理员后台首页信息模块扩展 doAction('user_main_content') admin/views/index_user.php 注册用户后台首页信息模块扩展 doAction('login_ext') admin/views/signin.php 后台登录页扩展:可以用于增加QQ登录等第三方登录按钮 doAction('adm_comment_display') admin/views/comment.php 后台评论显示扩展,可以用于查询评论人ip所在地域 doAction('blogger_ext') admin/views/blogger.php 后台个人信息编辑页面扩展点 doAction('save_log', $blogid) admin/article_save.php 新增文章、修改文章扩展点 doAction('del_log', $key) admin/article.php 删除文章操作扩展点 doAction('adm_writelog_head', $key) admin/article_write.php 写文章页摘要下方区域 doAction('adm_writelog_side', $key) admin/article_write.php 写文章页右侧边栏下方区域 doAction('comment_reply',$commentId, $reply) admin/comment.php 回复评论扩展点 doAction('post_note') admin/twitter.php 笔记发布扩展点 doAction('attach_upload') include/lib/common.php 扩展附件上传,如增加图片水印效果等 前台相关挂载点
挂载点 所在文件 描述 doAction('comment_post') include/controller/comment_controller.php 发表评论扩展点(写入评论前)。可用于垃圾评论防范 doAction('comment_saved’) include/model/comment_model.php 发表评论扩展点(写入评论后)。用于发布评论成功的后续操作,如发通知邮件 doAction('log_related',$logData) content/templates/default/echo_log.php 前台模板:文章详情页面扩展点、用于增加文章相关内容 doAction('index_head') Content/templates/default/header.php 前台模板:头部扩展:可以用于增加前台css样式、加载js等 doAction('index_footer') content/templates/default/footer.php 前台模板:底部扩展点 doAction('index_loglist_top') content/templates/default/log_list.php 前台模板:文章列表顶部扩展点,如显示公告等 doAction('rss_display') rss.php Rss输出扩展 示例
function tips_css() { echo "<style> #tip{ background:url(../content/plugins/tips/icon_tips.gif) no-repeat left 3px; padding:3px 18px; margin:5px 0px; font-size:12px; color:#999999; } </style>\n"; } // 在管理后台 head 头部加入 css 样式 addAction('adm_head', 'tips_css');
如您有其它疑问,还可以通过右侧方式咨询:
E-mail:
821266862@qq.com