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

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

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

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

解決済

3回答

653閲覧

md_send_mailで"や'の囲いエラー

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2020/03/27 04:12

編集2020/03/27 04:15

前提・実現したいこと

サイトからメールを送信させるときに発生するエラーの修正

発生している問題・エラーメッセージ

Parse error: syntax error, unexpected ''$_POST["name"]'' (T_CONSTANT_ENCAPSED_STRING) in C:\xampp\htdocs\clane\online\mypage\set.php on line 20

該当のソースコード

php

1 <?php 2 //mail 送信 3 mb_language("Japanese"); 4 mb_internal_encoding("UTF-8"); 5 $to = $_GET['mail']; 6 $title = 発送依頼確認メール|CLANESTARONLINE; 7 $content = 発送依頼を承りました。n\発送情報をご確認ください。\nお名前\n'$_POST["name"]'\n連絡用メールアドレス\n'$_POST["mail"]'\n郵便番号\n'$_POST["zip1"]'-'$_POST["zip2"]'\n住所\n'$_POST["address"]'\n電話番号\n'$_POST["tel"]'\n発送時間帯\n'$_POST["hassouziki"]''$_POST["hassoutime"]'時\n送料\n'$_POST["souryou"]'; 8 if(mb_send_mail($to, $title, $content)){ 9 echo "発送依頼を承りました。"; 10 } else { 11 echo "発送依頼に必要な情報が在りません。"; 12 }; 13 //運営にメール送信 14 //mail 送信 15 mb_language("Japanese"); 16 mb_internal_encoding("UTF-8"); 17 $content = 発送依頼を受信しました。; 18 mb_send_mail(hogehoge@gmail.com, 発送依頼を受信, $content) 19//実際はhogehoge@mail.comでは無い別のメールアドレスでプログラムを書いています。 20 ?> 21

試したこと

"の付ける位置や'の位置を変更してみた。

補足情報(FW/ツールのバージョンなど)

localhost
PHP
宜しければご回答よろしくお願いします。

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

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

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

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

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

m.ts10806

2020/03/27 04:30

そもそもその前に文字列がクォートで囲まれてないのですけど、これ本当に実際のコードですか? クォート云々は文字列の基礎部分なので、send_mail関係ないですよ。
退会済みユーザー

退会済みユーザー

2020/03/27 04:33

実際のコードです。 このコードを書いて実行した際に本文のエラーが発生しました。 send_mailは要らないんですか?
m.ts10806

2020/03/27 04:37

要らないではなくエラーとは直接関係ないと言ってます(send_mail特有の問題ではない)。 PHPの文字列の扱い方の基本部分でつまずいてます。
guest

回答3

0

文字列は、文字列の前後を '"で囲う必要があります。

変数と文字列や文字列と文字列は、. で、つなぎます。

文字列演算子

投稿2020/03/27 04:36

編集2020/03/27 04:37
CHERRY

総合スコア25218

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

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

0

三点ほど間違いがあります。
$contentなどの定義の仕方が主なエラーの原因です。

  1. $content文字列とするものが逆です。

ただの文字列を変数として、変数をただの文字列として扱ってしまってます。
(一番最初の'の位置が間違ってるため、後の定義が全ておかしくなっている)
そして、文字列とすべき部分に対して、クォーテーションが使われていません。
0. PHPにて文字列連結をするには、.演算子を使います。
0. PHPの場合、文字列内で\nを改行コードとして扱うには、"にする必要がある。

よって、下記であればひとまず動くかと。

php

1// 前行は省略 2// 文字列として定義されていないので、クォーテーションを入れる。 3$title = '発送依頼確認メール|CLANESTARONLINE'; 4// 発送依頼の先頭に'ないし"が抜けていたのが間違いの原因です。 5$content = "発送依頼を承りました。\n発送情報をご確認ください。\nお名前\n" . $_POST["name"] . "\n連絡用メールアドレス\n" . $_POST["mail"] . "\n郵便番号\n" . $_POST["zip1"] . "-" . $_POST["zip2"] . "\n住所\n" . $_POST["address"] . "\n電話番号\n" . $_POST["tel"] . "\n発送時間帯\n" . $_POST["hassouziki"] . $_POST["hassoutime"] . "時\n送料\n" . $_POST["souryou"]; // 最後は変数のため、'はいらない 6 7// 間行は省略 8// 下記の文字列の部分を文字列としないとだめ 9$content = "発送依頼を受信しました。"; 10mb_send_mail("hogehoge@gmail.com", "発送依頼を受信", $content)

ただし、書き方的に、
$contentの定義箇所は、てきせん、コード上で項目ごとに改行を入れたりした方がいいかと思います。
また、定義の仕方もいくつかありますので、PHP メール文 作成などのキーワードで探して、研究されるといいかと思います。

また、mb_send_mailにそのまま変数の内容を突っ込むのは、セキュリティ的にも、構文的にもかなりよろしくないと思いますので、バリデーションを挟んだりなどするべきかと思います。
(今は練習の段階なら、本番や仕事にするものなのであれば必須なんだ、と覚えとくといいかと)

投稿2020/03/27 04:42

編集2020/03/27 05:13
miyabi_takatsuk

総合スコア9555

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

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

m.ts10806

2020/03/27 04:59 編集

>よって、下記が正解となります。 言いきるのは難しいですね。幾らでも書き方はあるので。 ひとまず、こちらにぶら下がりますが、変に改行コード書きまくると可読性悪いので私ならヒアドキュメントにして変数は{}で囲います。直感的に見たい。 改行コード書く版でもコードの改行ないのは見づらいから適宜改行入れたいですね $content = "発送依頼を承りました。\n". "発送情報をご確認ください。\n". "お名前\n" . $_POST["name"] . "\n". "連絡用メールアドレス\n" . $_POST["mail"] . "\n". "郵便番号\n" . $_POST["zip1"] . "-" . $_POST["zip2"] . "\n. "住所\n" . $_POST["address"] . "\n". "電話番号\n" . $_POST["tel"] . "\n". "発送時間帯\n" . $_POST["hassouziki"] . $_POST["hassoutime"] . "時\n". "送料\n" . $_POST["souryou"]; ただ、入力値そのまま突っ込んで送信してるのはさすがにNGですけどね。
miyabi_takatsuk

2020/03/27 04:57

たしかに・・・。 改行入ってないからこそ、質問者さん自身混乱した可能性もありますしね。 ちょっと言い方変えてみます。
m.ts10806

2020/03/27 05:07

そういえば、その前の$titleでもエラーでないんですかね。初めて見ました。CLANESTARONLINE 調べてもなんも出てこない
miyabi_takatsuk

2020/03/27 05:10

あ、見落としてた・・・。 どうなんですかね。 まさか、全角文字変数とかできる・・・わけはないとは思いますが。。。
退会済みユーザー

退会済みユーザー

2020/03/27 05:27

ヒアドキュメント警察案件ですな :-)
miyabi_takatsuk

2020/03/27 05:29

ほんと、初学者殺しですよね、ヒアドキュメントは。 しかも言語によって定義の仕方かなりバリエーションあるし。
guest

0

ベストアンサー

クォートの位置を変えた

投稿2021/11/28 06:42

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問