当前位置:  编程技术>php
本页文章导读:
    ▪关于DISCUZ不用通行证登陆得内容介绍第1/2页       关于DISCUZ不用通行证登陆得内容介绍 DISCUZ是中国最常用的论坛,虽然他本身有通行证给大家连接,但实际上用户的统一还是很不好,经常要建立两个用户表,第一不利于注册和管理,第二.........
    ▪php 友好URL的实现(吐血推荐)       友好URL的实现(吐血推荐) 大家经常看到别的站的URL是这样的吧? http://www.xxx.com/module/show/action/list/page/7 或者 http://xx.com/module/show/action/show/id/8.shtml 带扩展名的 或者 http://xx.com/module/show/actio.........
    ▪PHP注释实例技巧       代码如下:<?php $a = 1; $b = 2; if (1==1) { $andy = '帅哥'; } ?> 一般注释的时候,用 代码如下:<?php /* $a = 1; $b = 2; */ if (1==1) { $andy = '帅哥'; } ?> 调程序的时候,老要把后面的*/拿到前面去,很麻烦.........

[1]关于DISCUZ不用通行证登陆得内容介绍第1/2页
    来源: 互联网  发布时间: 2013-11-30
关于DISCUZ不用通行证登陆得内容介绍
DISCUZ是中国最常用的论坛,虽然他本身有通行证给大家连接,但实际上用户的统一还是很不好,经常要建立两个用户表,第一不利于注册和管理,第二浪费数据库。
最近做一个项目也是使用的DISCUZ,所以研究了一下DISCUZ的登陆,基本完成了同步登陆。大家如果有兴趣可以研究一下。
别的不废话了,如果你自己写的系统,可以直接用DISCUZ的公用文件,直接引用include/common.inc.php就好了,这样最简单了,只要引用这个文件,$discuz_uid就是你的用户ID了,$discuz_user就是你的用户名,
如果你用的自己的公用文件,就要提取两个函数,在global.func.php中,有两个函数
Dsetcookie,和authcode,如果你不懒的话在复制一个函数clearcookies,第一个就是DISCUZ自己的建造COOKIE的函数,第二个是DISCUZ的可逆加密函数,第三个是清除COOKIE函数,我是放到我自己的FUNC.PHP文件中了
好了,咱们开始写建立和识别COOKIE的方法了
function lgoin($array)
{
$username = $array['username'];
$password = $array['password'];
$sql = "SELECT `uid`,`password`,`secques` FROM `cdb_members` WHERE
`username`='$username' and `password`=md5('$password')";
try {
$rs = $this -> _db -> query($sql);
}catch (Exception $e){
exit("查询出错,出错信息:".$e->getMessage());
return 0;
}
$row = $this -> _db -> fetch($rs); //查询登陆的用户名和密码是否正确
if($row){
dsetcookie('sid','',-2423234234); // 注销掉sid
$secques = $row['secques'];
$uid = $row['uid'];
$formPassword = $row['password'];
dsetcookie('auth', authcode("$formPassword\t$secques\t$uid", 'ENCODE','123'), '0');
return 1;
}else{
return 2;
}
}

这是一个登陆函数,废话不说了,直接说关键部分吧,在查询之后,当获得到信息后,(用户名和密码正确的话)我们获得3个信息,UID,PASSWORD,和SECQUES,这三个是DISCUZ建立COOKIE需要用的,第一个是用户ID,第二个是加密后的密码,第三个是加密后的回答问题答案(即使没有设置也要用),DISCUZ是需要提示问题和答案的,而我们登陆就不需要了,所以我这里直接把他查出来了。dsetcookie('auth', authcode("$formPassword\t$secques\t$uid", 'ENCODE','123'), '0');
这句就是建立用户的COOKIE,别的不用说了,请注意这句'123',这个地方一定要注意,这个是加密时设置的KEY,就是你这里需要和你DISCUZ的一样,所以有三个地方一定要统一,一个是global.func.php,一个是你自己复制出来的那个authcode函数,还有就是你在使用authcode的时候。这时候论坛应该可以登陆了,如果不能登陆,请看下面

    
[2]php 友好URL的实现(吐血推荐)
    来源: 互联网  发布时间: 2013-11-30
友好URL的实现(吐血推荐)
大家经常看到别的站的URL是这样的吧?
http://www.xxx.com/module/show/action/list/page/7
或者
http://xx.com/module/show/action/show/id/8.shtml 带扩展名的
或者
http://xx.com/module/show/action/show/id/8?word=ss&age=11
这样的吧
今天我就是公布下这种方法的实现,并独立出最简单的代码
函数如下,没封装成类,主要是没必要,用函数能方便些
代码如下:

<?php
/**
* 获得友好的URL访问
*
* @access public
* @return array
*/
function getQueryString(){
$_SGETS = explode("/",substr($_SERVER['PATH_INFO'],1));
$_SLEN = count($_SGETS);
$_SGET = $_GET;
for($i=0;$i<$_SLEN;$i+=2){
if(!empty($_SGETS[$i]) && !empty($_SGETS[$i+1])) $_SGET[$_SGETS[$i]]=$_SGETS[$i+1];
}
$_SGET['m'] = !empty($_SGET['m']) && is_string($_SGET['m']) ? trim($_SGET['m']).'Action' : 'indexAction';
$_SGET['a'] = !empty($_SGET['a']) && is_string($_SGET['a']) ? trim($_SGET['a']) : 'run';
return $_SGET;
}
/**
* 生成链接URL
*
* @access public
* @param array $arr
* @return string
*/
function setUrl(/blog_article/$arr/index.html){
global $Global;
$queryString='';
if($Global['urlmode']==2){
foreach($arr as $k=> $v){
$queryString.=$k.'/'.$v.'/';
}
}
$queryString.=$Global['urlsuffix'];
return $queryString;
}
?>

使用很简单
代码如下:

<?php
$_GET= getQueryString();
?>

但是这样还不行,这样只能实现
http://www.xxx.com/index.php/module/show/action/list/page/7 这样的
中间多了个index.php 为此我们要把他去掉,只好重写
但是有些文件 又不希望这样,比如 样式 图片,那就放条件里
建立一个 .htaccess文件
代码如下:

RewriteEngine on
RewriteCond $1 !^(index\.php|css|pics|themes|js|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

现在OK了,赶快去测试吧
代码如下:

<?php
$_GET= getQueryString();
print_r($_GET);
?>

    
[3]PHP注释实例技巧
    来源: 互联网  发布时间: 2013-11-30
代码如下:

<?php
$a = 1;
$b = 2;
if (1==1) {
$andy = '帅哥';
}
?>

一般注释的时候,用
代码如下:

<?php
/*
$a = 1;
$b = 2;
*/
if (1==1) {
$andy = '帅哥';
}
?>

调程序的时候,老要把后面的*/拿到前面去,很麻烦
代码如下:

<?php
/**/
$a = 1;
$b = 2;
if (1==1) {
$andy = '帅哥';
}
?>

现在应该这样写
这样是注释掉
代码如下:

<?php
/**
$a = 1;
$b = 2;
if (1==1) {
$andy = '帅哥';
}
/**/
?>
这样是不注释
代码如下:

<?php
/**/
$a = 1;
$b = 2;
if (1==1) {
$andy = '帅哥';
}
/**/
?>

再附上一个小规范
所有php文件,末尾都不要
?>
这样可以避免有空白输出

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3