0

ここで述べたように、HTML5のrequired属性は Safari では機能しません。必須フィールドが入力されているかどうかを確認する PHP があります。ユーザーがフォーム (お問い合わせタイプのフォーム) を送信する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 に答える