我有一个更新表单,用户可以在其中更新其信息,但如果某些信息已经有值,则无法更新某些信息。
根据我的理解,你必须将PHP代码放在表单标签之外,那么表单如何知道数据库字段是否有值?这是否可以在下面猜测它不会
<form>
<?php
if (empty($user_data['fieldName'])) {
echo '<label>field name</label>
<input type="text" name="fieldName">';
}
?>
</form>
有没有人知道解决这个问题的方法?或者如何在更新区域中显示字段之前检查?
答案 0 :(得分:1)
这部分代码是正确的,在数组$ user_data中分配用户数据时可能会出现问题。
另一种方法是简单地禁用输入文本,这样您就可以向用户显示信息而无需让他进行更改。
<form>
<?php
$disabled = "";
if (empty($user_data['fieldName'])) {
$disabled = 'disabled="disabled"'
} ?>
<label>field name</label>
<input type="text" name="fieldName" <?php echo $disabled; ?>/>
</form>
答案 1 :(得分:0)
当然你可以这样做,但如果不存在更新,你应该检查服务器
同样最可读的方法是使用像这样的替代php语法
<form>
<?php if (empty($user_data['fieldName'])): ?>
<label>field name</label>
<input type="text" name="fieldName">
<?php endif; ?>
</form>
以这种方式你可以看到你的HTML代码的颜色
看到这个链接, Alternative php syntax 该文档适用于codeigniter但适用于干净的PHP
抱歉我的英文不好:)
答案 2 :(得分:0)
如评论中所述,您可以将PHP放在*.php
文件中的任何位置,只要它包含在正确的开始和结束标记中即可。
那就是说,这是一个双面的过程:
在表单中我建议简单地禁用输入,因此显示数据,但不可修改:
<form>
<label>field name</label>
<input type="text" value="<?php echo addslashes($user_data['fieldName']) ?>" name="fieldName" <?php if(!empty($user_data['fieldName'])) { echo 'disabled="disabled"; } ?> />
</form>
<?php /* Off the top of my head I can not remember how exactly to escape this
form value, it may be `htmlspecialchars`, but it eludes me in the immediate
moment. Sorry. */ ?>
在服务器端,您处理表单发布数据时,您需要仔细检查是否有人没有伪造数据:
if(!empty($user_data['fieldName']) && !empty($_POST['fieldName'])) {
unset($_POST['fieldName']);
}
这样可以避免人们修改客户端上的表单结构,从而将数据伪造到系统中。你应该总是做类似的检查。
答案 3 :(得分:0)
你应该有一个演示代码,如下所示:
<form>
<label>field name</label>
<input type="text" name="fieldName" <?=!empty($user_data['fieldName'])?'disabled="disabled"':''?>>
</form>
要更新的脚本,您必须在更新前检查是否设置了值。