PHPでメールフォームを作っているのですが、

urlencodeとurldecodeの使い方がわかりません。
以下、test10.htmlとtest10.phpを書きなおしていただけると助かります。
例:
1.twitterの新規アカウント登録時に表示されたurlです
メールアドレスなど個人情報をフォームから送信します
https://***.com/signup?mail=xxxxx&commit=% …
xxxxxはダミーです。
2.アカウントを作成 ボタンをクリックするフォームが表示される。
上記1.のようなURLをIEのアドレスバーに表示させる。
*↑が依頼内容です。

---test10.html
<html>
<head>
<title>form</title>
</head><body>
<p>お好きなモノをお選びください。</p>
<form name="form1" method="post" action="test10.php">
<INPUT type=checkbox value="A" name=id[] >A<BR>
<INPUT type=checkbox value="B" name=id[] >B<BR>
<INPUT type=test name="mail" ><BR>
<input type="submit" name="Submit" value="送信">
</form>
</body>
</html>

---test10.php
<?php
$body = "";
foreach ( $_POST['id'] as $value ) {
$body = $body.$value."\r\n";
}
$s_mail = $_POST['mail'];
mail ($s_mail,"件名",$body,"From: k**@**.ne.jp");
?>

回答の条件
  • 1人2回まで
  • 登録:2010/10/29 09:26:04
  • 終了:2010/10/31 19:00:11

ベストアンサー

id:tasklight No.3

tasklight回答回数323ベストアンサー獲得回数402010/10/29 16:56:24

ポイント100pt

関数urlencodeとurldecodeとご質問の内容が関連するのかどうかがよく分かりません。

依頼内容を反映させると、以下のようになります。

---test10.html
<html>
<head>
<title>form</title>
</head><body>
<p>お好きなモノをお選びください。</p>
<form name="form1" method="get" action="test10.php">
<INPUT type=checkbox value="A" name=id[] >A<BR>
<INPUT type=checkbox value="B" name=id[] >B<BR>
<INPUT type=test name="mail" ><BR>
<input type="submit" name="Submit" value="送信">
</form>
</body>
</html>

---test10.php; UTF-8でセーブしてください
<?php
mb_internal_encoding("utf-8")
mb_language("ja");
$body = "";
foreach ($_GET['id'] as $value) {
    $value = mb_convert_encoding($value, 'utf-8', 'auto');
    $body = $body . $value . "\n";
}
$s_mail = $_GET['mail'];
mb_send_mail($s_mail, "件名", $body, "From: k**@**.ne.jp");
?>
id:kohhi

できました。

ありがとうございました。

2010/10/31 18:58:49

その他の回答(2件)

id:a-kuma3 No.1

a-kuma3回答回数4596ベストアンサー獲得回数19352010/10/29 12:22:29

ポイント27pt

URL には使えない文字があります。

でも、GET のパラメータなど、使えない文字を送りたい時があるので、その文字を表現するための規則があります。

例えば、空白は '+' にする、とか。

任意の文字列 → URL で使える表現、に変換するのが urlencode です。

逆に、URL 表現 → 元の文字列、に変化するのが urldecode です。


質問中で、php のコードでは mail 関数を使ってて、やりたいことには「IE のアドレスバーに...」とあって、いまいち分かってませんが、フォームで送った URL を入力された通りに受け取りたい、ということであれば、

$url = urldecode($_POST[ URLが入る変数 ])

という感じです。

id:niwa-mikiho No.2

niwa-mikiho回答回数508ベストアンサー獲得回数382010/10/29 10:07:06

ポイント27pt

PHP 使ったことありませんが、、、


$body = "";

foreach ( $_POST['id'] as $value ) {

$body = $body.$value."\r\n";

}

$body = urlencode($body);

$subject = urlencode($subject);

$s_mail = $_POST['mail'];

mail ($s_mail, $subject, $body, "From: k**@**.ne.jp");

?>


でどうでしょうか?

URL エンコード とは 「愛」を 「%88%A4」 のようにする事。

URL デコード とは 「%88%A4」 を 「愛」 と変換することです。

id:tasklight No.3

tasklight回答回数323ベストアンサー獲得回数402010/10/29 16:56:24ここでベストアンサー

ポイント100pt

関数urlencodeとurldecodeとご質問の内容が関連するのかどうかがよく分かりません。

依頼内容を反映させると、以下のようになります。

---test10.html
<html>
<head>
<title>form</title>
</head><body>
<p>お好きなモノをお選びください。</p>
<form name="form1" method="get" action="test10.php">
<INPUT type=checkbox value="A" name=id[] >A<BR>
<INPUT type=checkbox value="B" name=id[] >B<BR>
<INPUT type=test name="mail" ><BR>
<input type="submit" name="Submit" value="送信">
</form>
</body>
</html>

---test10.php; UTF-8でセーブしてください
<?php
mb_internal_encoding("utf-8")
mb_language("ja");
$body = "";
foreach ($_GET['id'] as $value) {
    $value = mb_convert_encoding($value, 'utf-8', 'auto');
    $body = $body . $value . "\n";
}
$s_mail = $_GET['mail'];
mb_send_mail($s_mail, "件名", $body, "From: k**@**.ne.jp");
?>
id:kohhi

できました。

ありがとうございました。

2010/10/31 18:58:49
  • id:rouge_2008
    画面遷移をどのようにしたいのでしょう?
    『フォーム画面(入力して「送信」ボタンクリック)→確認画面【URLにパラメータ表示】(「アカウント作成」ボタンクリック)→登録完了画面【メール送信】』でしょうか?
    ※POSTではなく、GETで渡すとURL欄にパラメータが表示されます。

    http://nyx.pu1.net/practice/external_var/

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません