【发布时间】:2018-02-06 14:44:31
【问题描述】:
我做了一个表格,当我没有填写表格时,我得到了我想要的错误。 我犯的错误示例:
Error if you dont fill in anything
error if you fill in capital letters
所以现在如果你按下回车,你需要得到一个错误。它给了我错误,然后它插入了错误的空数据,它根本不应该插入数据。
这是我的代码:
<?php
// Connecting to database
require('config.php');
if (isset($_POST['companyname']) && isset($_POST['name']) && isset($_POST['surname']) && isset($_POST['email']) && isset($_POST['function']) && isset($_POST['password'])) {
// Values to insert
$companyname = mysqli_real_escape_string($con, $_POST['companyname']);
$name = mysqli_real_escape_string($con, $_POST['name']);
$surname = mysqli_real_escape_string($con, $_POST['surname']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$function = mysqli_real_escape_string($con, $_POST['function']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$companyname_error = "";
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// empty
if (empty($_POST['companyname'])) {
$companyname_error = "companyname is required!";
} else {
$companyname = test_input($_POST["companyname"]);
//check characters validation
if (!preg_match("/^[^A-Z]+$/", $companyname)) {
$companyname_error = "Only use small letters and white spaces!";
}
}
}
// voer insert uit
$sql = $con->prepare("INSERT INTO company (companyname) VALUES (?)");
$sql->bind_param('s', $companyname);
$sql->execute();
//RESULT
$result = $sql->get_result();
// id
$companyId = mysqli_insert_id($con);
//insert INTO
$sql = $con->prepare("INSERT INTO employee (name, surname, email, function, password, companyid) VALUES (?, ?, ?, ?, ?, ?)");
$sql->bind_param('ssssss', $name, $surname, $email, $function, $password, $companyId);
$sql->execute();
$result = $sql->get_result();
}
?>
HTML 表单:
<form class="form_register_page" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<div class="form-group">
<label class="register_headers">full name</label> <input class="form-control" id="name" name="name" placeholder="Enter your full name" type="text">
</div>
<div class="form-group">
<label class="register_headers">Full last name</label> <input class="form-control" id="lastname" name="surname" placeholder="Enter your last name" type="text">
</div>
<div class="form-group">
<label class="register_headers">company name</label> <input class="form-control" id="company" name="companyname" placeholder="Enter your company" type="text">
<span class="error">* <?php echo $companyname_error;?></span>
</div>
<div class="form-group">
<label class="register_headers">function</label> <input class="form-control" id="function" name="function" placeholder="Enter your function" type="text">
</div>
<div class="form-group">
<label class="register_headers">E-Mail adress</label> <input class="form-control" id="email" name="email" placeholder="Enter your E-Mail adress" type="text">
</div>
<div class="form-group">
<label class="register_headers">Password</label> <input class="form-control" id="password" name="password" placeholder="Enter your password" type="password">
</div>
<div class="form-group">
<div class="form-check">
<label class="form-check-label"><input class="form-check-input" type="checkbox"> I agree all statements in <b>terms of service</b></label>
</div>
</div><button class="click_more" type="submit">Register</button>
<span class="error">
<?php
echo $companyname_error;
?>
</span>
</form>
【问题讨论】:
-
test_input()不要使用那个。 -
我做了清晰的代码图片刷新一下
-
mysqli_real_escape_string()两者都不要使用;您已经在使用准备好的语句,并且可能弊大于利。 -
你能发布你的html表单吗?
-
是的,我仍然会尝试解决这个stackoverflow;(
标签: php mysql database forms post