我正在尝试使用随机令牌并将其存储为会话,然后将其放置在隐藏的输入文本中,该文本将发送到我的处理页面。如果两个令牌都匹配,则将处理表单,但是在回显两个令牌时,它们确实匹配,但是在实时服务器上,它不匹配。...
我试图同时使用!==和!=符号,但是即使两个标记都相同,也仍然无法匹配它们。.
我已将此代码放在我的主窗体部分中。这是我代码的一部分,因为我的表格太长了
$_SESSION['token'] = bin2hex(random_bytes(32));
<br></br>
<input type="hidden" name="csrf" value="<?php echo $_SESSION['token']; ?>">
<button type="submit" name="submit">Sign up</button>
</form>
This is part of my processing form:
$csrf = strip_tags($_POST['csrf']);
// information from memberships' table
$subscriptionplan = strip_tags($_POST['subscriptionplan']);
$pricing_level1 = strip_tags($_POST['pricing_level1']);
$pricing_level2 = strip_tags($_POST['pricing_level2']);
$pricing_level3 = strip_tags($_POST['pricing_level3']);
// referral information
$referral = strip_tags($_POST['referral']);
if(hash_equals($csrf, $_SESSION['token'])) {
header("Location: ../signup.php?signup=wrongtoken");
exit();
} else {
答案 0 :(得分:0)
我敢打赌,您忘记将表单提交类型设置为post
。任何HTML表单的默认提交类型(如果未设置)为get
,因此可以将其设置为post
,或者将值分配给$_GET[...]
超级全局变量,而不是{{1 }}。