背景:在给某个客户做一个调查问卷项目时(一个很小的项目,姑且也叫项目吧)。开始根据需求和自身的熟悉程度,决定采用asp.net来做。无非也就是实现一个记事本的IO操作。后面因为客户服务器环境的问题,结果改用PHP做。对于PHP只有耳闻,而且听的看的次数也相当的多,因为一直都比较火,但是都久久没有碰它。现在需求来了,没法,就只有硬着头皮去看看。而且时间紧迫,改的的程序第二天就要用。
先把用C#写的代码贴出来
protected void commitInfo_Click(object sender, EventArgs e)
{
Monitor.Enter(lockObject);
try
{
string name = this.name.Value.Trim();
string idcard = this.idcard.Value.Trim();
string phone = this.phone.Value.Trim();
string company = this.company.Value.Trim();
string code = this.code.Value.Trim();
string address = this.address.Value.Trim();
string msg = "";
string filePath = Server.MapPath(".") + "\\data\\result.txt";
string text = File.ReadAllText(filePath);
if (!string.IsNullOrEmpty(text))
{
if (Regex.IsMatch(text, idcard))
{
this.scriptDiv.InnerHtml = "<script>alert('当前身份证号的用户已经提交过了');</script>";
return;
}
}
if (string.IsNullOrEmpty(name))
{
msg += "姓名不能为空,请填写!\n";
}
if (string.IsNullOrEmpty(idcard))
{
msg += "身份证不能为空,请填写!\n";
}
if (string.IsNullOrEmpty(phone))
{
msg += "联系电话不能为空,请填写!\n";
}
if (string.IsNullOrEmpty(address))
{
msg += "联系地址不能为空,请填写!\n";
}
if (!string.IsNullOrEmpty(msg))
{
this.scriptDiv.InnerHtml = "<script>alert('" + msg + "');</script>";
return;
}
using (StreamWriter sw = File.AppendText(filePath))
{
sw.WriteLine("姓名: " + name);
sw.WriteLine("身份证号: " + idcard);
sw.WriteLine("联系电话: " + phone);
sw.WriteLine("单位: " + company);
sw.WriteLine("通讯地址: " + address);
sw.WriteLine("邮政编码: " + code);
sw.WriteLine("提交时间: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sw.WriteLine();
//sw.Flush();
//sw.Close();
}
this.scriptDiv.InnerHtml = "<script>setCookie('IDCARD','" + idcard + "',100);alert('恭喜你,提交成功');</script>";
}
catch (Exception ex)
{
this.scriptDiv.InnerHtml = "<script>alert('" + ex.Message + "');</script>";
}
finally
{
Monitor.Exit(lockObject);
}
}
其实也就是把提交的用户信息保存在记事本中,简单的功能。其中涉及到了并发的控制和资源的释放就是了。然后需要将类似的功能用PHP实现。
本来功能很简单,只是对于php连环境都不知道怎么搭建,所以还是比较盲目
先是在网上找一些搭建PHP环境的资料,找了一些,也不知道哪个环境好,结果采用了一种最简单的PHP环境搭建,就是PHPNOW,所谓的一键搭建PHP的环境。呵呵,不过这玩意是比较简单,就跟着说明一步一步的选择就好了,结果PHP+MySQL+apache的环境就搭建好了
接下来的就是看PHP的语法了,其实语言都有相同的,第一眼看上去,觉得和javascript语言挺相似的,刚开始接触的第一感觉,也不知道是不是这样。结果就写了一下的程序
<?php
try
{
$name = $_POST["name"];
$idcard = $_POST["idcard"];
$phone = $_POST["phone"];
$code = $_POST["code"];
$address = $_POST["address"];
$company = $_POST["company"];
date_default_timezone_set ('PRC');
$datetime = date( "Y-m-d H:i:s");
$FileName = $_SERVER['DOCUMENT_ROOT']."\\data\\result.txt";
$data="";
$fp=null;
try
{
$fp=fopen($FileName,"r");
}
catch(Exception $e){
}
while(!feof($fp))
{
$data.=fread($fp,1024*1024*5);
}
fclose($fp);
if (ereg($idcard,$data)){
echo "<div style='font-size:18pt;color:red;'>改身份证号码已经提交过了!<a href='Index.php'>返回</a></div>";
}else{
$fd = fopen($FileName, "a");
flock($fd, LOCK_EX);
fwrite($fd, "姓名: ".$name."\r\n");
fwrite($fd, "身份证号码: ".$idcard."\r\n");
fwrite($fd, "联系电话: ".$phone."\r\n");
fwrite($fd, "单位名称: ".$company."\r\n");
fwrite($fd, "邮政编码: ".$code."\r\n");
fwrite($fd, "提交时间: ".$datetime."\r\n");
fwrite($fd, "通讯地址: ".$address."\r\n");
fwrite($fd, "\r\n");
flock($fd, LOCK_UN);
fclose($fd);
echo "<script>setCookie('IDCARD','".$idcard."',60);</script>";
echo "<div style='font-size:18pt;color:red;'>恭喜你,提交成功!<a href='Index.php'>返回</a></div>";
}
//echo "<script language='javascript'>";
//echo "alert('恭喜你,提交成功');";
//echo "</script>";
//header("Location: Index.php");
}
catch(Exception $e)
{
echo "出错:".$e->getMessage();
}
?>
(没处理缩进问题,看起来是有点乱,因为用记事本写的,所以就没去管,多包涵)
虽然对于PHP我还是门外汉,但是对于这一晚上的成果我还是比较满意的,呵呵。语言都是有共同点的,接下来就慢慢深入吧
有一句话是很有道理的:很多东西都是被逼出来的!但这未尝不是一件好事,对吗.