Linux系统小型日程表挑战大型群件( 二 )



# htpasswd -c ./htpasswd seebs
New password:
Re-type new password:
Adding password for user seebs
-c 选项让 htpasswd 创建一个新文件 。当创建另外的用户时不要使用它;否则,只有最新的用户才能够登录 。完成后,尝试访问页面将会要求输入口令 。给出用户名和密码,然后就能进入了 。$REMOTE_USER 将被设置为用户名,以使得脚本可以知道谁在使用它们 。
我不喜欢漫长的告别
于是,您可以登录进入 。不能登录出去 —— 出于未知的原因,多数浏览器通常不允许刷新所请求的用户名/口令组合的内存 。可以刷新 cookies,可以刷新缓存 —— 但是浏览器可能仍然认为它知道您要做什么 。
所以,如果登录到公用的计算机,那么在离开之前一定要关闭整个浏览器 。否则,人们可能碰巧会看到您的家务杂事列表,而不是他们自己的,这样就会出笑话了 。如果这确实是个问题,那么可使用 cookies.
【Linux系统小型日程表挑战大型群件】尽管如此,这使得系统允许用户使用他们自己的用户名登录,对于让用户添加记录来说就足够了 。只要有添加记录的途径!
室友记录
实现此目标的基本概念很简单:公开地张贴有时间标记的消息,用户可以读取 。Berkeley msgs 工具刚好是所需的复杂程度(也就是说,几乎根本就不难) 。每个文件将包含一个名称、一个时间标记以及一些文本 。系统将向用户显示特定时间段的消息,或者将用户最后一次访问之后张贴的消息显示给他们 。
要读取的消息的数目应该暂时不重要,所以我将使用最简单的所有文件格式:目录中的全部文件,每个文件中,第一行是一个时间标记和一个用户名,然后是一些文本 。这甚至不需要为文件准备数据库;文件系统的灵活性就足够了 。(您可能会问我为什么不直接使用文件系统中的时间标记;答案是我并不相信它,因为粗心的用户会破坏它 。我的很多目录中所有的文件都拥有相同的时间标记 。)我确实需要某种类型的数据库,用于用户以及他们的最近的时间标记,所以每个用户都将拥有一个数据文件,现在其中包含有一个时间标记 。
整个项目很小,只使用一个 CGI 脚本就可以借助 Perl 的标准 CGI 模块来实现 。目标是折衷所需附加代码(尽可能少)以及所需开发时间(尽可能短) 。在本例中,系统所附带的功能是足够的 。
/var/www/msgs 是一个新目录,用于保存消息(以数字命名的文件)和用户记录(使用 .htaccess 文件中给出的用户名作为文件名) 。CGI 脚本会识别自身,执行被请求的动作,并展现出相当简单的界面;它所需要的只是一些按钮和一个文本区域 。为了表示尊敬,这个脚本命名为 msgs.cgi.
开发过程中涉及了一些设计方面的考虑 。
甚至不需要去解析日期,因为在大部分情况下可以简单地让用户使用按钮(最近 24 小时、上一周、自上一次访问,以及所有消息) 。以数字为名称的文件可以简单地由内置的 glob 来识别,它能够方便地整理文件 。不过,如果数字的位数发生了变化,整理就会发生错误,所以要给出前导的零 。脚本并没有精心地去分辨主题,而只是为每条消息的第一行使用了 H3 标签 。程序假定输入消息的全部 HTML 都是没有恶意的 。如果室友没有足够的幽默感,那么用户在写入时应该仔细检查 。这个脚本非常短小,只有 2K 多一点 。不过,它也有潜在的开销,因为 CGI 库实际上很大 。但是相对于更大的系统,它还是非常小的,而且它提供了一个适当的途径让用户张贴消息并让其他人方便地进行查看 。图 1. 尽管针对室友的记录的实现方法发生了变化,但其基本特性没有发生变化可能以后会开发某些方法来指定时间范围或搜索函数 。最好也要有删除较老消息的方法 。虽然如此,相对于贴在冰箱上的淡黄色便笺,这是一个可靠而实际的创新 。

推荐阅读