※ ChatGPTを利用し、要約された質問です(原文:mb_language("Japanese");でエラーが出ます)
PHP初心者のためのメール送信フォーム作成
2009/06/03 08:18
このQ&Aのポイント
mb_language関数でエラーが発生し、不明な関数として扱われる
mb_language関数は文字コードの設定に使用される関数で、PHPの拡張モジュールによって提供される
エラーが発生する原因は、mbstringモジュールがインストールされていないか、正しく設定されていないことが考えられる
mb_language("Japanese");でエラーが出ます
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_language.html
ここにも書かれているので構文自体にエラーが出るのはおかしいはずなんですけど。
どこに問題があるのでしょうか。
このソースコードが何故上手く通らないのか教えて頂けると大変助かります。
どうか宜しくお願い致します。
質問の原文を閉じる
質問の原文を表示する
お礼
再度アドバイスありがとうございます。 php504さんの言われるとおりにやったら上手くいきました。 でも、どうすればphp.iniの;extension=php_mbstring.dllって分かるのですかね。 あまりに凄くてただただ驚くばかりです。 ただ、今度は別のエラーが出ました。 補足欄に書きますので、もし余裕があればそれも解決してくれませんか。 厚かましいとは承知でお願いします。
補足
今回のエラーはメールアドレスにあるようです。 エラーコードを書きます。 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は正常に『エラー:送信に失敗しました』の表示はされていました。 余裕があれば、どうぞ宜しくお願い致します。