php-アマゾンウェブサーバーを使用してメールを送信すると、お問い合わせフォームに405が表示されます
htmlお問い合わせフォームを作成し、お問い合わせフォームがメールを送信できるようにPHPコードを追加しました。
アマゾンウェブサーバーにインデックスとPHPファイルを追加しましたが、これを取得しました
エラー405-このページへのアクセスに使用されるHTTP動詞は許可されていません。無効な方法(HTTP動詞)を使用してアクセスを試みたため、探しているページを表示できません。
送信ボタンをクリックしたとき。
基本的なものが不足していますか?実行する必要のある構成はありますか?
以下の私のコード
<form action="mail_handler.php" method="post" name="form" class="form-box"> <label for="name">Name</label><br> <input type="text" name="name" class="inp" placeholder="Enter Your Name" required><br> <label for="email">Email ID</label><br> <input type="email" name="email" class="inp" placeholder="Enter Your Email" required><br> <label for="phone">Phone</label><br> <input type="tel" name="phone" class="inp" placeholder="Enter Your Phone" required><br> <label for="message">Message</label><br> <textarea name="msg" class="msg-box" placeholder="Enter Your Message Here..." required></textarea><br> <input type="submit" name="submit" value="Send" class="sub-btn"> </form> <?php if(isset($_POST['submit'])){ $name=$_POST['name']; $email=$_POST['email']; $phone=$_POST['phone']; $msg=$_POST['msg']; $to='[email protected]'; $subject='Form Submission'; $message="Name :".$name."\n"."Phone :".$phone."\n"."Wrote the following :"."\n\n".$msg; $headers="From: ".$email; if(mail($to, $subject, $message, $headers)){ echo "<h1>Sent Successfully! Thank you"." ".$name.", We will contact you shortly!</h1>"; } else{ echo "Something went wrong!"; } } ?>
答え :
解決策:
フォームアクションは、目的のコードブロックではなく、外部ファイルを指します。 :D
<form action="mail_handler.php" method="post" name="form" class="form-box">
// action tag refers to a file in current directory, not the php below
これが意味するのは、コードがファイル「mail_handler.php」を開こうとしているのに、実際にはそこにないということです。エラー405は、アクションが欠落していることを示しているという点で、従来の404と似ています。
ほとんどの場合、 <?php
タグと?>
タグのすべてを新しいファイルに移動する必要があります。
PHPフォームのアクションを確認する方法の詳細については、この記事をお勧めします。あるいは、 CodecademyのPHPコース(無料)も確認することをお勧めします!
編集
次の行に問題がある可能性があります。
if(mail($to, $subject, $message, $headers))
ifステートメントを使用すると、戻り値は常にブール値(true / false)になります。ただし、
mail()
関数に関するW3Schoolの記事によると、「アドレスパラメータのハッシュ値を返します。失敗した場合はFALSEを返します」これが問題の原因である場合は、おそらく次のようなことをしたいと思うでしょう。
if(!mail($to, $subject, $message, $headers)){ echo "Something went wrong!"; // You know the only time its gone wrong is when it returns false. } else{ echo "<h1>Success message!</h1> // If it returns anything other than false, then its a success }
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。