作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不知道或者是问题所在,我的代码无法正常工作,总是错误 1||错误 2
<?php
session_start();
$token = uniqid(rand(), true);
$_SESSION['token'] = $token;
$_SESSION['token_time'] = time();
?>
<body>
<form id="form" name="form" method="post" action="">
<p>Pseudo :
<label>
<input type="text" name="pseudo" id="pseudo" />
</label>
</p>
<p>E-mail :
<label>
<input type="text" name="email" id="email" />
</label>
</p>
<p>Nom :
<label>
<input type="text" name="nom" id="nom" />
</label>
<input type="hidden" name="token" id="token" value="<?php echo $token;?>"/>
</p>
<p>
<label>
<input type="submit" name="Envoyer" id="Envoyer" value="Envoyer" />
</label>
</p>
</form>
</body>
</html>
我不知道或者是问题所在,我的代码无法正常工作,总是错误 1 ||error2我想保护我的网站,但我不知道如何使用此 torgen,请帮助我
<?php
session_start();
if(isset($_SESSION['token']) && isset($_SESSION['token_time']) &&
isset($_POST['token']))
{
if($_SESSION['token'] == $_POST['token'])
{
$timestamp_ancien = time() - (15*60);
//Si le jeton n'est pas expiré
if($_SESSION['token_time'] >= $timestamp_ancien)
{
//here Instruction
}else{echo"error3";}
}else{echo"error2";}
}else{echo"error1";}
?>
最佳答案
请尝试以下操作:
<?php
session_start();
function generate_token(){
$token = uniqid(rand(), true);
$_SESSION['token'] = $token;
$_SESSION['token_time'] = time();
}
//avoid putting script at bottom until required
if($_SERVER['REQUEST_METHOD']=='POST' && !empty($_POST)){
if(isset($_SESSION['token']) && isset($_SESSION['token_time']) &&
isset($_POST['token']))
{
if($_SESSION['token'] == $_POST['token'])
{
$timestamp_ancien = time() - (15*60);
//Si le jeton n'est pas expiré
if($_SESSION['token_time'] >= $timestamp_ancien)
{
//here Instruction
generate_token();//for next call
}else{echo"error3";}
}else{echo"error2";}
}else{echo"error1";}
}
generate_token();
?>
<body>
<form id="form" name="form" method="post" action="">
<p>Pseudo :
<label>
<input type="text" name="pseudo" id="pseudo" />
</label>
</p>
<p>E-mail :
<label>
<input type="text" name="email" id="email" />
</label>
</p>
<p>Nom :
<label>
<input type="text" name="nom" id="nom" />
</label>
<input type="hidden" name="token" id="token" value="<?php echo $_SESSION['token'];?>"/>
</p>
<p>
<label>
<input type="submit" name="Envoyer" id="Envoyer" value="Envoyer" />
</label>
</p>
</form>
</body>
</html>
现在发生的情况是每次页面加载时都会调用您的函数,但发布数据将在早期状态进行比较和操作。
**如果我理解有任何错误,请纠正我。**
关于php - 托尔根 CSRF 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45722013/
我是一名优秀的程序员,十分优秀!