Php 按用户权限隐藏输入值,但仍提交
我有一个表单,在这里我可以获得登录用户的第一个权限 在我的示例中,已简化为:Php 按用户权限隐藏输入值,但仍提交,php,jquery,Php,Jquery,我有一个表单,在这里我可以获得登录用户的第一个权限 在我的示例中,已简化为: $user\u privilege=1用户可以查看/编辑所有字段 $user\u privilege=2用户无法查看/编辑价格字段 然后用户可以查看/编辑表单 问题在于,如果产品具有以下值: name = "example title" description = "example description" price = 56 如果我是在提交表单期间用户权限为1的用户,则值将被更正并更新。 但是,如果我是一个没有价
$user\u privilege=1
用户可以查看/编辑所有字段
$user\u privilege=2
用户无法查看/编辑价格字段
然后用户可以查看/编辑表单
问题在于,如果产品具有以下值:
name = "example title"
description = "example description"
price = 56
如果我是在提交表单期间用户权限为1的用户,则值将被更正并更新。
但是,如果我是一个没有价格特权的用户,在提交期间,$price不会被提交,默认值为空
我想要的是,如果没有编辑价格的用户提交更改(名称和说明),则不得更新价格
最好的方法是什么?我不想编辑我的实际函数insert_product和edit_product(因为我的web应用程序上还有很多类似的场景)。。。
我想得到一个隐藏在jquery端的解决方案…比如使用type=“password”和readonly(如果我没有特权的话)
Price:我建议使用javascript(jQuery)隐藏潜在的敏感功能不是继续的方式-为了防止错误访问级别的用户在phpany中执行服务器端的无效更新,您只在客户端执行的操作当然不是一个解决方案。您需要验证脚本在服务器端收到的参数。仅仅因为您将输入字段设置为只读,并不意味着在提交表单之前,我不能通过开发工具在浏览器中编辑该字段。(如果我甚至使用“浏览器”向您的站点发出请求。)我建议使用javascript(jQuery)隐藏潜在的敏感功能不是继续进行的方式-为了防止错误访问级别的用户进行无效更新,请在服务器端执行您只在客户端执行的操作,这当然不是一个解决办法。您需要验证脚本在服务器端收到的参数。仅仅因为您将输入字段设置为只读,并不意味着在提交表单之前,我不能通过开发工具在浏览器中编辑该字段。(如果我甚至使用“浏览器”向您的网站提出请求。)
Price: <input type="<?php if ( $user_privilege == 2 ) { ?>password<?php } else { ?>text<?php } ?>" name="price" id="price" value="<?php echo $price; ?>" <?php if ( $user_privilege == 2 ) { ?>readonly<?php } ?>>
<?php
// GET USER PRIVILEGES
$user_privilege = get_user_privileges(); // return 1 for Admin with all permission. return 2 if not permission to views/edit PRICES
$action = "insert";
$id = "";
$name = "";
$description = "";
$price = "";
if ( isset($_GET['id']) ) {
$action = "edit";
$id = $_GET['id'];
$product = ge_product($id);
$name = $product['Name'];
$description = $product['Description'];
$price = $product['Price'];
}
if ( isset($_POST['action']) ) {
$name = isset($_POST['name']) ? $_POST['name'] : "";
$description = isset($_POST['description']) ? $_POST['description'] : "";
$price = isset($_POST['price']) ? $_POST['price'] : "";
if ( $_POST['action'] == "insert" ) {
$id = insert_product($name, $description, $price);
} else {
if ( $_POST['action'] == "edit" ) {
edit_product($id, $name, $description, $price);
}
}
}
?>
<form id="form" method="post" action="">
Product name: <input type="text" name="name" id="name" value="<?php echo $name; ?>">
<br>
Description: <input type="text" name="description" id="description" value="<?php echo $description; ?>">
<br>
<?php if ( $user_privilege != 2 ) { ?>
Price: <input type="text" name="price" id="price" value="<?php echo $price; ?>">
<br>
<?php } ?>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<input type="hidden" name="action" value="<?php echo $action; ?>">
<button type="submit"><?php echo $action; ?></button>
</form>