Javascript 当用户点击按钮和超链接转到另一个页面时,在URL中插入随机数
我有一个时间表项目,员工打卡上班和下班。如果是在下午4点之后,他们必须在时钟停止按钮出现之前提交值班日志 该项目是完整的,功能应该是正常的,但我发现了一些缺陷,员工可以通过实际完成一次并保存值班日志提交页面的URL来绕过必须填写值班日志 此外,用户甚至可以保存打卡URL,这样他们就不必填写值班日志(当要求填写时,他们只需输入打卡URL)。我想通过在url中插入一个随机数来防止员工这样做,因此当用户单击url或超链接时,url每次都包含一个随机数。 这两种我都试过了,但都没用。我走对了吗?欢迎提出意见和建议。如果可以的话,你能举个例子吗?提前谢谢 超链接:Javascript 当用户点击按钮和超链接转到另一个页面时,在URL中插入随机数,javascript,php,hyperlink,Javascript,Php,Hyperlink,我有一个时间表项目,员工打卡上班和下班。如果是在下午4点之后,他们必须在时钟停止按钮出现之前提交值班日志 该项目是完整的,功能应该是正常的,但我发现了一些缺陷,员工可以通过实际完成一次并保存值班日志提交页面的URL来绕过必须填写值班日志 此外,用户甚至可以保存打卡URL,这样他们就不必填写值班日志(当要求填写时,他们只需输入打卡URL)。我想通过在url中插入一个随机数来防止员工这样做,因此当用户单击url或超链接时,url每次都包含一个随机数。 这两种我都试过了,但都没用。我走对了吗?欢迎提出
var url=”http://www.mypage.com/index.php?“+Math.random()
按钮:
echo”
**下班时请打卡下班**
";
Fred-ii-是对的。最好使用服务器端解决方案(本例中为PHP),因为可以禁用JS。
几分钟之内,我就找到了两种情况的解决方案。不知道你是否做过任何研究
解决方案1(PHP):
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}
function makeid()
{
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for( var i=0; i < 5; i++ )
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
}
function generateRandomString($length=10){
$characters='0123456789abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz';
$randomString='';
对于($i=0;$i<$length;$i++){
$randomString.=$characters[rand(0,strlen($characters)-1)];
}
返回$randomString;
}
解决方案2(JS):
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}
function makeid()
{
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for( var i=0; i < 5; i++ )
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
}
函数makeid()
{
var text=“”;
var-mablue=“ABCDEFGHIJKLMNOPQRSTUVXYZABCDFGHIJKLMNOPQRSTUVXYZ0123456789”;
对于(变量i=0;i<5;i++)
text+=可能的.charAt(Math.floor(Math.random()*可能的.length));
返回文本;
}
使用服务器端PHP方法有很多方法,但下面是一个示例:
<a href="timekeeper.php?var<?php echo uniqid() . date('_m_d_Y_h_i_s_a', time());?>">Log time</a>
那么
由53e4137591352
生成,每次都会更改,并且是唯一的uniqid()
由
时间()生成的
也发生了变化
- 您还可以使用UNIX时间戳
uniqid()
替换为员工的ID号,也可以附加任何其他基于随机的函数或时间函数,只要它们的格式和连接正确即可
我希望这会有所帮助。使用服务器端解决方案,而不是客户端解决方案。JS可以被禁用。对你的随机数使用mt_rand()
mt_rand()
如上所述,uniqid()
有很多方法可以做到这一点;实际上是数不清的。as@Fred-ii-建议不要使用js如果你想让人们停止覆盖你的安全检查,请使用服务器端脚本我是否可以将Math.random()更改为mt_rand()?我不知道这件事,我还没听说过兰德山()。有人能举个例子吗?谢谢。
if(isset($_GET["var"])) {
echo "SUCCESS";
}