有一种形式是通过 POST 请求传递 selects 的值,但是需要给它们添加一个数组,这个数组是在这些 selects 的创建过程中形成的。怎么做?是不是可以不把这个写入测试输入的值,然后再发送呢?:)
第一个.php:
<form class="forma" action="second.php" method="post">
<div class="form-group">
<select class="form-control" name="NamesUsers">
<?php
$name = $_SESSION['login'];
$availableNames = array();
if ($_SESSION['RolOfUser'] == 'admin'){
$sql = mysqli_query($db, "SELECT login FROM users WHERE login != '$name'");
while ($row = $sql->fetch_assoc())
{
echo "<option value=\"".$row['login']."\">" . $row['login'] . "</option>";
array_push($availableNames, $row['login']);
}
}else {
$sqlModer = mysqli_query($db,
"SELECT login FROM users INNER JOIN roli ON users.id=roli.UserId where users.login !='$name' and roli.RolOfUser !='admin'");
while ($rrow = $sqlModer->fetch_assoc()) {
echo "<option value=\"".$rrow['login']."\">" . $rrow['login'] . "</option>";
array_push($availableNames, $row['login']);
}
}
?>
</select>
</div>
<div class="form-group">
<select class="form-control" name = "SetRol">
<option value = "admin">Сделать администратором</option>
<option value = "moderator">Сделать модератором</option>
<option value = "user">Понизить до ЮЗВЕРЯ</option>
</select>
</div>
<input class="btn btn-primary" type="submit" value="Изменить роль">
</form>
第二个.php:
$NameUser = $_POST['NamesUsers'];
$NameRol = $_POST['SetRol'];
$allowed = array("admin", "moderator", "user");
//$availableNames = $_POST['$availableNames']; ???
if(in_array($NameRol, $allowed) and in_array($NameUser, $availableNames)){
$sql = "UPDATE roli SET RolOfUser = ? WHERE UserId = (SELECT id FROM users WHERE login = ?)";
$statement = $db->prepare($sql);
$statement->bind_param("ss", $NameRol, $NameUser);
$statement->execute();
}else{
echo "<div class=\"message center\"><p>Невозможный пользователь или роль</p></div>";
}
如果没有在站点代码中发送信息的输出 - 没办法,但你可以做一些不明显的事情 - 在 JS 中发送表单并在发送之前向其添加必要的参数。关于 jq ajax 的示例
在这种情况下,通过 POST 传递是不安全的,我可以作弊并传递其他东西)))您可以根据 $_SESSION['RolOfUser'] 的值确定应该使用哪个列表并进行数据库查询以获取此列表。
如果问题只是关于 HTML 和表单,则序列化数据并将其放入隐藏的输入 例如: 如果使用 jQuery 提交那么您可以将数据放入任何块中,然后通过选择器并使用 jQuery 选择此数据并发送它到 php 处理程序