質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

1101閲覧

コンタクトフォームについて

fuyukixxx

総合スコア26

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/05/26 03:16

inputタグtextareaタグの名前とメールアドレスとお問い合わせの3項目を入力しないと送信できないようにしたいのですが、今のコードの状態だと何も値を打ち込まない状態で送信ボタンを押してもメールが送れてしまいます。やってみたことはsend.phpとゆうファイルの所にmail関数、isset関数を定義してissetの方に値があればtrue、なければfalthにしたいのですがうまく行きません。解決方法教えてもらえますでしょうか。

HTML

1コード 2<form action="send.php" method="POST"> 3 <div class="form-content pt-5"> 4 <div class="form-left "> 5 <div class="form-group"> 6 <input type="text" class="form-control" name="name" placeholder="名前"> 7 </div> 8 <div class="form-group mt-5"> 9 <input type="text" class="form-control" name="email" placeholder="メールアドレス"> 10 </div> 11 </div> 12 <div class="form-right"> 13 <div class="form-group"> 14 <textarea class="form-control" name="message" placeholder="お問い合わせ" rows="10"></textarea> 15 </div> 16 </div> 17 </div> 18 <p><input type="submit" name="submit" value="上記の内容で送信する" class="text-center" id="button"></p> 19 </form>

PHP

1コード<?php 2 3if (isset($_POST['submit'])) { 4 $name = $_POST['name']; 5 $emailFrom = $_POST['email']; 6 $message = $_POST['message']; 7 8 $mailTo = "example@example.com"; 9 $headers = "From: ".$emailFrom; 10 $txt ="You have received an e-mail from " .$name.".\n\n".$message; 11 12 if (mail($mailTo, $headers , $txt) && isset($mailTo, $headers , $txt)) { 13 echo "<h1>お問い合わせありがとうございます"." ".$name."様。折り返し<br>連絡いたしますので、今しばらくお待ちください。</h1>"; 14 15 } else { 16 echo "<h1 class='text-danger'>送信できませんでした。全項目ご入力ください。</h1>"; 17 18 } 19 20

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

if (mail($mailTo, $headers , $txt) && isset($mailTo, $headers , $txt))
この処理順は
mail($mailTo, $headers , $txt)を行ってからisset($mailTo, $headers , $txt)を行うので、逆にしてみたらいかがでしょう。

issetは空文字でもtrueになるのでemptyのほうがいいかも

投稿2020/05/26 03:25

編集2020/05/26 03:30
rururu3

総合スコア5545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rururu3

2020/05/26 03:36

$name = $_POST['name']; $emailFrom = $_POST['email']; $message = $_POST['message']; これらの変数が入っているかを見ないといけないですね…(isset($mailTo, $headers , $txt)の各変数は何かしらの文字列入ってるので意味がない)
fuyukixxx

2020/05/26 05:08

返信ありがとうございます。mailとisset逆にしましたが結果変わらず。emptyの方は引数を3つにするとエラーががでます。issetの変数を if (isset($name, $emailFrom, $message) && mail($mailTo, $headers , $txt)) でもメールが項目の方打たなくても送られてしまいます。
rururu3

2020/05/26 05:13

回答の方でissetの変数までちゃんと見てませんでしたコメントで記載したとおり $name, $emailFrom, $messageは処理で何かしらの文字列入ってるのは確実なので絶対にtrueですので無意味です。 $_POST['name']; $_POST['email']; $_POST['message'];が入ってるかをempty関数を使って調べてください。 https://www.php.net/manual/ja/function.empty.php をみてempty関数を理解していただければ&emptyの方は引数を3つにするとエラーががでる理由もわかるかと
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問