我的symfony 2.7更新到symfony 3.4。 我在Symfony 2.7中使用了函数generateToken()来为文件上传任务创建一个令牌。我找到了有关symfony 3.4 Securely Generating Random Values 的信息。但我如何整合呢?
我可以使用以下声明吗?
<?php
if (isset($_POST['submit_btn'])) {
$weight = $_POST['weight'];
$sql = "SELECT weight_id FROM parcel_weight WHERE weight = '$weight'";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
$row = mysqli_fetch_assoc($result);
echo $row['weight_id'];
}
?>
<form method="post" action="">
<select class="weight" name="weight" id="weight">
<option>Weight of parcel</option>
<?php
$res = mysqli_query($conn, "SELECT * FROM parcel_weight");
while ($row = mysqli_fetch_array($res)) {
$weight = $row['weight'];
echo "<option value=\"$weight\">$weight</option>";
}
?>
</select>
<div id="submitBtn">
<input type="submit" name="submit_btn" id="submit_btn" value="Submit" />
</div>
</form>
答案 0 :(得分:2)
我知道这可能会晚了,但希望它将对其他方面有所帮助,因为symfony中没有开箱即用的功能可用于生成令牌。
所以当我遇到此问题时我所做的是,我使用了FOSUserBundle所使用的同一令牌生成器,这是这样的:
public function generateToken()
{
return rtrim(strtr(base64_encode(random_bytes(32)), '+/', '-_'), '=');
}
https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Util/TokenGenerator.php
,如您所见,它使用了官方documentation of symfony中推荐的random_bytes()
函数和php函数base64_encode()
结合使用,旨在使二进制数据在通过传输层的传输中幸免于难并非8位纯净格式,例如the official php documentation中说明的邮件正文,并且它们正使用此example。