注意:未定义的索引

Ori*_*yes 3 php mysql

我有一个可以设置密码保护的复选框 -

<p><strong><label for="password">Password protect?</label></strong> <input type="checkbox" name="password" id="password" value="1" /></p>
Run Code Online (Sandbox Code Playgroud)

我的Php试图发布

 $password = htmlspecialchars(strip_tags($_POST['password']));
Run Code Online (Sandbox Code Playgroud)

我得到未定义的索引错误.

现在,如果我首先尝试检查密码是否已设置,我会得到相同的错误 -

$sql = "INSERT INTO blog (timestamp,title,entry,password) VALUES ('$timestamp','$title','$entry','$password')";

$result = mysql_query($sql) or print("Can't insert into table blog.<br />" . $sql . "<br />" . mysql_error());
Run Code Online (Sandbox Code Playgroud)

我如何解决它?我是否必须为标题文本框等所有字段执行此操作?

Tom*_*kas 5

为什么要剥离标签并转义布尔值?你可以这样做:

$password = (isset($_POST['password']) && $_POST['password'] == 1) ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)

要么:

$password = isset($_POST['password']) ? (bool) $_POST['password'] : 0;
Run Code Online (Sandbox Code Playgroud)