我收到以下错误on line 8: Undefined index: privacy_policy
$privacy_policy = mysqli_real_escape_string($mysqli, $_POST['privacy_policy']);
我想知道如何解决此问题?
这是第8行。
$privacy_policy = mysqli_real_escape_string($mysqli, $_POST['privacy_policy']);
这是PHP。
if (isset($_POST['submitted'])) {
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT users.*
FROM users
WHERE user_id=3");
$privacy_policy = mysqli_real_escape_string($mysqli, $_POST['privacy_policy']);
if (mysqli_num_rows($dbc) == 0) {
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"INSERT INTO users (user_id, privacy_policy)
VALUES ('$user_id', '$privacy_policy')");
}
if ($dbc == TRUE) {
$dbc = mysqli_query($mysqli,"UPDATE users
SET privacy_policy = '$privacy_policy'
WHERE user_id = '$user_id'");
echo '<p class="changes-saved">Your changes have been saved!</p>';
}
if (!$dbc) {
print mysqli_error($mysqli);
return;
}
}
这是HTML。
<form method="post" action="index.php">
<fieldset>
<ul>
<li><input type="checkbox" name="privacy_policy" id="privacy_policy" value="yes" <?php if (isset($_POST['privacy_policy'])) { echo 'checked="checked"'; } else if($privacy_policy == "yes") { echo 'checked="checked"'; } ?> /></li>
<li><input type="submit" name="submit" value="Save Changes" class="save-button" />
<input type="hidden" name="submitted" value="true" />
<input type="submit" name="submit" value="Preview Changes" class="preview-changes-button" /></li>
</ul>
</fieldset>
</form>
答案 0 :(得分:4)
如果警告说$_POST['privacy_policy']
未定义,那么(几乎)无疑是真的。
您的隐私权政策值来自一个复选框,如果在您提交表单时取消选中该复选框,则$_POST
数组中不会有任何条目。如果在您提交表单时进行了检查,那么$_POST['privacy_policy']
中的值将为yes
。
在将$_POST['privacy_policy']
中的值分配给某个内容之前,请检查它是否已设置为isset
。这将阻止您的警告出现。
更新
我会处理一个未经检查的复选框,如下所示:
$privacy_policy = "no";
if(isset($_POST['privacy_policy']))
{
$privacy_policy = mysqli_real_escape_string($mysqli, $_POST['privacy_policy']);
}
答案 1 :(得分:1)
如果未选中“privacy_policy”复选框,请添加具有默认值的隐藏字段。然后$ _POST变量将包含一个值。选中该复选框后,它将覆盖隐藏字段的值(只要它跟在隐藏字段后面)。
<form method="post" action="index.php">
<!-- add a default value for the privacy_policy -->
<input type="hidden" name="privacy_policy" value="no"/>
<fieldset>
<ul>
<li><input type="checkbox" name="privacy_policy" id="privacy_policy" value="yes" <?php if($privacy_policy == "yes") { echo 'checked="checked"'; } ?> /></li>
<li><input type="submit" name="submit" value="Save Changes" class="save-button" />
<input type="hidden" name="submitted" value="true" />
<input type="submit" name="submit" value="Preview Changes" class="preview-changes-button" /></li>
</ul>
</fieldset>
</form>
编辑:
正如Matt Ellen也正确指出的那样,您可以查看使用$_POST['privacy_policy']
或isset()
设置array_key_exists()
并在PHP中设置默认值。
$privacy_policy = array_key_exists('privacy_policy', $_POST) ? $_POST['privacy_policy'] : false;