0

如此处所述,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&nbsp;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&nbsp;Baths:</strong></td><td>" . $bathroomsFull . "</td></tr>
                    <tr style='padding:5px'><td><strong>Half&nbsp;Baths:</strong></td><td>" . $bathroomsHalf . "</td></tr>
                    <tr style='padding:5px'><td><strong>House&nbsp;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');
    }
}
}
?>

谢谢!

4

1 回答 1

0

要检查字段是否已发送,您应该使用isset()函数。例如:

if(isset($_POST['name'])) {
    // The field has been sent
} else {
    die('Something is wrong!');
}
于 2013-07-02T23:47:37.357 回答