解决Discuz头像调用造成的体积巨大的apache http 404错误日志(discuz+uchome)

未上传头像的用户,discuz在调用的时候,如果发现返回404(即头像不存在,未上传),就自动返回

/uc/images/noavatar_$1.gif   $1根据请求分别为big|middle|small

若用户没有上传头像

这个过程会产生一个404错误,日积月累,apache的错误日志会灰常大

如果discuz版本是7.X(早期版本未测试是否有此功能)

在后台设置头像调用为动态地址调用即可

但是,Uchome我找了半天没找到此功能

于是写了一个htaccess来解决此问题

如下
RewriteEngine On
RewriteCond[......]

Read more

[转]自由软件不是免费软件

《为什么我喜欢海盗湾?》,主要指出了目前版权制度存在的弊端,但并未明确指出解决该弊端的具体方法。同时,评论中又
看到“没有版权程序员就没饭吃”的观点,因此我认为有必要对自由软件的相关概念略作解释。
一、什么是盗版?
盗版指在未经版权所有人同意的情况下,对其作品、出版物进行复制、再分发的行为(引自维基百科)。
请注意,盗版的前提是有“版权所有人”,也就是说盗版这个概念是在版权制度的框架下才存在的。由于我们生活在越来越强调版权保护的社会中,因此很多人都先入为主地以为,电脑上的软件只有两种:正版和盗版。
但事实上,这种观念是不正确的,因为如果一个作品、出版物没有版权的话,那它就没有正版、[......]

Read more

用dd备份/恢复mbr 建立swapfile

选择您认为最好的人物投票?

View Results

Loading ... Loading ...
 
用dd备份mbr
 
备份 dd if=/dev/hdx of=/boot/MBR.bak bs=512 count=1 (512 or 446)
恢复 dd if=/boot/MBR.bak of=/dev/hdx bs=512 count=1 (512 or 446)
446是mbr,512是mbr+分区
 建立swapfile,大小1GB
dd if=/dev/zero of=/blog/swapfile bs=1M count=1024
格式化这个swapfile
mkswap /blog/swapfile    
启用这个s[......]

Read more

如何在windows server 2003系统里配置DCOM权限

如何在windows server 2003系统里配置DCOM权限
2009年09月02日 星期三 上午 09:47

部分网友在使用win2003+iis6.0建站时会遇到如下问题:
  在事件查看器中总是提示以下错误:
  应用程序-特定 权限设置未将 COM 服务器应用程序(CLSID 为
  {0C0A3666-30C9-11D0-8F20-00805F2CD064}
  )的 本地 激活 权限授予用户 NT AUTHORITY\NETWORK SERVICE SID (S-1-5-20)。可以使用组件服务管理工具修改此安全权限
  解释:
  某用户调用的程序要使用[......]

Read more

理解Linux系统的日志

理解Linux系统的日志

linux 定时任务 crontab 详细解释!(更新文件解析)

linux 定时任务 crontab 详细解释!cron 是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
引用:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
很多时候,你没有办法重新启动crond,这个时候可以先killall crond 然后再crond restart就哦ok了。我就是这么干的。
你也可以将这个服务在系统启[......]

Read more

eAccelerator(eacc)安装配置笔记

文章来自:http://bbs.linuxtone.org/viewthread.php?tid=154

一:eAccelerator(eacc)安装配置:eAccelerator 可以明显降低CPU和内存等资源占用
使用eAccelerator,可以优化你的PHP代码执行速度,降低服务器负载,可以提高PHP应用执行速度最高达10倍

1、安装
先去eAccelerator官方下载最新版的源码包:eaccelerator-0.9.5.1.tar
#tar -zxvf tar zxvf eaccelerator-0.9.5.1.tar
#cd eaccelerator-0.9.[......]

Read more

U盘安装Debian 5.0.1、Ubuntu 9.04

将Grubinst安装到U盘的MBR里,并将grub for dos压缩包里的grldr、grldr.mbr、menu.lst解压到U盘根目录, 打开Grubinst 1.2-2008-12-30.zip里的grubinst_gui.exe,将看到一下界面,点击“磁盘”在下来菜单中选择你的U盘(不懂LINUX分区的人,可以通过看容量大小来判断是否为U盘);选项里“不引导原来MBR”打勾,然后点“安装”。
09042417397061eb38a8af570e

4、修改U盘根目录下的menu.lst文件,将原有内容清空后输入以下内容:
如果是要安装ubuntu 9.04,menu.lst内容为:
timeout 10
default 0

title Ubuntu Linux Install
find --set-root  /vmlinuz
kernel /vmlinuz boot=casper iso-scan/filename=/ubuntu-9.04.iso ro quiet locale=zh_CN.UTF-8
initrd /initrd.gz

PS: vmlinuz , initrd.gz使用UltraISOPortable,打开ubuntu904光盘镜像,将casper目录下的这两个文件提取到U盘根目录下。并将ubuntu 904的光盘镜像拷贝到U盘根目录.

如果是要安装debian 5.01,menu.lst内容为:
timeout 10
default 0

title Debian Linux Install
find --set-root /vmlinuz
kernel /vmlinuz
initrd /initrd.gz

PS: vmlinuz ,initrd.gz 可以从以下地址下载获得
Vmlinuz http://debian.cn99.com/debian/di ... es/hd-media/vmlinuz
Initrd.gz http://debian.cn99.com/debian/di ... /hd-media/initrd.gz
将这两个文件下载后,与debian501.iso放在U盘根目录

[......]

Read more

DISCUZ浅析之COOKIE篇

DISCUZ浅析之COOKIE篇
2008-03-20 11:05 P.M.

[......]

相信论坛里的朋友很多都在用discuz 并会因为种种的需要结合discuz做各种系统
对此,discuz提供了通行证 可有时候使用通行证不一定适用 就比如说那一段很长很长的url吧 看着就让人心烦
有什么解决方法捏?为了社区朋友们以后方便开发 这几天呕心沥血 肝肠寸断 孜孜不倦 终于让偶给想出了一个比较天才的想法
:hoho 那就是生成一个discuz 验证cookie

废话说完了 开始正题:
开始之前 咱先了解一下discuz的登陆机制

先来一个简单的form

<?php
<form action='i_login.php'>
    
user:<input   name='username' type='text'>
    
password:<input name='password' type='password'>
     <
input type='submit' value='login'>
</
form>
?>
(上面的代码不用我解释吧 啥 看不懂? 得 我告诉你 这就是HTML 也就我这样 比较资深的专家才能写出来)

OK,一个很实用的登录框已经完成。。。

下面 说下php方面的 我们假设改文件和discuz同一目录里
看代码
i_login.php

<?php     $formUsername = trim($username); // 接受POST传来的$username
     
$formPassword = trim($password);
     $query = $db->query("SELECT uid,password,secques FROM cdb_members WHERE username='$formUsername'");
     
$member = $db->fetch_array($query

);
     // 验证用户密码是否匹配
     
if($member['password'] == md5($formPassword))
      {
        

// 已经验证用户密码都是匹配的 下面比较关键的就是生成cookie了 可要仔细看好了
         /*

          先说下dsetcookie函数   这是一个dz一个设置cookie的函数 可以在include/global.func.php里查看
          通常只需要三个参数即可 第一个为cookie键 第二个为键值 第三个为cookie有效时间 这里我就随便设置一个

          再说 authcode 此为加密函数   俺一直用这个函数 很强大 很难破解 有兴趣的朋友也可在include/global.func.php里
        
             找到改函数 研究一下
         */
        dsetcookie('sid','',-2423234234); // 注销掉sid
        
dsetcookie('auth', authcode("$formPasswordt$$member['secques']t$member['uid']", 'ENCODE'), '1234243'

);
        

// OK 关键步骤 我们都已经完成了 下面就由你写一个header跳转到论坛首页看是否登陆了 我本地测试可以 你由问题的话那可就是
         // RPWT了
        header("location:/index.php"

);
      }
      else
      {
        // 我们这里返回一个错误信息 告诉那个用户密码错误
     
}
    
    
?>

 

好 一个简单的登陆验证就完成了

如果你不想加载common.inc.php文件的话 你需要提取
authcode 和dsetcookie函数 都比较简单哈

OK 我们继续说下discuz验证部分 没兴趣的可以跳过去

验证部分 在common.inc.php 大约119行 开始

<?php
// 拆解COOKIE auth
list($discuz_pw, $discuz_secques, $discuz_uid) = isset($_DCOOKIE['auth']) ? explode("t", authcode($_DCOOKIE['auth'], 'DECODE')) : array('', '', 0);// 不存在$_DCOOKIE['auth']的话 就直接清楚COOKIE
if(isset($_DCOOKIE['auth']) && !$discuz_uid) {
    
clearcookies

) {
      //存在$discuz_uid的话 根据uid取出用户信息 否则根据sid
    
if($discuz_uid) {
        
// 取用户信息
    
} else {
        
// 用sessions表中取用户信息
    

}
    // 下面就是验证了 我不写了 (sid是用户的一个sessionid 用户登陆后会在sessions表内生成一条用户记录 用户推出后该记录删除
?>

 

代码就随手写上来   并没有经过测试 可能有的地方说的也不是很清楚 还请大伙原谅哈
请继续关注偶的第二篇菜文 discuz浅析之模板引擎篇

未完待续.....

关于作者:isno。接近90后人,05年进入php大家庭,现为上海某某公司一无名phper。

网站:www.isno.cn
MSN:isno@yahoo.cn
转载请注明作者及出处www.isno.cn

 
 
UTF8_EXCERPT_HAS_MORE

Read more