
PHP初心者です。
少し訂正があるため、それを書き直しました。
回答を頂く方には大変面倒をおかけする事になり、誠に申し訳ありませんが、2つのファイルのソースコードをまず見てもらえますか。
test.php
<?php
session_start();
?>
<html>
<head>
<title>test</title>
</head>
<body>
<h2>メールの送信</h2>
<?php
if ($_SESSION["address"]=="NG") {
unset($_SESSION["address"]);
print("E-Mailは必須入力です。"."<br>");
}
if ($_SESSION["subject"]=="NG") {
unset($_SESSION["subject"]);
print("タイトルは必須入力です。"."<br>");
}
if ($_SESSION["message"]=="NG") {
unset($_SESSION["message"]);
print("コメントは必須に入力です。"."<br>");
}
?>
<form action="./test1.php" method="post">
E-Mail:<br><input type="text" name="address"
<?php print("value='".$_SESSION["address"]."'")?> size="50"><br>
タイトル:<br><input type="text" name="subject"
<?php print("value='".$_SESSION["subject"]."'")?> size="50"><br>
コメント:<br><textarea name="message" rows="5" cols="35">
<?php print($_SESSION["message"])?></textarea><br><br>
<input type="submit" value="送信">
</form>
</body>
</html>
このページを表示させてどこかを空欄のままにしますが、エラー表示は出ません。
↑の部分はソースコード抜けや誤字で正常に表示できるようになりました。
では、全ての欄に入力してtest1.phpに移ります。
test1.php
<?php
session_start();
if(strlen($_POST["address"])==0){
$_SESSION["address"] = "NG";
}else{
$_SESSION["address"] = $_POST["address"];
}
if(strlen($_POST["subject"])==0){
$_SESSION["subject"] = "NG";
}else{
$_SESSION["subject"] = $_POST["subject"];
}
if(strlen($_POST["message"])==0){
$_SESSION["message"] = "NG";
}else{
$_SESSION["message"] = $_POST["message"];
}
if($_SESSION["address"]=="NG" or
$_SESSION["subject"]=="NG" or
$_SESSION["message"]=="NG"){
header("Location: test.php?".SID);
exit;
}
?>
<html>
<head><title>test1.php</title></head>
<body>
<?php
$address=$_POST["address"];
$subject=$_POST["subject"];
$message=$_POST["message"];
$header="From:xxx@xxxxx.xxx\nContent-Type:
text/plain;charset=iso-2022-jp";
mb_language("Japanese");
if(mb_send_mail($address,$subject
,mb_convert_encoding($message,"JIS","SJIS"),$header)){
print("送信完了!");
}else{
print("エラー:送信に失敗しました");
}
?>
</body>
</html>
問題はここです。
移動前にmb_language("Japanese");の部分でエラー表示されます。
この構文がどうしてもエラーになります。
エラー文をここで書きます。
Fatal error: Call to undefined function mb_language() in C:\Apache2\htdocs\sample18_1.php on line 42
それで、構文をググって見ましたが、こういうサイトを見つけました。
http://lib.stwing.jp/archives/2005/12/phpmb_lang …
ここにも書かれているので構文自体にエラーが出るのはおかしいはずなんですけど。
どこに問題があるのでしょうか。
このソースコードが何故上手く通らないのか教えて頂けると大変助かります。
どうか宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
よく見たら
C:\Apache2
と書いてありますね
Windowsでしたらphp.iniで
;extension=php_mbstring.dll
と書いてあるところの先頭のセミコロンを削除してApacheを再起動したら使えるようになります。
この回答への補足
今回のエラーはメールアドレスにあるようです。
エラーコードを書きます。
Warning: mb_send_mail() [function.mb-send-mail]: SMTP server response: 550 Can not speak with you in C:\Apache2\htdocs\tes1.php on line 44
確かにここではxxx@xxxxx.xxxなので送信されません。
なので、自分のOutlook Expressのメールアドレスを書き込みました。
でも上記のエラーが出ました。
勿論、php.iniのSMTPの部分もlocalhostからそのメールアドレスに変更しています。
何がダメなのでしょうか。
後、test1.phpは正常に『エラー:送信に失敗しました』の表示はされていました。
余裕があれば、どうぞ宜しくお願い致します。
再度アドバイスありがとうございます。
php504さんの言われるとおりにやったら上手くいきました。
でも、どうすればphp.iniの;extension=php_mbstring.dllって分かるのですかね。
あまりに凄くてただただ驚くばかりです。
ただ、今度は別のエラーが出ました。
補足欄に書きますので、もし余裕があればそれも解決してくれませんか。
厚かましいとは承知でお願いします。
No.3
- 回答日時:
php.iniのSMTPにはメールアドレスではなくインターネット契約しているプロバイダのSMTPサーバを書きます
ただSMTP認証を行っているプロバイダでは使えません
わざわざ答えて頂き、感謝します。
>php.iniのSMTPにはメールアドレスではなくインターネット契約しているプロバイダのSMTPサーバを書きます
そうですね。自分もそういう設定をしてました。
でも、それに気付いたときには残念ながらphp504さんと行き違いになってしまいました。
ダメだったという事は、私のプロバイダであるBiglobeはSMTP認証を行っているプロバイダという事になるのですかね。
すいません、また質問になってしまいました。
php504さんのおかげで、最初のエラーはなくなりました。
それだけでも十分な回答を頂いたと言うべきですね。
3度にわたり、適切な回答を頂き、どうもありがとうございました。
No.1
- 回答日時:
PHPは設定条件により使える関数と使えない関数があります
お使いの環境では multibyte 関連の関数が使えない設定になっているようです
レンタルサーバであれば管理者に連絡を
自分のパソコンにインストールしてあるならOS等の詳細を補足してください
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pdflib /pdi の拡張関数が有効...
-
unexpected T_REQUIRE とは?
-
smartyについて
-
PHPのif文でその処理を途中で抜...
-
Subversionのリポジトリの削除
-
FTPコマンドでディレクトリごと...
-
.htaccessにphp_valueが使用できな
-
フォーム処理から戻ったページ...
-
inputタグでphpを呼び出す際、...
-
ftpでアップロードが出来ない
-
2つの画像ファイルが異なるファ...
-
*.php、*.php3、*.phtmlの違い
-
「クラス関数」「メンバ関数」...
-
ボタンのクリック数を合計保存...
-
makefile でファイルをコピーす...
-
拡張子php画像をjpg画像等に変...
-
ftp_getでローカルにファイルが...
-
urlの直接入力を防ぐには
-
JAVA内で複数のファイルを削除...
-
javascriptで切り替えて、php(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ImageCreate関数が undefined f...
-
マルチバイト関数
-
データベースへの接続について
-
Fatal error: マルチバイト文字...
-
includeでファイルが呼び出せない…
-
仮想フレームバッファXvfb上でf...
-
php5のフォーム
-
PHP PCアクセス制限
-
POSTした値を、別ページにもPOS...
-
marty3のvariableFilter
-
PHPとAPACHEのエラー「Warning:...
-
メール送信
-
UTF-8でsetcookieを使うには
-
たまに$_REQUESTの値が消える
-
php.iniの設定の仕方
-
sql文について質問です。エラー...
-
smartyについて
-
値の受け渡しが出来ない。
-
Pear::QuickFormの代わりにな...
-
PHP認証がProxy越しだと通らな...
おすすめ情報