(PHP)JTBC1.0单页模块

(PHP)JTBC1.0单页模块
说明:
功能灵感参考自3.0单页模块
实现方式使用1.0中的模板管理功能

本模块由JTBC教程网(http://jtbc.org.cn)免费提供.

下载地址:
https://wdjacms.pipipan.com/fs/16922972-291495742

使用方法:
解压后,请上传page文件夹至网站根目录
后台清除缓存,刷新后台页面,即可看到单页管理.

PHP删除目录及目录下的所有文件

PHP删除目录及目录下的所有文件

//循环删除目录和文件函数
function delDirAndFile( $dirName )
{
if ( $handle = opendir( "$dirName" ) ) {
while ( false !== ( $item = readdir( $handle ) ) ) {
if ( $item != "." && $item != ".." ) {
if ( is_dir( "$dirName/$item" ) ) {
delDirAndFile( "$dirName/$item" );
} else {
if( unlink( "$dirName/$item" ) )echo "成功删除文件: $dirName/$itemn”;
}
}
}
closedir( $handle );
if( rmdir( $dirName ) )echo “成功删除目录: $dirNamen”;
}
}
?>

 

js返回上一页

<a href="javascript:history.go(-1)">返回上一页</a>
<a href="javascript:location.reload()">刷新当前页面</a>
<a href="javascript:" onclick="history.go(-2); ">返回前两页</a>
<a href="javascript:" onclick="self.location=document.referrer;">返回上一页并刷新</a>
<a href="javascript:" onclick="history.back(); ">返回上一页</a>

页面跳转:

onclick="window.location.href='list.php'"

Javascript刷新页面的几种方法:

1,history.go(0)
2,location.reload()
3,location=location
4,location.assign(location)
5,document.execCommand('Refresh')
6,window.navigate(location)
7,location.replace(location)
8,document.URL=location.href

自动刷新页面的方法:
1.页面自动刷新:把如下代码加入<head>区域中

<meta http-equiv="refresh" content="10">

10指每隔10秒刷新一次页面.

2.页面自动跳转:把如下代码加入<head>区域中

<meta http-equiv="refresh" content="10;url=http://www.baidu.com">

10指隔10秒后跳转到http://www.baidu.com页面

js自动刷新当前页面:

<script language="JavaScript">
function myrefresh()
{
window.location.reload();
}
setTimeout('myrefresh()',1000); //指定1秒刷新一次
</script>

JS刷新框架的脚本语句

//刷新包含该框架的页面用
<script language=JavaScript>
parent.location.reload();
</script>

//子窗口刷新父窗口
<script language=JavaScript>
self.opener.location.reload();
</script>
( 或 <a href="javascript:opener.location.reload()">刷新</a> )

//如何刷新另一个框架的页面用
<script language=JavaScript>
parent.另一FrameID.location.reload();
</script>

要关闭窗口时刷新或开窗时刷新,在<body>中调用以下语句即可:

<body onload="opener.location.reload()"> 开窗时刷新
<body onUnload="opener.location.reload()"> 关闭时刷新
<script language="javascript">
window.opener.document.location.reload()
</script>

php版jtbc1.0添加判断是否后台登录函数

php版jtbc1.0添加判断是否后台登录函数

通过判断是否后台来区别是否前台,来实现输出不同模板文件,实现多模板共存,快速切换功能.

function ii_isAdmin()
{
$bool = false;
$strurl = str_replace('/', '', dirname($_SERVER['PHP_SELF']));
$strlen = strlen(ADMIN_FOLDER);
if(ADMIN_FOLDER == substr($strurl, 0, $strlen)) $bool = true;
return $bool;
}

 

 

 

JTBC(php) 版 QQ 一键登录实现过程

1、下载 qq 互联 php 版开发包  http://wiki.open.qq.com/wiki/website/SDK下载

2、把文件夹 API、install和文件index.php 复制到 expansion 文件加下。
3、地址栏输入" 域名/expansion/qq/" 按提示执行相关配置。回调地址:passport/qqdenglu.php

4、

<?php
require_once("../expansion/qq/API/qqConnectAPI.php");
require('../common/incfiles/function.inc.php');
define('APP_NAME', 'jtbc_');
define('COOKIES_PATH', '/');
$qc = new QC();
$access_token = $qc->qq_callback();
$openid = $qc->get_openid();
$qcc = new QC($access_token,$openid);
$arr = $qcc->get_user_info();
if (!is_null($arr))
{
$access_token = md5($access_token);
$_SESSION[APP_NAME . 'access_token'] = $access_token;
$dialog_url = "=" . $arr["nickname"] . "&sex=" . $arr["gender"] . "&openid=" . $openid . "&access_token=" . $access_token ;
echo '<meta charset="UTF-8">';
echo("<script> top.location.href='" . $dialog_url . "'</script>");
exit();
}
else
{
echo "<script>alert('登陆失败');</script>";
}
?>

5、加处理函数passport/common/incfiles/interface_config.inc.php, 注意:加处跳转代码,请自行添加。

<?php
function jtbc_cms_interface_qq_denglu()
{
$sex = ii_unescape(ii_get_safecode($_GET['sex']));
$name = ii_unescape(ii_get_safecode($_GET['name']));
$openid = ii_get_safecode($_GET['openid']);
$access_token = ii_unescape(ii_get_safecode($_GET['access_token']));
if $access_token != $_SESSION[APP_NAME . 'access_token'] die('forbidden');
global $conn;
global $ndatabase, $nidfield, $nfpre;
$zucehao = $openid;
$zucema = $access_token;
if (ap_check_isuser($zucehao) == 0)
{
$tsqlstr = "insert into $ndatabase (
" . ii_cfname('username') . ",
" . ii_cfname('password') . ",
" . ii_cfname('name') . ",
" . ii_cfname('time') . "
) values (
'$zucehao',
'$zucema',
'$name',
'" . ii_now() . "'
)";
$trs = ii_conn_query($tsqlstr, $conn);
}
else
{
$tsqlstr = "update $ndatabase set " . ii_cfname('password') . "='$zucema' ," . ii_cfname('pretime') . "=" . ii_cfname('lasttime') . "," . ii_cfname('lasttime') . "='" . ii_now() . "' where " . ii_cfname('username') . "='$zucehao'";
$trs = ii_conn_query($tsqlstr, $conn);
}
if ($trs)
{
setcookie(APP_NAME . 'user[username]', $zucehao, 0, COOKIES_PATH);
setcookie(APP_NAME . 'user[password]', $access_token, 0, COOKIES_PATH);
$_SESSION[APP_NAME . 'username'] = $openid;
header('location:http://域名');
}
else
{
echo "<script>alert('系统出错');</script>";
}
}

6、添加登陆链接文件 expansion/qq/login.php

<?php
require_once("API/qqConnectAPI.php");
$qc = new QC();
$qc->qq_login();

7、删除 expansion/qq/ 下 install 文件夹 index.php 文件

 

来源:http://qihui.name/bian_cheng/96.html

 

用PHP遍历目录下的全部文件

第一种实现办法是用dir返回对象,第二种实现办法:用readdir()函数。

< ?php
/**********************
一个简单的目录递归函数
第一种实现办法:用dir返回对象
***********************/
function tree($directory) 
{ 
	$mydir = dir($directory); 
	echo "
    n"; while($file = $mydir->read()) { if((is_dir("$directory/$file")) AND ($file!=".") AND ($file!="..")) { echo "
  • $file
  • n"; tree("$directory/$file"); } else echo "
  • $file
  • n"; } echo "n"; $mydir->close(); } //开始运行 echo "

    目录为粉红色


    n"; tree("./nowamagic"); /*********************** 第二种实现办法:用readdir()函数 ************************/ function listDir($dir) { if(is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if((is_dir($dir."/".$file)) && $file!="." && $file!="..") { echo "文件名:",$file,"

    "; listDir($dir."/".$file."/"); } else { if($file!="." && $file!="..") { echo $file."
    "; } } } closedir($dh); } } } //开始运行 listDir("./nowamagic"); ?>

NET版JTBC后台模板插件

本项目是基于 JTBC CMS .NET/MSSQL 2011/2012 版本的扩展。
扩展说明:
开发用的JTBC核心代码由jtbc.dll反编译而来。
扩展的基本原则就是不改动核心代码(jtbc.dll),如项目需要则在jtbc.plus命名空间下扩展所需的方法。
扩展的代码全部开源发布。
### 一些记录: ###
安装模块时,注意模块里的建表SQL语句,需要去掉CREATE TABLE.....下面的GO,否则生成不了相应的数据表。
后台新增用户之用户模块权限之模板(data_popedom & data_category)循环标识符{@}位置应该在

之前忘了给pagi类的pagenum加一个最大页码的限制:if (pagenum > pagenums) pagenum = pagenums;

望JT给DLL里的类,使用一些面对对象的特性,以方便扩展。

本扩展来源于网络,感谢原作者的无私奉献.
下载地址:
https://wdjacms.pipipan.com/fs/16922972-242010128

淘宝客API申请后如何获取sessionkey

更新:

淘宝官方提供SessionKey获取辅助工具

http://open.taobao.com/apitools/sessionPage.htm?spm=0.0.0.0.FeS4Qc

 

正式环境下获取SessionKey

客户端应用

访问 http://my.open.taobao.com/auth/authorize.htm?appkey={appkey},即可获得授权码

通过http方式访问 http://container.open.taobao.com/container?authcode={授权码},会得到类似如下的字符串top_appkey=1142&top_parameters=xxx&top_session=xxx&top_sign=xxx&encode=utf-8

字符串里面的top_session值即为SessionKey(后边xxx)

网站应用

网页打开http://my.open.taobao.com/auth/authorize.htm?appkey={appkey},

 

正常登录后会显示授权码。

网页打开   http://container.open.taobao.com/container?authcode={授权码}
网页打开后有类似如下的字符串top_appkey=1142&top_parameters=xxx&top_session=xxx&top_sign=xxx&encode=utf-8

字符串里面的top_session值即为SessionKey(后边xxx).

至此得到sessionkey

面向对象设计的SOLID原则

S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写。

SRP [The Single Responsibility Principle ] 单一责任原则
OCP [The Open Closed Principle] 开放封闭原则
LSP [The Liskov Substitution Principle] 里氏替换原则
DIP [The Dependency Inversion Principle] 依赖倒置原则
ISP [The Interface Segregation Principle] 接口分离原则
  1. 单一责任原则: 当需要修改某个类的时候原因有且只有一个(THERE SHOULD NEVER BE MORE THAN ONE REASON FOR A CLASS TO CHANGE)。换句话说就是让一个类只做一种类型责任,当这个类需要承当其他类型的责任的时候,就需要分解这个类。
  2. 开放封闭原则 软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。这个原则是诸多面向对象编程原则中最抽象、最难理解的一个。
  3. 里氏替换原则 当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系(is-a 指的是类的父子继承关系,例如类D是另一个类B的子类(类B是类D的父类))
  4. 依赖倒置原则1. 高层模块不应该依赖于低层模块,二者都应该依赖于抽象 2. 抽象不应该依赖于细节,细节应该依赖于抽象
  5. 接口分离原则 不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好。