最近我使用HTML,CSS和JavaScript构建了一个表单。然后我输入了将表单中输入的数据发送到我的数据库所需的PHP。在我完成之后,我认为它是必要的工作,当我执行代码时,我最终得到一个空白页。形式和一切都消失了。这是我的PHP代码:
<?php
require("$_SERVER[DOCUMENT_ROOT]/connect.php");
$email = $username = $type = $question = "";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if(!empty($_POST))
{
if(isset($_POST["email"], $_POST["username"], $_POST["type"], $_POST["question"])
{
$email = test_input($_POST["email"]);
$username = test_input($_POST["username"]);
$type = test_input($_POST["type"]);
$question = test_input($_POST["question"]);
$premium = ($_POST["premium"]);
$member = $_POST["member"];
$terms = $_POST["terms"];
if ($member != "NO")
{
$member = "YES";
}
}
if(!empty($email) && !empty($username) && !empty($type) && !empty($question) && !empty($terms))
{
$insert = $db->prepare("INSERT INTO QuestionSubmission (Email, Username, Type, Question, Member, Premium, Date) VALUES (?, ?, ?, ?, ?, ?, NOW())");
$insert->bind_param("ssssss", $email, $username, $type, $question, $member, $premium);
if($insert->execute())
{
header("Location: landing.php");
die();
}
}
}
}
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
&#34;成员&#34; part是一个复选框,用户可以选择成为其成员。它最初是未经检查的,我已经设置了一个&#34; NO&#34;为了那个原因。此外,还有一个隐藏的复选框已经检查,其值为NO ...这是&#34; premium&#34;复选框。最后,有一个用于同意条款的复选框。这最初是未选中的,但用户必须检查它,以便它不会为空并且表单要处理。
请您解释一下我要做什么才能使我的表格正常运作?
此外,&#34;要求(&#34; $ _ SERVER [DOCUMENT_ROOT] /connect.php"); &#34; part是我与数据库代码的连接所在的位置。此代码和表单代码位于同一页面中。
答案 0 :(得分:1)
将require_once $_SERVER[DOCUMENT_ROOT]."/connect.php");
替换为$_SERVER
,您未使用变量 - error_log
无法像您一样使用它。这就是为什么你得到一个死亡的空白页面#34;如果你检查if(!empty($_POST))
你发现它有语法错误,那就是原因。
此外,您正在检查if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if(!empty($_POST))
{
- 这可能是任何POST表单。您应该删除此代码
die();
当您检查输入是否设置在上面的代码下方时。
最后请注意,当您使用exit;
时,应使用die()
代替exit;
。他们真的做同样的事情,但using System.Linq;
的使用更多地用于错误检查,例如&#34;脚本不能再运行 - 现在死!&#34;,而{{1} }更像是&#34;我想停止脚本现在运行,我已经完成了 - 谢谢!&#34;。
答案 1 :(得分:0)
通常,在表单页面中包含处理代码会更容易。这样,如果您遇到错误,您可以:
pextrw
属性大致看起来像这样:
value="…"
为了便于管理,您可以将上面的PHP代码放在一个单独的文件中。
上面的示例问题是,虽然您在成功时会重定向到新页面,但您不会去其他地方。
如果您想使用单独的处理脚本执行此操作,则需要在失败时重定向回原始表单。但是,您会发现持续存在的旧数据更难以这样做。