用PHP制作的意见反馈表

 更新时间:2016年11月25日 17:35  点击:1950

这是一个用PHP制作的意见反馈表,稍加修改也可用于网上发信程序,主要是让访问者填写表单,用PHP处理后发送到治理员信箱,并向访问者信箱发送一个证实信件。

about.php
-------------------------
<html>
<head>
<title>意见反馈表</title>
</head>
<body>
<?php

$adminmail="admin@etoow.com"; #治理员信箱
$pagename="Acme"; #主页名称
$pageline="http://etoow.com"; #主页地址

#治理员信件内容
if (($formno1!="") and ($formno4!="") and ($formno11!="")) {

$Email=$formno4; #来访者E-mail
$sender=$formno1; #送信人
$nowtime=date("Y年m月d日H时i分");


$tmpfilename = tempnam("./tmp", "dm");
$fp = fopen($tmpfilename, "w");

fwrite($fp, "From: ".$Email."n");
fwrite($fp, "Subject: ".$sender." <".$pagename."-意见反馈表>nn");
fwrite($fp, "送信人:".$sender."n发信IP:".$REMOTE_ADDR."n发信时间:".$nowtime."nn");
fwrite($fp, "反馈表具体内容:n------------------------------------------------------n");
fwrite($fp, "姓名:".$formno1."n性别:".$formno2."n年龄:".$formno3."nE-mail:".$formno4."n工作单位:".$formno5."n联系地址:".$formno6."n邮编:".$formno7."n电话:".$formno8."n传真:".$formno9."n网址:".$formno10."n意见建议:".$formno11."n------------------------------------------------------n");
fclose($fp);

$execstr="cat ".$tmpfilename." | /usr/sbin/sendmail ".$adminmail;
exec($execstr);

$execstr="echo $sender $nowtime $REMOTE_ADDR $REMOTE_HOST >> mail.log";
exec($execstr);

#来客信件内容;
$tmpfilename1 = tempnam("./tmp", "dm");
$fp = fopen($tmpfilename1, "w");

fwrite($fp, "From: ".$adminmail."n");
fwrite($fp, "Subject: 你在[".$pagename."]填写的<意见反馈表>nn");
fwrite($fp, "****此信为自动回复信件,请勿回复。给你带来不便,我们深表歉意。****nn------------------------------------------------------n非常感谢你在[".$pagename."]填写意见反馈表!n以下是您在".$nowtime."填写的具体内容,请确认:n------------------------------------------------------n");
fwrite($fp, "姓名:".$formno1."n性别:".$formno2."n年龄:".$formno3."nE-mail:".$formno4."n工作单位:".$formno5."n联系地址:".$formno6."n邮编:".$formno7."n电话:".$formno8."n传真:".$formno9."n网址:".$formno10."n意见建议:".$formno11."n------------------------------------------------------n".$pagename.":".$pageline."nE-mail:".$adminmail);
fclose($fp);

$execstr="cat ".$tmpfilename1." | /usr/sbin/sendmail ".$Email;
exec($execstr);

#确认页开始;
echo "
<style type=text/css><STYLE>
A {FONT-SIZE: 9pt}
A:link {COLOR: #006666; }
A:visited {COLOR: #006666;}
A:hover {COLOR: #ff0000; TEXT-DECORATION: underline}
TD {FONT-SIZE: 9pt}
INPUT {FONT-SIZE: 9pt}
</style>
<br><p align=center><font size=4><b>*** 非常感谢你在<a href=$pageline>$pagename</a>填写意见反馈表! ***</b></font></p>以下是您填写的具体内容:<hr><br>
<b>姓名:</b>  $formno1<br>
<b>性别:</b>  $formno2<br>

最近一段时间对PHP文件处理方面很感爱好,因此在许多站点上看了许多的文件处理的文章,但是国内许多的站点上的PHP文件处理方面的知识大多数是你抄我的我抄你的,用baidu.com或者是google.com搜索出来的东西多是重复的。最近在国外一个站点上盾了一篇文章感觉很不错,因此推荐给大家阅读。

首先我们有必要说明一下文件上传的操作流程及用到的知识点:

文件上传我们需要用到HTML里面表单的type="file"类型,及其enctype属性。这是我们大家必须要用的。当然了PHP函数库当中的FILE函数库,字符串类型函数库,目录函数库及$_FILES[]的使用是我们必须要用到的。

也许每一个站点都可能会对上传文件有许多的限制,这些限制会包括 文件类型,文件大小,扩展名,以及上传目录的存在与否,上传文件的存在与否,目录的可写性,可读性,上传文件的改名及怎样把文件从缓存当中复制到你所需要的目录当中。

当然出错的预处理也是我们不容忽视的!假如再深一步的讨论我们还可以对文件的操作起用事件日志的记录。

下面我们通过一段程序来实现这些功能:

--------------------------------------------------------------------------------------------


首先是我们预设的变量值,它包括文件大小,文件扩展名类型,MIMI类型,及是否删除的开关变量

$MAX_SIZE = 2000000;
$FILE_MIMES = array('image/jpeg','image/jpg','image/gif'
,'image/png','application/msword');

$FILE_EXTS = array('.zip','.jpg','.png','.gif');

$DELETABLE = true;


下一部就是设置浏览器访问变量及目录访问变量:

$site_name = $_SERVER['HTTP_HOST'];
$url_dir = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
$url_this = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];

$upload_dir = "files/";
$upload_url = $url_dir."/files/";
$message ="";


建立上传目录并相应改变权限:

if (!is_dir("files")) {
if (!mkdir($upload_dir))
die ("upload_files directory doesn't exist and creation failed");
if (!chmod($upload_dir,0755))
die ("change permission to 755 failed.");
}



用户请求的处理:

if ($_REQUEST[del] && $DELETABLE) {
$resource = fopen("log.txt","a");
fwrite($resource,date("Ymd h:i:s")."DELETE - $_SERVER[REMOTE_ADDR]"."$_REQUEST[del]n");
fclose($resource);

if (strpos($_REQUEST[del],"/.")>0); //possible hacking
else if (strpos($_REQUEST[del],"files/") === false); //possible hacking
else if (substr($_REQUEST[del],0,6)=="files/") {
unlink($_REQUEST[del]);
print "<script>window.location.href='$url_this?message=deleted successfully'</script>";
}
}
else if ($_FILES['userfile']) {
$resource = fopen("log.txt","a");
fwrite($resource,date("Ymd h:i:s")."UPLOAD - $_SERVER[REMOTE_ADDR]"
.$_FILES['userfile']['name']." "
.$_FILES['userfile']['type']."n");
fclose($resource);

$file_type = $_FILES['userfile']['type'];
$file_name = $_FILES['userfile']['name'];
$file_ext = strtolower(substr($file_name,strrpos($file_name,".")));

//文件大小的检查:

预备知识:Javascript, PHP(少量)/Perl(少量)!
测试环境:Windows2000 IIS5 PHP (Win98 PWS PHP3 失败,估计是配置出了问题)
目录结构:
/wwwroot/cgi-bin/fileup.php (文件接收)
/wwwroot/www/test/phpfileup.htm (文件提交)
/wwwroot/www/test/tmp/ (默认保存目录)

前言:文件上传,简单又麻烦。下面是上传文件的提交页面,利用该页面你不仅可以生成 1000 个上传文件框(实际是任意多个 0~n ),而且可分别指出它们的保存路径。
提交页面的文件输入框为命名为: file0,file1,...file100,...fileN
提交页面的文件路径框为命名为: path0,path1,...path100,...pathN
由于页面的生成非常简单,所以就不在此多解释了,用 javascript 定义了两个函数,check() 用于提交页面,create()用于生成文件上传框。假如你有什么更好的建议或有什么疑问请 Email: gearsoft@netease.com

phpfileup.htm
--------------------------------------------------------
<html>
<head>
<title></title>
<style>
.lbtn {font-family:verdana;font-size:10.5pt;}
.ist {font-family:verdana;font-size:14.8px;size:400}
</style>

<script LANGUAGE="javascript">
function check(){
document.frm1.submit();
document.body.innerHTML="Uploading Please wait!";
}

var i=0;
function create(){
var sfrm = document.frm1.innerHTML;
var icnt = cnt.value;
for(j=0;j<icnt;j )
{
sfrm = sfrm "请选择文件 " i " <input type=file name='file" i "' class=ist>";
sfrm = sfrm " 路径:<input type=text name='path" i "' value='../www/test/tmp/' class=ist>";
sfrm = sfrm "<br>";
i ;
}
document.frm1.innerHTML = sfrm;
document.frm1.cnt.value=i;
}

</script>

</head>
<body class=lbtn onload="document.frm1.cnt.value=cnt.value;">
请输入要上传文件的数量: <input type=text name=cnt value="10" class=ist onchange="document.frm1.cnt.value=this.value;">
<input type=button name=bt1 value="生成上传文件框" onclick="create();" class=lbtn>
<input type=button name=bt1 value="上传" onclick="check();" class=lbtn>
<input type=button name=bt1 value="清除" onclick="document.location.reload();" class=lbtn>

<form name=frm1 method="post" Enctype="multipart/form-data" action="../../cgi-bin/fileup.php">
<input type=hidden name=cnt value="20" class=ist>
</form>

<input type=button name=bt1 value="上传" onclick="check();" class=lbtn>
<input type=button name=bt1 value="清除" onclick="document.location.reload();" class=lbtn>
</body>
</html>
文件提交页面既已生成,下面任务就很明确了:将提交的文件内容保存到服务器上。

当你希望用本系统创建你的个人主页之前,笔者相信你已经配置好了相关的阿帕奇服务器,MYSQL数据库,以及php。
接着启动你的mysql数据库,建立一个名为study的数据库,建立一个名为wenzhang的表。
在phpMyAdmin下建立如下字段:

id smallint(5) No 0 auto_increment
timu varchar(200) Yes
zuozhe varchar(18) Yes
laiyuan varchar(40) Yes
textt text Yes
riqi datetime Yes
单页递交。文件名:input.php
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>


<body bgcolor="#FFFFFF" background="image/b-graingr1.jpg">
<form method="post" action="shengcheng.php">
<table width="750" border="1" align="center">
<tr>
<td width="53">标题:</td>
<td colspan="3">
<input type="text" name="timu" size="50">
</td>
</tr>
<tr>
<td width="53" height="28">作者:</td>
<td width="154" height="28">
<input type="text" name="zuozhe" size="20">
</td>
<td width="59" height="28">来源:</td>
<td width="456" height="28">
<input type="text" name="laiyuan" size="30">
</td>
</tr>
<tr>
<td width="53">正文:</td>
<td colspan="3">
<textarea name="textt" cols="90" rows="20"></textarea>
</td>
</tr>
<tr>
<td width="53"> </td>
<td colspan="3">
<input type="submit" name="Submit" value="递 交">
<input type="reset" name="Submit2" value="复 位">
</td>
</tr>
</table>
</form>
</body>
</html>
单页生成,文件名:shengcheng.php
<html>

模板提交,文件名:muban.php
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#FFFFFF" background="image/b-graingr1.jpg">
<form method="post" action="muobanshen.php">
<table width="750" border="1">
<tr>
<td width="155">标题之前:</td>
<td width="579">
<textarea name="muban1" cols="70" rows="5"></textarea>
</td>
</tr>
<tr>
<td width="155">正文之前:</td>
<td width="579">
<textarea name="muban2" cols="70" rows="5"></textarea>
</td>
</tr>
<tr>
<td width="155">正文之后:</td>
<td width="579">
<textarea name="muban3" cols="70" rows="5"></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<div align="center">
<input type="submit" name="Submit" value="提 交">
<input type="button" name="Submit2" value="复 位">
</div>
</td>
</tr>
</table>
</form>
</body>
</html>
模板生成,文件名:muobanshen.php
<html>
<head>
<title>测试</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">


<link rel="stylesheet" href="image/yifancss.css">
</head>
<body leftmargin="0" topmargin="0" link="#000066" vlink="#000068" alink="#000068" background="image/b-graingr1.jpg">
<p>
<?
$fdd=fopen("muoban1.txt","w");
fwrite($fdd,$muban1);
fclose($fdd);
$fdd=fopen("muoban2.txt","w");
fwrite($fdd,$muban2);
fclose($fdd);
$fdd=fopen("muoban3.txt","w");
fwrite($fdd,$muban3);
fclose($fdd);
echo "模板修改成功!<p>";
?>
<br>
<center><a href="guanli.php">治理文件</a></center>
</p>
</body>
</html>

网站治理,文件名:guanli.php
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#FFFFFF" background="image/b-graingr2.jpg">
<table width="775" border="0">
<tr>
<td width="101" height="463" valign="top">
<p><img src="image/piao.gif" width="103" height="60"></p>
<p><img src="image/a.gif" width="100" height="35"></p>
<p><a href="muban.php"><img src="image/b.gif" width="100" height="35" border="0"></a></p>
<p><img src="image/c.gif" width="100" height="35"></p>
<p><img src="image/d.gif" width="100" height="35"></p>
<p><img src="image/e.gif" width="100" height="35"></p>
<p><img src="image/f.gif" width="100" height="35"></p>
</td>
<td width="663" height="463" valign="top">
<table width="95%" border="0" align="center" height="234">
<tr>
<td height="43">
<div align="center"><b><font color="#480000" size="6">页面治理</font></b></div>
</td>
</tr>
<tr valign="top">
<td height="267">




<?php
// 程序开始
$db = mysql_connect("localhost", "root");

mysql_select_db("study",$db);
// 判定是不是修改文件
if ($submit) {



$sql = "UPDATE wenzhang SET timu='$timu',zuozhe='$zuozhe',
laiyuan='$laiyuan',textt='$textt' WHERE id=$id";



// 向数据库发出SQL命令

$result = mysql_query($sql);
// 文章生成
$t = date("Y-m-d h:i:s");
$muoban1 = fopen("muoban1.txt","r");
$muoban2 = fopen("muoban2.txt","r");
$muoban3 = fopen("muoban3.txt","r");
$qita = "<p><table width="75%" border="0" align="center">
<tr>
<td class=p9>
<div align="center">作者:<font color="#306800">$zuozhe</font> ??来源:<font color="#306800">$laiyuan</font>
??时间:<font color="#336600">$t</font> </div>
</td>

上次发了一个ASP多个域名绑定一个空间互不影响 人气旺旺的。

$domain_net="abc.com";
$dot_net_url="bbs/";
$dot_com_url="flash";
if(($HTTP_HOST=="$domain_net")or($HTTP_HOST=="www.$domain_net"))
{
Header("Location: $dot_net_url");
}
else
{
Header("Location: $dot_com_url");
}
?>

[!--infotagslink--]

相关文章

  • postgresql 实现多表关联删除

    这篇文章主要介绍了postgresql 实现多表关联删除操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-02
  • mysql的3种分表方案

    一、先说一下为什么要分表:当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。根据个人经验,mysql执行一个sql的过程如下:1...2014-05-31
  • js实现列表按字母排序

    这篇文章主要为大家详细介绍了js实现列表按字母排序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-11
  • javaScript年份下拉列表框内容为当前年份及前后50年

    javascript下拉列表框,内容为当前年份及前后50年,默认选择为当前年份 复制代码 代码如下: <script language="javascript" type="text/javascript"> window.onload=function(){ //设置年份的选择 var myDate= new Date(...2014-05-31
  • easyUI下拉列表点击事件使用方法

    这篇文章主要为大家详细介绍了easyUI下拉列表点击事件的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-05-22
  • Element图表初始大小及窗口自适应实现

    这篇文章主要介绍了Element图表初始大小及窗口自适应实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-10
  • 基于postgresql数据库锁表问题的解决

    这篇文章主要介绍了基于postgresql数据库锁表问题的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-30
  • Python 列表(List)的底层实现原理分析

    这篇文章主要介绍了Python 列表(List)的底层实现原理分析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • PostgreSQL之分区表(partitioning)

    通过合理的设计,可以将选择一定的规则,将大表切分多个不重不漏的子表,这就是传说中的partitioning。比如,我们可以按时间切分,每天一张子表,比如我们可以按照某其他字段分割,总之了就是化整为零,提高查询的效能...2020-07-11
  • JavaScript实现网页下拉列表的省市联动

    这篇文章主要为大家详细介绍了JavaScript实现网页下拉列表的省市联动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-07
  • C#实现绘制面形图表的方法详解

    这篇文章主要介绍了C#实现绘制面形图表的方法,对于C#初学者很好的掌握C#图形绘制有一定的借鉴价值,需要的朋友可以参考下...2020-06-25
  • 基于c#实现的九九乘法表(简单实例)

    本文主要分享了基于c#实现的九九乘法表,代码简洁,需要的朋友可以参考下,希望对大家有所帮助...2020-06-25
  • vbs 读写注册表之系统启动项添加与删除

    这篇文章主要介绍了vbs 读写注册表之系统启动项添加值,需要的朋友可以参考下...2020-06-30
  • 如何使用RoughViz可视化Vue.js中的草绘图表

    这篇文章主要介绍了如何使用RoughViz可视化Vue.js中的草绘图表,帮助大家更好的理解和使用roughViz,感兴趣的朋友可以了解下...2021-01-31
  • C#设置自定义文件图标实现双击启动(修改注册表)

    这篇文章介绍的是利用C#设置自定义文件图标,然后实现双击启动的功能,文章给出了示例代码,介绍的很详细,有需要的可以参考借鉴。...2020-06-25
  • 解析C#自定义控件的制作与使用实例的详解

    本篇文章是对C#中自定义控件的制作与使用实例进行了详细的分析介绍,需要的朋友参考下...2020-06-25
  • Echarts实例教程之树形图表的实现方法

    众所周知echarts是一个纯JavaScript的图标库,下面这篇文章主要给大家介绍了关于Echarts实例之树形图表的实现方法,需要的朋友可以参考下...2021-08-06
  • C# 列表List的常用属性和方法介绍

    这篇文章主要介绍了C# 列表List的常用属性和方法介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
  • C#操作windows注册表的方法

    这篇文章主要介绍了C#操作windows注册表的方法,涉及C#针对注册表的读取与写入技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • AngularJS使用ngOption实现下拉列表的实例代码

    这篇文章主要介绍了AngularJS使用ngOption实现下拉列表的实例代码的相关资料,需要的朋友可以参考下...2016-01-25