如上所述here,HTML5中的required
属性在Safari中不起作用。我有PHP检查是否填写了必填字段。当用户提交表单(contact-us类型表单)时,action=""
设置为同一页面,以便PHP运行。它会向电子邮件发送信息并重定向到主页(我告诉用户在页面底部)。
但是,我听说人们可以更改页面的HTML而不需要字段。虽然表单只是一个联系表单,并且没有理由让任何人经历修改代码的麻烦,但我对Web开发和编程比较陌生,而且我想知道如何防止这种情况发生。我将来的项目工作需要这么多的安全性。
所以,无论如何,如果没有填写所需信息,PHP成功 在没有所需信息后,我如何使用PHP保持在同一页面?我知道我可以使用JavaScript,而且我可能除了PHP之外,但是因为它们可以关闭它,所以它并不完全安全。同样,我知道我的情况并不需要这么多的安全性,但对我来说这对初学者来说是个好习惯。这是我到目前为止所做的:
<?php
if (isset($_POST['email']) && isset($_POST['address']) && isset($_POST['floors'])) {
$name = $_POST['name'];
$lotSize = $_POST['lotSize'];
$lotSize2 = $_POST['lotSize2'];
$age = $_POST['age'];
$taxes = $_POST['taxes'];
$notes = $_POST['notes'];
$email = $_POST['email'];
$address = $_POST['address'];
$floors = $_POST['floors'];
$bedrooms = $_POST['bedrooms'];
$bathroomsFull = $_POST['bathroomsFull'];
$bathroomsHalf = $_POST['bathroomsHalf'];
if (isset($_POST['basement'])) {
$basement = "Yes";
} else {
$basement = "No";
}
if (!(empty($email) && empty($address) && empty($floors) && is_numeric($floors))) {
if ((strlen($name) < 101) && (strlen($email) < 255) && (strlen($address) < 51) && (strlen($lotSize) < 8) && (strlen($floors) < 4) && (strlen($age) < 4) && (strlen($taxes) < 8) && (strlen($notes) < 481)) {
$message = "You have received information about a listing!<hr/><br/>
<table style='border:1px solid black;padding:3px'>
<tr style='padding:5px'><td><strong>Name:</strong></td><td>" . $name . "</td></tr>
<tr style='padding:5px'><td><strong>Email:</strong></td><td>" . $email . "</td></tr>
<tr style='padding:5px'><td><strong>Address:</strong></td><td>" . $address . "</td></tr>
<tr style='padding:5px'><td><strong>Lot size:</strong></td><td>" . $lotSize . " × " . $lotSize2 . " sq. ft. (" . ($lotSize*$lotSize2) . " sq. ft.)</td></tr>
<tr style='padding:5px'><td><strong>Floors:</strong></td><td>" . $floors . "</td></tr>
<tr style='padding:5px'><td><strong>Bedrooms:</strong></td><td>" . $bedrooms . "</td></tr>
<tr style='padding:5px'><td><strong>Full Baths:</strong></td><td>" . $bathroomsFull . "</td></tr>
<tr style='padding:5px'><td><strong>Half Baths:</strong></td><td>" . $bathroomsHalf . "</td></tr>
<tr style='padding:5px'><td><strong>House Age:</strong></td><td>" . $age . " years</td></tr>
<tr style='padding:5px'><td><strong>Taxes:</strong></td><td>$" . $taxes . " / Yr.</td></tr>
<tr style='padding:5px'><td><strong>Basement:</strong></td><td>" . $basement . "</td></tr>
<tr style='padding:5px'><td><strong>Notes:</strong></td><td>" . $notes . "</td></tr>";
mail("****@****", "Listing Inquiry", $message, "Content-Type: text/html; charset=ISO-8859-1\r\n");
header('Location: sellRedirect.php');
}
}
}
?>
谢谢!
答案 0 :(得分:0)
要检查字段是否已发送,您应使用isset()
功能。
例如:
if(isset($_POST['name'])) {
// The field has been sent
} else {
die('Something is wrong!');
}