Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当用户点击按钮和超链接转到另一个页面时,在URL中插入随机数_Javascript_Php_Hyperlink - Fatal编程技术网

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

Javascript 当用户点击按钮和超链接转到另一个页面时,在URL中插入随机数,javascript,php,hyperlink,Javascript,Php,Hyperlink,我有一个时间表项目,员工打卡上班和下班。如果是在下午4点之后,他们必须在时钟停止按钮出现之前提交值班日志 该项目是完整的,功能应该是正常的,但我发现了一些缺陷,员工可以通过实际完成一次并保存值班日志提交页面的URL来绕过必须填写值班日志 此外,用户甚至可以保存打卡URL,这样他们就不必填写值班日志(当要求填写时,他们只需输入打卡URL)。我想通过在url中插入一个随机数来防止员工这样做,因此当用户单击url或超链接时,url每次都包含一个随机数。 这两种我都试过了,但都没用。我走对了吗?欢迎提出

我有一个时间表项目,员工打卡上班和下班。如果是在下午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";

}