New Job部分

New Job部分位于njob子目录，它包含有两个ASP页（见图29.10）。这两个页用于创建一个新的工作发送。在第一页中，用户将工作信息输入到HTML表单中去。在第二页，这个信息被确认并输入名为jobs的数据库表中去。

图29.10 New Job部分

njob1.asp njob2.asp

New Job页

除了在HTML表单字段上的略一些区别之外，New Job页几乎同New Resume页完全一样（见图29.11），在这一页上，用户可输入一个新的工作的信息。

不同于New Resume页，用户不用输入一个密码，每个工作都分配一个随机产生的工作代号，工作代号和e-mail地址的组合可以用来区分每项工作。以下是用于产生随机工作代号的代码：

' Create Random Secret Code

FUNCTION SecretCode()

RANDOMIZE

SecretCode=INT(9000*RND+1000)

END FUNCTION

这段代码将产生一个随机的四位数。当用户相更新工作时，他或她必须输入这个工作代号，这对一个工作来说它充当一个密码。

图29.11 New Job页

Confirm New Job页

Confirm New Job页几乎同Confirm New Resume页一样（见图29.12）。

这页的一个有趣的特性在于它检测浏览者是否使用了浏览器的Back按钮或者Refresh按钮。通过使用浏览器上的Refresh或Reload按钮，一个用户可以一次又一次的重新提交相同的表单，这可能导致问题。假设一个人完成工作信息的输入并提交它一条新的记录将添加到列表jobs中去。现在设想用户按击浏览器的Refresh或Reload按钮，另外一条新的记录将被添加。永远不可能阻止用户这样做。

一个带有恶意的用户可能通过这种方式来破坏你的数据库表。更糟的是，一个无辜的用户可能出于偶然也这样做。怎样才能防止发生这样的事呢？

因为随机的工作代码是在New Job页上产生的。当用户每次刷新和重载Confirm New Job页时，工作代号是相同的。通过检查e-mail地址和工作代号的组合你可以判断出Confirm New Job页是否被刷新和重载，一个特定的e-mail地址和工作代号的组合只允许在数据库表中输入一次。

图29.12 Confirm New Job页