PHP新手上路(六)

建设一个简单交互的网站(二)

5.5 计数器

让我们在首页上加上一个计数器。这个例子已经被讲过多次了,但是还是有利于演示怎样读写文件以及创建自己的函数。counter.inc包含以下代码:

/*

|| 一个简单的计数器

*/

function get_hitcount($counter_file)

{

/* 将计数器归零

这样如果计数器还未被使用,初始值将是1

你当然也可以把初始值设成20000来骗人咯

*/

$count=0;

// 如果存放计数器文件已经存在,读取其中的内容

if ( file_exists($counter_file) )

{

$fp=fopen($counter_file,"r");

// 我们只取了前20位,希望你的站点不要太受欢迎啊

$count=0+fgets($fp,20);

// 由于函数fgets()返回字符串,我们可以通过加0的方法将其自动转换为整数

fclose($fp);

// 对文件操作完毕

}

// 增加一次计数值

$count++;

// 将新的计数值写入文件

$fp=fopen($counter_file,"w");

fputs($fp,$count);

fclose($fp);

# 返回计数值

return ($count);

}

?>

然后我们更改front.php3文件以显示这个计数器:

include("include/counter.inc");

// 我把计数值放在文件counter.txt中,读出并输出

printf ("

%06d
n",

get_hitcount("counter.txt"));

include("include/footer.inc");

?>

看看我们的新front.php3

5.6 反馈表单

让我们再添加一个反馈表单以便你的浏览者填写并e-mail给你。举例来说我们用一种很简单的方法实现它,我们只需要两个页面:一个为浏览者提供输入表单;一个获得表单数据并处理、mail给你。

PHP中获取表单数据是很简单的。当一个表单被发送后,表单中所包含的各个元素被赋上了相应的值,而这样就可以像引用一般变量一样使用了。

在process_form.php3中,变量$mytext就被赋予了输入的值--非常简单!同样的,你可以从列表框、多选框、单选框、按钮等表单元素中取得变量值。你唯一要做的就是为表单中的每一个元素取名以便将来可以引用。

根据这个方法,我们可以生成一个简单的包含三个元素的表单:姓名、e-mail地址和留言。当浏览者发送表单后,处理该表单的PHP页面(sendfdbk.php3)读取数据,检查姓名是否为空,最后将数据mail给你。

表单:form.php3

include("include/common.inc");

$title = "Feedback";

include("include/header.inc");

?>

Your feedback on my home page.

include("include/footer.inc");

?>

处理表单:sendfdbk.php3

include("include/common.inc");

$title = "Feedback";

include("include/header.inc");

if ( $name == "" )

{

// 现在我很讨厌匿名的留言!

echo "Duh ? How come you are anonymous?";

}

elseif ($name == "Your name")

{

// 这个浏览者真是不想透露姓名啊!

echo "Hello ? Your name is supposed to be replaced with

your actual name!";

}

else

{

// 输出一段礼貌的感谢语

echo "

Hello, $name.

Thank you for your feedback. It is greatly appreciated.

Thanking you

$MyName

$MyEmailLink

";

// 最后mail出去

mail($MyEmail, "Feedback.","

Name : $name

E-mail : $email

Comment : $comment

");

}

include("include/footer.inc");

?>

注意:如果在你的测试过程中,该程序末能正常工作,请查看你的PHP配置文件(PHP3为php3.ini,PHP4为php.in)有没有设置好。因为本程序需要您的PHP配置文件作如下的设置:

首先,用NotePad打开你的php3.ini或是php.ini文件,查看一下[mail function]有没有设置好,默认的情况如下所示:

SMTP = localhost

sendmail_from = me@localhost.com

给SMTP设置SMTP服务器,最好是你当地的SMTP服务器,我这里以21cn的SMTP服务器作为例子,然后,在sendmail_from处填上你的E-MAIL地址,例如可以改成这样:

SMTP = smtp.21cn.com

sendmail_from = pert@21cn.com

修改后不要忘了重启Apache,IIS或PWS服务哦.

5.7 简单的站内搜索引擎

PHP可以调用外部程序。在Unix环境下我们可以利用程序grep实现一个简单的搜索引擎。我们可以做的稍微复杂一些:使用一个页面既输出一个表单供用户输入搜索字串又输出查询结果。

include("include/common.inc");

$title = "Search";

include("include/header.inc");

?>

" METHOD="POST">

"

SIZE="20" MAXLENGTH="30">

if ( ! empty($searchstr) )

{

// empty()用来检查查询字串是否为空

// 如果不为空,调用grep查询

echo "


n";

// 调用grep对所有文件进行大小写非敏感模式的查询

$cmdstr = "grep -i $searchstr *";

$fp = popen( $cmdstr, "r" ); // 执行命令并输出管道

$myresult = array(); // 存储查询结果

while( $buffer = fgetss ($fp, 4096))

{

// grep返回这样格式: 文件名:匹配字串出现行数

// 因此我们利用函数split()分离处理数据

list($fname, $fline) = split(":",$buffer, 2);

// 我们只输出第一次匹配的结果

if ( !defined($myresult[$fname]))

$myresult[$fname] = $fline;

}

// 现在我们将结果存储在数组中,下面就可以处理并输出了

if ( count($myresult) )

{

echo "

  1. n";

while(list($fname,$fline) = each($myresult))

echo "

$fname : $fline

n";

echo "

n";

}

else

{

// 如果没有查询结果

echo "Sorry. Search on $searchstr

returned no results.
n";

}

pclose($fp);

}

?>

include("include/footer.inc");

?>

注释:

PHP_SELF是PHP内建的变量。包含当前文件名。

fgets()按行读取文件,最多4096(指定)字符长度。

fgetss()与fgets()相似,只是解析输出的HTML标记。

split()有一个参数是2,因为我们只需要把输出分成两部分。另外需要省略":"。

each()是一个数组操作函数,用来更方便的遍历整个数组。

popen()、pclose()与fopen()、fclose()的功能很相似,只是增加了管道处理。

请注意以上的代码并不是实现一个搜索引擎的好办法。这只是有助于我们更好学习PHP而举出的一个例子而已。理想的情况是你应该建立一个包含关键字的数据库然后进行搜索。相关阅读:

新手学堂:在Linux系统下建立Samba用户

Hibernate的JNDI绑定分析

忘记FREEBSD密码解决办法

巧用linux cd命令和Pushd切换目录

创建事务性脚本

索引的优点和缺点

详细讲解CSS Overflow属性

session 的生命周期是多长

管理会话

Windows XP系统变量方式

ASP函数库3

javascript 获取GET方法的参数

CSS 制作有弹性的日历表

用PHP与XML 联手进行网站编程

用php建设一个简单的网站,PHP_PHP新手上路(六),建设一个简单交互的网站(二) 5 - phpStudy...相关推荐

  1. 有域名和服务器怎么建设网站新手,怎么建立一个网址?作为新手小白怎样建立一个网站呢?...

    怎么建立一个网址?作为新手小白怎样建立一个网站呢?作为一个新手,能够建立一个网站是一件很开心的事情.那么,怎么建网站呢?如果你还没有建立网站,请按照我的步骤. 第一步:申请首页空间. 有很多网站可以申 ...

  2. 新手如何做网站?成都网站建设达人浅析——网站制作新手教程

    新手如何做网站?成都网站建设达人浅析--网站制作新手教程 成都网站建设达人浅析: 建设网站是一件很繁琐的事情,首先需要准备知识,包括学会使用各种工具软件.认真思考自己所做的网站的内容及用途来确定制作网 ...

  3. linux搭建cdn教程_网站搭建新手教程:一步一步教你拥有一个属于自己WordPress网站...

    应网友要求,今天知识吧为大家分享一篇新手建站教程,本来是打算做一个视频教程的,毕竟大家看的会直观一些,但是由于我的个人电脑在并不在身边,在公司电脑录新手建站视频又不太合适,所以就为大家写一篇图文教程吧 ...

  4. 创建一个带参数的formgoup_基于原生Fabric-SDK-Go 实现一个简单的学历征信系统,状态数据库使用 CouchDB 来实现...

    [TOC] 1. 需求分析与架构设计 我们要基于 原生Fabric-SDK-Go 实现一个简单的学历征信系统(web项目),状态数据库使用 CouchDB 来实现. 1.1 需求分析 现在是一个信息化 ...

  5. 网站建设时如何让网站具有营销能力?-竹晨网络_石家庄网站建设_小企业网站建设

    以往企业的网站建设结构简单,功能单一,客户体验差,已经很难满足现在网民对浏览网站的需求,营销型网站建设已经成为了大趋势. 公司只有在网站建设初期按照营销的角度来策划网站,才能真正打造一个具有营销力.而 ...

  6. 新手站长如何做一个手机网站?

    随着电脑网站站长群体的没落,移动互联网的兴盛,很多建站爱好者开始将目光投放在了手机网站建设上面,并且第一批吃螃蟹的移动站长已经赚到了第一桶金,所以很多个人站长就想做一个手机网站.制作手机站对于很多人来 ...

  7. 英特尔网站推广瞄准智慧社区建设,有望加速社区智慧化转型发展

    自从新冠肺炎疫情爆发后,智慧社区的建设空间让英特尔物联网事业部副总裁看到了在社区中进行精细化.智能化管理的发展空间,他表示,英特尔支持智慧社区的建设与发展,要求英特尔"大有可为,也必须有所作 ...

  8. 网站系统安全防护体系建设方案

    网站系统安全防护体系建设方案 目录 一.需求说明... 2 二.网页防篡改解决方案... 4 2.1 技术原理... 4 2.2 部署结构... 5 2.3 系统组成... 6 2.4 集群与允余部署 ...

  9. php网页加查询框,Twentytwelve头部添加搜索框及网站名称与描述同行显示的简单方法 | 科研动力...

    Twenty Twelve 主题的头部默认没有搜索框,不像它的前辈和后生.这点我就不明白了,Twentyeleven和最新的Twentythirteen都有搜索框,为何Twentytwelve就没有呢 ...

最新文章

  1. 塔勒布: 2019-nCoV的系统风险:一份笔记
  2. Java并发编程的基础-为什么要复位
  3. java 创建以太坊代币_以太坊 (五)编写智能合约-建立简易加密代币
  4. 【Flink】Flink 1.11深度解析 【视频笔记】
  5. C语言:存储类型,内存管理
  6. java执行python脚本并传递参数_从Java执行Python脚本存在参数传递问题
  7. Shiro安全框架的原理及实现步骤
  8. MySQL数据库下.frm .MYD .MYI损坏恢复操作——筑梦之路
  9. 初中数学计算机图片,初中数学课件背景图片大全.doc
  10. 陈怡暖:FED决议措辞偏鹰,黄金先扬后抑险守千二关
  11. 反病毒垃圾邮件,U-Mail邮件系统从容应对
  12. python listdir 忽略 隐藏文件_忽略特殊文件
  13. Laravel 资源管理器 destory方法
  14. Sobel算子->方向滤波
  15. 中国铜行业市场消费量调研及投资潜力预测分析报告2022-2027年
  16. 刨根问底Objective-C Runtime
  17. APP自动化简单理解(在python中实现简单的app自动化框架)
  18. 特斯拉自动驾驶使用的技术_为什么特斯拉不会使用激光雷达
  19. 【GFFrameWork】管理器和框架启动
  20. Scrapy问题总结

热门文章

  1. correl函数相关系数大小意义_Excel使用Correl函数返回相关系数并确定属性关系的步骤方法...
  2. JavaScript的callee 属性
  3. Font-AweSome在Vue中的使用
  4. Python KPM算法
  5. mac os升级到Catalina版本原先根目录下自己创建的目录找不到解决方案
  6. aj1黑白反转价格_除了倒勾配色AJ1,更有反转配色WHITE MOCHA同步发售
  7. 目标检测网络之 YOLOv3
  8. 一个AI小白如何理解近似匹配检索
  9. 《有一种失败叫瞎忙》读书笔记
  10. mysql: [Warning] Using a password on the command line interface can be insecure.解决方法