我正在尝试为在线投资组合创建一个消息表单,首先使用本地数据库,然后再进行切换。当我点击“提交”按钮时,它返回到index.php文件上的注册表单。我是基于较早的实践编写代码的,显然我做的并不正确,但是我仍然是PHP的初学者(此外,无用的大学课程让我无法专注于编码, .....在我不能只专注于编码方面发挥了重要作用。这使我回到索引页面上的注册表单,这表明我做错了。
来自index.php的表格:
<form action="includes/process.php" method="POST">
<p>First Name:</p>
<input type="text" id="first" name="first"> <p>Last Name:</p>
<input type="text" id="last" name="last">
<br>
<p>E-mail:</p>
<input type="text" id="email" name="email"> <br>
<p>Message:</p>
<textarea id="message" name="message" size="10000" rows="6" cols="50"></textarea><br><br>
<input type="submit" value="Send">
<input type="reset" value="Reset">
</form>
includes / db.php中的代码
<?php
$dbServername = "localhost";
$dbUsername = "root";
$dbPassword = "";
$dbName = "portfoliomessages";
$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);
includes / process.php的代码
<?php
if (isset($_POST['submit'])) {
include_once 'db.php';
$first = mysqli_real_escape_string($conn, $_POST["first"]);
$last = mysqli_real_escape_string($conn, $_POST["last"]);
$email = mysqli_real_escape_string($conn, $_POST["email"]);
$message = mysqli_real_escape_string($conn, $_POST["message"]);
//error handlers
//Check for empty fields
if( empty($first) || empty($last) || empty($email)|| empty($message) ) {
header("Location: ../index.php?index=empty");
exit();
} else {
//check if input characters are valid
if (!preg_match("/^[a-zA-Z]*$/", $first) || !preg_match("/^[a-zA-Z]*$/",
$last) ) {
header("Location: ../index.php?index=invalid");
exit();
} else {
//check if email is valid
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
header("Location: ../index.php?index=email");
exit();
} else {
//Insert message into database
$sql = "INSERT INTO newmessagesthirdattempt (first, last,
message, email) VALUES ('$first', '$last', '$message', '$email);";
mysqli_query($conn, $sql);
header("Location: ../success.php");
exit();
}
}
}
} else {
header("Location: ../index.php");
exit();
}
答案 0 :(得分:-1)
根据W3C,仅处理具有名称属性的输入。
在这里,您的提交缺少name属性。这就是if (isset($_POST['submit'])) {
不正确的原因。
您可以将名称属性添加到提交按钮或测试其他输入,例如“第一个”或“最后一个”。
另一种方法是将参数传递给您的过程文件:
<form action="includes/process.php?action=something" method="POST">
然后:
if (isset($_GET['action']) && $_GET['action']=='something') {
如果您的process.php文件得到了很多处理,则可以在此处轻松添加switch
。