人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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");
?>

●質問者: kohhi
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:as BODY HTML HTTPS IE
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● a-kuma3
●27ポイント

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

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

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

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

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


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

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

という感じです。


2 ● niwa-mikiho
●27ポイント

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」 を 「愛」 と変換することです。


3 ● tasklight
●100ポイント ベストアンサー

関数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");
?>
◎質問者からの返答

できました。

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ