- 締切済み
define定義について
■kconf.php <?php $script_neme = "sendmail.php"; ?> ■mail.php <?php require_once("conf.php"); $form = <<<EOM {$setcomments} <form action="{$script_name}" method="post"> ・ ・ ・ ・ EOM; ?> ↓↓↓↓ 以下のように定義すると フォームのソースが <form action="{SENDMAIL}" method="post">のままで送信できません。 $による定数定義ではうまくいくのですがどうしてでしょか? アドバイス下さい。 ■kconf.php <?php define("SENDMAIL", "sendmail.php"); ?> ■mail.php <?php require_once("conf.php"); $form = <<<EOM {$setcomments} <form action="{SENDMAIL}" method="post"> ・ ・ ・ ・ EOM; ?>
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- se-nabe
- ベストアンサー率34% (31/91)
NO.1さんもおっしゃっていましたが、 ヒアドキュメントで定数はパースしません。 printfなどで代替するなど検討なさってはいかがでしょうか? このとおりです。 もしどうしてもヒアドキュメントでやるなら、 一回変数に入れ直してから使うというのはいかがですか? require_once("conf.php"); $mail = SENDMAIL; $form = <<<AAA <from action= "{$mail}" mehod="post"> AAA; のような感じ、または <?php require_once("conf.php"); ?> <form action="<?= SEDMAL?>" method="post"> こんな感じでヒアドキュメントを使わない、 なんて手もあると思います。 あと、付け足すなら、 説明のファイル名は■kconf.php になっていますがrequire_onceしているファイルは conf.phpになっています。 パスが違うと定数もってこれないというか、エラー出しちゃいますから 気をつけましょう。 あと $script_neme = "sendmail.php"; これは変数ですね。 私もまだ勉強中の身ですので、アドバイスとさせていただきます。 間違っていたらすいません
- yambejp
- ベストアンサー率51% (3827/7415)
ヒアドキュメントで定数はパースしません。 printfなどで代替するなど検討なさってはいかがでしょうか? <?php define("TEST", "hoge"); $str=<<<eof test %s test eof; printf($str,TEST); ?>