今天修改了永久链接的格式,开始向全站静态化进军

归类于: PHP, Web技术|WEB Tech, Wordpress — cosβ @ 2007-03-25 10:02:19 还没有评论

wordpress确实很好玩,呵呵,刚一开始就将传统的blog样式改变成cms样式了。后来又加入了pear的cache_lite将本站所有的页面都进行了缓存,最近觉得还不够,在花点时间将wp全部html静态化吧。其实早就有这个打算,一直不想去整。

我的静态化思想就是利用wp的url重写规则,撰写插件,在发表文章的时候生成html文件,html文件的地址和url重写的伪静态地址一样,这样的话就很安全了,如果文件不存在,该页可以打开,反之,如果文件真的存在,那么则读取相应的真实的html文件,所以第一步就是要修改url永久链接,使之方便今后的静态化实现。

修改永久链接最大的问题就是会导致搜索引擎找不到你原来的页面,这样相当不利,所以有两个方法解决,第一个是自己编写htaccess文件,利用301重定向来实现。还有一个好的办法就是利用wp的插件

现在已经完全修改好了永久链接,我现在的链接形式是:http://host/html/yyear/mmont/id-postname.html今后我就直接创建这个文件,这样就实现了全站的html静态化。

ps:IXwebhosting越来越慢,看来似乎很有必要全部静态化了

wordpress cosGoogleAds updated to v1.1

归类于: PHP, Web技术|WEB Tech — cosβ @ 2007-03-23 19:25:16 还没有评论

wordpress cosGoogleAds updated to v1.1,the installation guide is the same as the older version。

change log:

  1. the ads will only show in your single post page
  2. add ads custom border width setting
  3. add custom alignment setting
  4. add custom border color setting
  5. add custom background color setting

(read on …)

php初级教程:11.用户的注册(已更新)

归类于: PHP, Web技术|WEB Tech — cosβ @ 2007-03-21 10:27:48 才(5)条评论

现在开始介绍用户的注册,其实和添加新闻类似,无非就是要把用户的信息插入到数据库中去。
首先我们看看前面的准备工作(http://www.storyday.com/web-tech/484/php-course-7),在这个准备工作当中,我们建立了数据库“sample_user_base”,其中包括`user_id(自增id)` `user_name(用户名)“user_pass(用户密码)` `user_true_name(用户真实姓名)“user_level(用户级别,本例中不考虑这个)` `is_valid(用户是否有效)` 。所以我们在创建用户的时候按照上面的数据表插入数据即可。下面开始撰写表单。

在根目录下建立一个名为”user”的文件加,然后在该文件夹下建立一个php文件,名为”regist.php”,首先添加头部内容

  1. < ?php
  2. require_once('../inc/config.php');//包含配置文件
  3. $conn = mysql_pconnect(MYSQL_HOST,MYSQL_USER,MYSQL_PASS)
  4. or die('连接数据库失败');
  5. mysql_select_db(DB_NAME);
  6. ?>

随后增加表单内容如下:
  1. <form action="regist.php" method="post">  <label for="user_name">用户名</label>
  2.  
  3. <input id="user_name" name="user_name" type="text" />  <label for="user_pass">密码</label>
  4.  
  5. <input id="user_pass" name="user_pass" type="password" />  <label for="user_pass2">确认密码</label>
  6.  
  7. <input id="user_pass2" name="user_pass2" type="password" />  <label for="user_true_name">真实姓名</label>
  8.  
  9. <input id="user_true_name" name="user_true_name" type="text" /> <input value="注册" name="sbbt" id="sbbt" type="submit" /> </form>

表单已经建立成功,我们现在就开始撰写增加用户的php代码,现在就写到这里,明天再写,希望大家能根据前面新闻添加的例子来自己尝试编写添加用户的代码
继续上面的教程

在regist.php添加处理用户注册的代码,加载表单代码的上面,代码如下

  1. < ?php
  2. if( $_POST['sbbt'] != '' ){
  3.                 //如果用户提交了数据
  4.                 //我们就开始处理用户注册
  5.                 //首先检查数据库中有没有重复数据
  6.                 $sql = " SELECT  user_id  From ".USER_BASE." WHERE      user_name='".$_POST['user_name']."' limit 0,1";
  7.                 //echo $sql ;
  8.                 $res = mysql_query($sql ,$conn);
  9.                 $obj = mysql_fetch_object( $res );
  10.                 if( $obj->;user_id ){
  11.                 //如果数据库中已经有人使用此用户名
  12.                 echo "<a style="color: red">该用户名已经存在</a>";
  13. }
  14. else{
  15.                 if( $_POST['user_pass'] != $_POST['user_pass2'])
  16.                 echo "<a style="color: red">两次输入密码不相同</a>";
  17.                 else{
  18.                         //否则插入数据库
  19.                         $sql = " INSERT INTO ".USER_BASE." VALUES('',
  20.                         '".$_POST['user_name']."',
  21.                         '".$_POST['user_pass']."',
  22.                         '".$_POST['user_tru_name']."',
  23.                         '1','1');";
  24.                         $res = mysql_query($sql ,$conn);
  25.                         //注册成功
  26.                         echo "<a style="color: green">注册成功</a>";
  27.                 }
  28.         }
  29. }
  30. ?>

由于我们的处理是在表单之前进行的,所以如果用户注册的时候发现名字重复了,所有的资料都要重新输入,这是相当麻烦的,因此我们把表单再修改一下,修改成下面的内容
  1. <form action="regist.php" method="post"
  2. <label for="user_name">用户名</label>
  3. <input id="user_name" value="<?php echo $_POST['user_name'];?/>" name="user_name" type="text" /> 
  4. <label for="user_pass">密码</label>
  5. <input id="user_pass" name="user_pass" type="password" /> 
  6. <label for="user_pass2">确认密码</label>
  7. <input id="user_pass2" name="user_pass2" type="password" /> 
  8.  
  9. <label for="user_true_name">真实姓名</label>
  10. <input id="user_true_name" value="<?php echo $_POST['user_true_name'];?/>"name="user_true_name" type="text" />
  11.  
  12. <input value="注册" name="sbbt" id="sbbt" type="submit" />
  13. </form>

好了,到此为止,一个简单的用户注册系统已经成功地完成!

php初级教程:10.新闻的列表和删除

归类于: PHP, Web技术|WEB Tech — cosβ @ 2007-03-15 19:50:52 才(3)条评论


现在我们开始介绍新闻的列表和删除了。

新建立一个文件listnews.php,内容如下:

  1. < ?php
  2. require_once('../inc/config.php');
  3. //包含配置文件
  4. ?>
  5. <html>
  6. <head></head>
  7. <title>新闻管理</title>
  8. <body>
  9. <div class="newstitle"></div>
  10. <div class="newslist">
  11. < ?php
  12. //这里显示新闻列表
  13. $page = $_GET['page'];
  14.  
  15. if( $page < 1) $page =1;
  16.  
  17. //获取当前页面数
  18. $per = 10;
  19. //每页显示数量
  20. $begin = ($page - 1) * $per;
  21.  
  22. $pre = $page -1;
  23. //上一页
  24. $next = $page + 1;
  25. //下一页
  26. //反正所有的操作都会用到mysql连接,所以我们先建立连接
  27. $conn = mysql_pconnect(MYSQL_HOST,MYSQL_USER,MYSQL_PASS)
  28. or die('连接数据库失败');
  29. mysql_select_db(DB_NAME);
  30.  
  31. $sql = "SELECT * FROM ".NEWS_BASE." WHERE 1 ORDER BY news_id limit ".$begin.",".$per;
  32.  
  33. $res = mysql_query($sql) or die(mysql_error());
  34. //查询数据库
  35.  
  36. echo "<table border='1'><tr>";
  37. echo "<td>新闻时间</td><td>新闻标题</td>";
  38. echo "<td>操作</td></tr><tr>\n";
  39.  
  40. while( $obj = mysql_fetch_object($res)){
  41. //循环取出数据,关于mysql的函数请参考php手册
  42. //然后循环表格
  43. echo "</tr><tr>";
  44. echo "<td>".$obj->news_date."</td>";
  45. echo "<td>".$obj->news_title."</td>";
  46. echo "<td><input type='button' onClick='mod(".$obj-/>news_id.")' value='修改' />";
  47. echo "<input type='button' value='删除' onClick='del(".$obj-/>news_id.")' /></td>";
  48. echo "</tr>";
  49. //上面的按钮会触发javascript事件
  50. //所以下面我将顺便写一下js
  51. //让大家熟悉一下
  52. }
  53. echo "";
  54. ?>
  55. <a href="?page=<?php echo $pre;?>">上页</a>
  56. <a href="?page=<?php echo $next;?>">下页</a>
  57. </div>
  58. <script language="javascript">
  59. function mod(id){
  60. //修改的函数
  61. //我们将这个带到editnews.php?id=id上去
  62. window.location = "editnews.php?id="+id+"&page=< ?php echo $page;?>";
  63. }
  64. function del(id){
  65. //修改的函数
  66. //我们将这个带到do.php?id=id&del=yes上去
  67. window.location = "do.php?id="+id + "&del=yes&page=< ?php echo $page;?>";
  68. }
  69. </script>
  70. </body>
  71. </html>
More…

现在开始便写如何删除的页面,打开do.php,添加下面的代码

  1. if( $_GET['del'] == 'yes'){
  2. $sql = "DELETE FROM ".NEWS_BASE." WHERE news_id='".$_GET['id']."'";
  3. mysql_query($sql,$conn)
  4. or die("数据操作失败,错误原因:".mysql_error() );
  5. header("location:listnews.php?page=".$_GET['page']);
  6. //删除之后返回到原来的那个页面
  7. }

现在开始编写editnews.php了,先从数据库中取出数据,然后用sql update内容即可,代码如下:

  1. < ?php
  2. require_once('../inc/config.php');
  3. $conn = mysql_pconnect(MYSQL_HOST,MYSQL_USER,MYSQL_PASS)
  4. or die('连接数据库失败');
  5. mysql_select_db(DB_NAME);
  6. $sql = "SELECT * FROM ".NEWS_BASE." WHERE news_id='".$_GET['id']."'";
  7. $res = mysql_query($sql,$conn)
  8. or die("数据操作失败,错误原因:".mysql_error() );
  9. $obj = mysql_fetch_object($res);
  10. ?>
  11. <form method="post" action="do.php">
  12. <input type="hidden" id="action" name="action" value="modnews" />
  13. <br />
  14. <input type="hidden" name="news_id" value="<?php echo $obj-/>news_id?>" />
  15. <input type="hidden" name="page" value="<?php echo $_GET['page']?/>" />
  16. <!-- hidden隐藏域的作用就不用介绍了吧,上次介绍过哈 -->
  17. <label for="news_title">新闻标题</label>
  18. <input name="news_title" id="news_title"
  19. value="<?php echo $obj-/>news_title;?>" size="60" type="text" />
  20. <br />
  21. <label for="news_text">新闻内容</label>
  22. <textarea type="text" name="news_text" id="news_text" rows="10" cols="50">
  23. < ?php echo $obj->news_text; ?>
  24. </textarea>
  25. <br />
  26. <label for="author">新闻作者</label>
  27. <input name="author" id="author" size="60" type="text"
  28. value="<?php echo $obj-/>author;?>" /><br />
  29. <label for="news_date">发布时间</label>
  30. <input name="news_date" id="news_date" size="60" type="text"
  31. value="<?php echo $obj-/>news_date;?>" /><br />
  32. <input id="sbbt" value="提交" type="submit" />
  33. <input id="resetbt" value="重置" type="reset" />
  34. </form>

然后我们要在对应的do.php中添加相应的处理操作,代码如下

  1. if( "modnews" == $action ){
  2. //如果是修改新闻,则在此处进行处理
  3. $sql = "UPDATE ".NEWS_BASE." set
  4. news_title='".$_POST['news_title']."',
  5. news_text='".$_POST['news_text']."',
  6. news_date='".$_POST['news_date']."',
  7. author='".$_POST['author']."' WHERE news_id=".$_POST['news_id']."";
  8. mysql_query($sql,$conn) or
  9. die("插入数据失败,错误原因:".mysql_error() );
  10. header("location:listnews.php?page=".$_POST['page']);
  11. }

当然,我们在实际的处理中,必须对用户的输入进行过滤,防止恶意的输入,比如用这样的函数过滤掉html标签$a = htmlspecialchars($_POST['a']);

好了,今天就介绍到这里,一个基本的新闻管理系统基本完成了。

php初级教程:9.添加新闻内容程序的编写

归类于: PHP, Web技术|WEB Tech — cosβ @ 2007-03-10 11:19:58 才(2)条评论

昨天有个网友说我的教程很简单,学习起来很容易,看来我想要的目的达到了,再次给了我续写教程的动力,于是就提前续写吧!

现在开始编写增加新闻的表单了,大家可以注意到前面我们建立数据表的时候,新闻数据表有这样几栏:news_id news_title news_text news_date author ,这里news_id采用自增,在插入数据的时候,数据库会自动为其分配数值,所以不用管它,其他的分别是新闻标题,新闻内容,新闻添加日期和新闻作者。下面开始在admin/addnews.php中撰写表单。 (read on …)

php初级教程:8.基本php配置文件的编写

归类于: PHP, Web技术|WEB Tech — cosβ @ 2007-02-11 15:51:59 才(2)条评论

下面开始讲解配置文件的设置。
配置文件是每个页面都得引用的一个页面,写配置文件的好处就是如果你今后需要修改的话,直接修改一个文件就ok了。由于本例子比较简单,所以我们暂时需要一个配置文件就可以了,如果后面还需要,我们继续添加,由于本次举例是实际操作,我也不会做任何准备,所以这样最有真实感,我的例子中也许会出现低级的代码错误,你可以先检查,或者后面我们运行出错后一起检查修正。
在inc目录下建立一个config.php文件,内容如下,注释中有解释 (read on …)

php初级教程:7.一个新闻管理系统(准备工作)

归类于: PHP, Web技术|WEB Tech — cosβ @ 2007-02-10 16:56:25 才(2)条评论

好了,现在我们开始以一个新闻管理系统的范例来讲解php,其中包括目录结构的设计(我设计的结构不一定科学,但是你可以参考)、简单的mysql数据库管理、用户权限的处理、session的使用。在讲解的过程中,我也开始写这样一个简单的系统,虽然对于我来说这是重复无用的劳动,但是我希望对初学者能有意义。另外,我在编写过程中,也会故意或者不故意的犯点错误,顺便可以给大家介绍如何简单的排错,以及常见的php的错误提示和如何找到对应的错误。

还值得一提的是:ajax是如此的好用和方便,以至于我在我自己写的后台程序中一直在采用,但是本次案例由于是入门课程,不打算采用一丁点ajax。 (read on …)

今天将首页彻底html静态化

归类于: PHP, Web技术|WEB Tech — cosβ @ 2007-02-10 15:40:25 才(4)条评论

没错,你现在看到的这个网站的时候,首页已经被彻底html静态化了,不信,访问http://www.storyday.com看看。当然你如果还要访问http://www.storyday.com/index.php的话,那依然是没有被静态化原始界面。你可以从你浏览的网页中查看本站所有网页的源代码,你将会发现有这么一行<!– this page was created at 2007-02-10 14:45:56 –>,这就是缓存生成的时间。

最近正 打算写一个把wordpress全站静态化的插件,实在不能静态的地方用ajax完成,如评论,最新文章,日历等等,所以实现wp的静态化不仅仅是实现的问题,主要还是在静态和动态之间找一个平衡点,估计其他网站在静态化的过程中也有类似的问题存在吧?

ps:其实静态化也仅仅是好玩,我的站还没有流量大道要静态化的地步,不过把首页html静态化至少减少了浏览者浏览首页的时间。

Page 5 of 8« First...«34567»...Last »

生活点滴Enjoy Life is proudly powered by WordPress | admin| About Us | cosbeta| Bluehost| site map 1.164s & 23