Friday, September 2, 2011

使用 ob_start()来缓存输出


假设要设置cookie或者有html提前输出,但是会导致后面的页面跳转(header()函数
)出现错误。在跳转直接不允许有输出。所以可以在输出的html内容的最前面使用ob_start()来缓存输出,然后在跳转等的函数结束后,使用ob_end_flush()把缓存的内容输出到浏览器上
例如
Ob_start();
session_start();
    $session_id = session_id();
    $_SESSION[$session_id] = $username;
setcookie('website',$session_id,time()+60);
echo "登录成功!!<a href="."\"auth.php\">登录</a>";
    echo "<script>alert('登录成功');</script>";
    echo "<script>window.location.href='"."auth.php';</script>";
    echo "<script>setTimeout('alert("."111)',2000);</script>";
header("refresh:3,url=auth.php");
    ob_end_flush();

Drupal7.7的测试,css框架调整



CSS框架中padding的用法
   今天在linux环境下重新搭建了drupal-7.7的版本,确实觉得相当的不错。首先用linux的服务器性能比windows明显有很大优势,然后就是本身drupal的特色决定,自从7的版本以后变得很稳定,唯独一个小问题,就是文件上传的时候,如果是中文名的文件是总会出错,默认会把文件名改掉,但是这样就不符合drupal的上传文件类型了,所以很无语。。。。
      看了网上一些办法是把file.inc里面的一个函数给改掉,也没有弄太懂,不过总觉得解决这个问题要改动源代码的话总是一个危险的操作。后来也有人说一个模块translations的貌似,可以将所以的中文文件名自动转换为拼音,猛然想来这个注意不错,后来一想,万一文件名很长,而且又抽象,例如wojiushiyigezhongwenmingziwenjian.txt。。。天啊,那可是看着就晕了。。。。不过现在还没有什么好的解决办法,先晾着吧
        说说主要的心得,今天下了好几个不同的主题,安装上界面效果感觉就是不一样,很漂亮。现在我测试用的是corporateclean的主题,有slide show的首页效果,我一直很喜欢这种感觉,滑动感很强,后来发现没有快速的修改其中的图片,这个让我很郁闷阿,难不成增删操作要真的去修改源代码来添加图片吗?经过测试。。。不幸言中了。
在该主题目录下面有page.tpl.php,这个是一个模板文件,slide图片的css设计就在这个其中定义。然后找到
  <!--slideshow-->
    <div id="slideshow">
  这个就是开始定义
   
以下的都是每一幅图片对应的参数
        <!--slider-item-->
        <div class="slider-item">
            <div class="content">
               
                <!--slider-item content-->
                <div style="float:left; padding:0 30px 0 0;">   这个是图片的样式定义
                <img height="250px" class="masked" src="<?php print base_path() . drupal_get_path('theme', 'corporateclean') ;?>/mockup/slide-1.jpg"/>
                </div>
                <h2>Sample product name</h2>
                <strong>General</strong><br/>
                <em>Client name</em><br/>
                <br/>
                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
                <div style="display:block; padding:30px 0 10px 0;"><a class="more" href="#">Tell me more</a></div>
                <!--EOF:slider-item content-->
               
            </div>
        </div>
        <!--EOF:slider-item-->
       
       
        从上述的代码中,就可以设置图片的引用,并且在该文件中,复制粘贴如上的代码,就可以增加主页上的图片slide。
        记得在最后一点
        <!--slider-controls-wrapper-->
    <div id="slider-controls-wrapper">
        <div id="slider-controls">
            <ul id="slider-navigation">
                <li><a href="#"></a></li>
                <li><a href="#"></a></li>
                <li><a href="#"></a></li>
                <li><a href="#"></a></li>
                <li><a href="#"></a></li>
                <li><a href="#"></a></li>
            </ul>
        </div>
    </div>
   
    这样的代码,有几个图片,就要有多少"<li><a href="#"></a></li>"
   
    然后是padding的用法,<div style="float:left; padding:0 30px 0 0;">,其中float有几种样式,left\right\bottom\top,每个方式代表在在框架中的哪个位置,padding:参数按照上、右、下、左的顺序设置补的距离
   
    如简写方式有:
padding:10px; 意思就是上下左右补丁距离就是10px(10像素)
padding:5px 10px; 意思上下补丁距离为5px,左右的补丁距离为10px,
padding:5px 6px 7px; 意思上补丁距离5px,下补丁距离为7PX,左右补丁距离为6px,
padding:5px 6px 7px 8px; 意思上补丁为5px,右补丁距离为6px ,下补丁距离为7px,左补丁距离8px

如果想要图片向右一些,可以设置第四个参数变大,就可以将内容向右移动

win7备份wubi安装的Ubuntu


win7备份ubuntu
复制ubuntu\winboot\下的wubildr   wubildr.cfg    wubildr.mbr三个文件到win7系统盘根目录

使用命令行,输入
bcdedit /create /d "Ubuntu" /application bootsector
此时系统会自动生成一个{id}   注意:id为{}类的一串数字和字母,以下id应填写为该字符串

bcdedit /set {id} device partition=f:      (f为wubi安转的ubuntu的盘符)

bcdedit /set {id} path \ubuntu\winboot\wubildr.mbr  这个是引导文件的路径

bcdedit /displayorder {id} /addlast



网上的一个版本
一、重装xp后恢复Ubuntu启动项(用wubi安装的Ubuntu)
    我把安装ubuntu->winboot文件夹下wubidr和wubidr.mbr两个文件拷到C盘根目录下,然后用记事本打开c盘下的boot.ini,在最后一行加入c:\wubildr.mbr="Ubuntu"就可以了,然后保存重启。我想要的ubuntu启动项出来了!!!
    二、Vista或windows7下恢复Ubuntu启动项(用wubi安装的Ubuntu)
    最近重装了Windows7(vista同理),不想却让之前装的Ubuntu没有启动项了,Windows7(vista同理)没有boot.ini文件编辑的方法,由于当时Ubuntu是用wubi在Windows下安装的!
    恢复方法:
    1.把安装ubuntu->winboot文件夹下wubidr和wubidr.mbr两个文件拷到C盘根目录下
    2.在“运行”中输入cmd到命令提示
    在命令界面bcdedit /create /d "linux" /application bootsector
    得到像c:\windows\system32>bcdedit /create /d "Ubuntu" /application bootsector
    //多启动菜单上显示的名字项 {dbff544b-a7c4-11dd-a51d-00155803ebb4} 成功创建。
    3.把{}中的id复制下来,如:dbff544b-a7c4-11dd-a51d-00155803ebb4
    4.再输入下列命令  (注意:自己替换下面{}中的id为第2步得到的id)
    bcdedit /set {id} device partition=c:
    bcdedit /set {id} path \wubildr.mbr
    bcdedit /set {id} description "Ubuntu"
    bcdedit /displayorder {id} /addlast

数据库小学期中Sybase与PHP的连接配置教程


(本人是使用的PHP脚本语言,配合apache服务器操作,如果大家用jsp或者asp,.net等,或者不用apache,就可以基本忽略如下详细内容。。。。。。)
       昨天花了大半天时间去实验如何让PHP调用sybase的接口操作数据库,Sybase真是够恶心的,我和“大师”先后试了用扩展模块的方式(无法被appche服务器加载)、ODBC方式(连上了,但是操作不了,增删改查都有问题),ADO方式(也是不好用,对象集有点复杂)。一般连接数据库只有这三个方式,最简单的当属用扩展模块的方式,这样php中自定义的的有sybase的函数,只需要sybase的模块被php和apache挂载即可。那么如何操作见下文:
   1、安装Sybase(废话),当然最好的是选择全部安装,使用开发者版本,这样就可以一直免费了。因为老师上学期给过的是15.0的版本,我个人觉得那个看起来有点别扭,自己又去官网下了15.5最新版,现在已经放到大班网站上了,地址:http://buptwg.com/index.php?q=node/89,这个版本最大的好处是:全部中文。
  2、连接web的时候是需要sybase的一个open client的组件,所以第一条要全部安装。
  3、安装后,找到sybase的安装目录,例如CK_Sybase/,然后,进入CK_Sybase/OCS-15.0/dll/,里面有很多dll文件,找到  libsybct.dll 和libsybcs.dll , 将这两个文件复制,粘贴到本目录下,修改名字, libsybct.dll------>libct.dll
libsybcs.dll----->libcs.dll。
  4、然后找到php的配置文件,php.ini,如果大家用的wamp一键安装服务器的话,在开启之后,电脑右下角的图标左键单击,然后里面寻找php,就有php.ini配置文件了;当然如果是自己开发过web,分开安装的apache和php,那么一般都在c:\windows目录下。  
   5、找到之后,搜索  ;extension=php_sybase_ct.dll ,此刻注意前面有一个分好,代表是该扩展模块未加载。将分号去掉。保存退出。
6、重启apache服务器,应该都会吧
7、为了检测sybase的模块是否被php成功加载了,在web根目录下面写一个php文件,命名为phpinfo.php,用编辑器打开后,写入
<?php
phpinfo();
?>
保存退出。
8、访问该文件,查找是否有sybase_ct的模块。如果有,就恭喜你加载成功!
当然后面就是啰嗦两句废话啦,翻找php手册,自己查询相关的调用数据库的函数吧~
比如连接是 sybase_connect('服务名','用户名','密码',‘字符集’),这个是大师发现的,牛叉!因为sybase的字符集非常诡异,CP936的,所以不指定字符集连接的话,查到的结果有中文的话显示到浏览器中都是乱码了。
选择数据库是 sybase_select_db(连接名,‘数据库名’)
执行是 sybase_query()
需要注意的是,sybase的这个模块做的不是很好,所以调用这些函数时会出现警告,但是是可以使用的,所以在函数前面加上@,屏蔽警告,比如@sybase_query()。

剩下的就靠大家各自发挥了啊~