PHP个人网站架设连环讲(四)


Posted in PHP onOctober 09, 2006

三 首页新闻发布,让你更新更轻松(下)

-----上一讲里,我们已经实现了首页新闻发布的基本功能。在这一讲里,我们再给它添砖加瓦,使它的功能更为强大。(一个好用的软件,其实也就是基本功能加上一批附属功能,这些附属功能主要也是图个方便而已,呵呵)
-----首先,我们再明确一下我们想获得什么方便。我们不希望几十天以前的东西我们忘了删除,结果还作为新闻发布在首页(很丢脸的哦^&^)。如果我们在基本实现中嵌入一段代码,比如说用filectime($filename),那么在UNIX下,我们就可以得到从1970年1月1日起以秒计到最后一次文件被改动的时间(在WINDOWS下返回的是文件生成的日期时间),而从 1970年1月1日起以秒计到现在的秒数可以用$mynow=mktime()来获得,减法,判断,IF >我们期望的时间,嘿嘿,Sorry,unlink($newspath.$filename)……什么?!您问这段代码应该放在哪儿?您说呢,呵呵。
或许,你并不是常在一台机器上上网,当你获得了一条新的新闻后却不在你的爱机旁,怎么办?最理想的莫过于在主页上上传文件咯。你或许有一个页面(Admin?)需要用密码才能进入(假如你还爱惜自己的网站的话,这是有必要的,最好连文件名都不要让别人知道,呵呵)。下面是一段到处可见的文件上载的代码:
<?
if(isset($upfile))
{
?>  

已上载的文件信息如下:
    文件存放路径  : <?echo $upfile;?>
    原始文件名    : <?echo $upfile_name;?>
    文件大小(字节): <?echo $upfile_size;?>
    文件类型      : <?echo $upfile_type;?>

<?
}  
else
{
?>
<html>
<head><title>新闻上传</title></head><body>  
<form enctype="multipart/form-data" method="post" action="<?echo $PHP_SELF;?>">  
<input type="hidden" name="MAX_FILE_SIZE" value="50000">
请选择或输入上传文件名: <input name="upfile" type="file">  
<input type="submit" value="上传" name="submit">
</form>
</body></html>  
<?
}
?>  

-----这里我们又见到了PHP和HTML结合的一种形式,可以借鉴。文件上载虽然方便,但总给人一种不安全感。一旦泄密,你的服务器的系统安全就受到了威胁,因为上载的文件可能是一些破坏性的执行文件(也就是病毒或黑客程序啦)稳妥的做法是写一个在线编辑的文件,下面是一个示例:

〈?php
function mywritefile($filename,$contents){
if($fp=fopen($filename,"w")){
fwrite($fp,strpslashes($contents));
fclose($fp);
return 1;
}  
else {return 0;};
};
//判断表单返回的变量
if($submitButton=="完成"){
$rs=mywritefile("$page","$test");
echo "<a href ="$page">$page</a><br>";
}
elseif($action=="page") //变量action值为"page"的情况
{$contents="$page";
$fp=@fopen($content,"w+")or die('Could not open file!');
$contents=htmlspecialchars($contents);
fclose($fp);
echo "<form action="admin.php?page=$page" method="POST" wrap=soft>";
echo "$contents";
echo "</textarea>";
echo "<input type="submit" name="submitButton" value="完成">";
echo "</form>";
}
else
{echo "<form action="basename($PHP_SELF).?action=page" method="POST">";//注意引用程序内变量的方式。
echo "<input type=text size=20 name=page>";
echo "<input type="submit" name="send" value="选定">";
echo "</form>";
}
?>

-----至此,首页新闻发布的实现已经可以告一段落了。 我们可以发现,任何一个功能(比较)强大的陈程式都是由一些简单的功能组合而成的。第三部分功能的整个完善过程使用叠加增强的方法,和软件工程的自顶向下,逐层分析的开发方法是不一样的。这是一个适用于学习的方法,自己写写习作还是挺管用的,呵呵。

PHP 相关文章推荐
非常好的php目录导航文件代码
Oct 09 PHP
PHP+XML 制作简单的留言本 图文教程
Nov 02 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
Jun 17 PHP
解析在PHP中使用全局变量的几种方法
Jun 24 PHP
PHP实现变色验证码实例
Jan 06 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
Jul 25 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
Mar 19 PHP
php中使用gd库实现远程图片下载实例
May 12 PHP
PHP查找与搜索数组元素方法总结
Jun 12 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
Dec 21 PHP
基于PHP实现等比压缩图片大小
Mar 04 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
Apr 06 PHP
用PHP+java实现自动新闻滚动窗口
Oct 09 #PHP
如何将数据从文本导入到mysql
Oct 09 #PHP
PHP个人网站架设连环讲(三)
Oct 09 #PHP
杏林同学录(九)
Oct 09 #PHP
我的论坛源代码(九)
Oct 09 #PHP
PHP个人网站架设连环讲(一)
Oct 09 #PHP
PHP个人网站架设连环讲(二)
Oct 09 #PHP
You might like
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
php相当简单的分页类
2008/10/02 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
JavaScript中出现乱码的处理心得
2009/12/24 Javascript
ExtJs的Date格式字符代码
2010/12/30 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
2016/11/04 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
vue中rem的配置的方法示例
2018/08/30 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
2018/10/19 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
vue下axios拦截器token刷新机制的实例代码
2020/01/17 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
python中map()与zip()操作方法
2016/02/27 Python
详解Python sys.argv使用方法
2019/05/10 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
wxPython实现带颜色的进度条
2019/11/19 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
Python中实现一行拆多行和多行并一行的示例代码
2020/09/06 Python
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
英国在线滑雪板和冲浪商店:The Board Basement
2020/01/11 全球购物
十一个高级MySql面试题
2014/10/06 面试题
《猫》教学反思
2014/02/26 职场文书
《有趣的发现》教学反思
2014/04/15 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
2015年车间管理工作总结
2015/07/23 职场文书
《狼牙山五壮士》教学反思
2016/02/17 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js
Matplotlib可视化之添加让统计图变得简单易懂的注释
2021/06/11 Python