场景:你入职了一家新公司.上班第一天,接待人给你安排好了座位,然后拉过来一台没拆封的新电脑.你把电脑连接好之后,按下电源....好吧,这真是一台新电脑,里边竟然内置了个DOS系统!!你找同事拿来了操作系统光盘/U盘(这个无所谓了).半个小时后,操作系统安装好了.第一件事就是要把LAMP环境搭建起来,这样才好工作.简述搭建LAMP环境过程中的注意点.LMAP环境搭建好之后,你拿到了第一个开发任务.给公司内部开发一个通用审批系统.公司内部有一个DNS服务器,上边已经配好了这个系统的域名,叫approving.great-company.com,并指向了你本机的ip.
你尝试访问了一下http://approving.great-company.com
,出现了apache经典的It
Works页面,域名是生效的.你打算在桌面新建一个目录叫approving并在这个目录下完成这个系统的开发.如何配置apache使得访问http://approving.great-company.com的时候能够打开approving/index.phpapache配置好之后,你开始了开发工作.这时,同事给了你一份代码,是另一个人写了一半的通用审批系统.这下好多了,你不用从零开始写代码了.你翻看了他的代码,发现逻辑是这样的:
用户使用email和密码登录这个系统后,程序把这个用户的id放到了session里.通过$_SESSION['uid']就可以拿到登录用户id,然后去数据库里就能把这个用户的个人信息(比如叫什么名字,是哪个部门的)拿到了.接着,你找到了这个通用审批系统主要功能点的代码<form action="new-approving.php" method="post">
审批事项: <input type="text" name="title" />
详细描述: <textarea name="details"></textarea>
<input type="submit" value="提交" />
</form>
<?php
include __DIR__ . '/conndb.php';
$title = $_POST['title'];
$details = $_POST['details'];
$access = md5(uniqid());
$db->query("INSERT INTO approving(title, details) VALUES ('$title', '$details')");
$insertId = $db->getLastinsertId();
$db->query("INSERT INTO access(approving_id, access) VALUES ($insertId, $access)");
// 通知boss@great-company.com审批
$to = 'boss@great-company.com';
$subject = "请审批 $title";
$body = "$details\n<a href=\"approve.php?access=$access\">快速审批链接</a>";
include __DIR__ . '/lib/mail.php';
$mail = new Mail();
$mail->addTo($to);
$mail->setSubject($subject);
$mail->setBodyHtml(nl2br($body));
$mail->send();
header('Location: success.php');
看到这里,你大概看明白了.用户登录进来之后,提交一个表单,填写好要boss审批什么东西以及详细的描述,程序接收到提交数据后,除了把审批事项存放到approving表之外,还生成了一个access,发送给了boss,应该是boss在邮件里点击这个”快速审批链接”就不需要登录系统就直接把事项审批了.接着,你找到了approving.php的代码:<?php
include __DIR__ . '/conndb.php';
$access = $_GET['access'];
$row = $db->query("SELECT approving_id FROM access WHERE access = '$access'");
if (!$row) {
die('No such access');
}
$approvingId = $row['approving_id'];
$approvingRow = $db->query("SELECT * FROM approving WHERE approving_id = $approvingId");
echo '<h3>审批事项: ', $approvingRow['title'], '</h3>';
echo '<p>详细描述:</p>';
echo '<p>', nl2br($approvingRow['details']), '</p>';
echo "<a href=\"pass.php?access=$access\">通过</a>";
echo "<a href=\"deny.php?access=$access\">拒绝</a>";
Review上述三段代码,指出代码中存在的问题.4. 在你翻看完成了大部分代码之后,你发现里边有一个TODO尚未完成.
// TODO:
如果两天了boss还没有审批,那么系统就再发一封邮件催一下. 这个该怎么实现? 最佳答案