繁体   English   中英

当用户点击按钮和超链接转到另一个页面时,将随机数插入URL

[英]Insert random number into URL when user clicks on button and hyperlink to go to another page

我有一个时间表项目,员工可以进入和退出。 如果是在下午4点之后,他们必须在出现时钟输出按钮之前提交一份值班日志。

该项目是完整的,功能应该如此,但我发现一些缺陷,员工可以通过实际完成一次并保存值班日志提交页面的URL来绕过必须填写值班日志。

此外,用户甚至可以保存时钟输出URL,这样他们就不必填写他们的工作日志(当他们要求填写时,他们可以输入时钟输出URL)。 我想通过在网址中插入随机数来阻止员工这样做, 因此当用户点击URL或超链接时,URL每次都包含一个随机数。

我尝试了这两个,但它没有用。 我是在正确的轨道上吗? 意见和建议表示赞赏。 如果可以的话,请你发一个例子吗? 提前致谢。

超链接:

var url = "http://www.mypage.com/index.php?"+Math.random()

<a href="http://www.mypage.com/index.php?1" onClick="this.href=this.href.split('?')[0]+'?'+new Date().getTime()">Mostly random</a>

按钮:

echo "<form action='ClockOut.php'+Math.random() method='post'>
            <span style=\"background-color: #FFFF00\">**Please Clock Out when your shift ends**</span>
            <input value='Clock Out' id='Submit2' type='submit' /></td>               
            </form>";

使用服务器端PHP方法有很多方法可以做到这一点,但这里有一个例子:

<a href="timekeeper.php?var<?php echo uniqid() . date('_m_d_Y_h_i_s_a', time());?>">Log time</a>

单击链接时会生成类似的内容:

http://www.example.com/timekeeper.php?var53e4137591352_08_07_2014_08_01_57_pm

细分:

?var取自isset($_GET)

if(isset($_GET["var"])) {

    echo "SUCCESS";

}

然后,

  • uniqid()生成的53e4137591352将每次更改并且是唯一的。

  • time()生成的_08_07_2014_08_01_57_pm发生变化。

    • 您也可以使用UNIX TIMESTAMP。

使用的功能:

因此,如果需要( 例如 ),您可以将uniqid()替换为员工的ID号,以及任何其他基于随机或时间的函数,只要它们被正确格式化和连接。

我希望这有帮助。

弗雷德-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;
}

解决方案2(JS):

  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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM