• 締切済み

確認画面からデータを受け取る方法

hiddenには文字制限があるのでしょうか? 質問者:ninakko あるフォームに備考欄をつけました。 その内容を確認画面に表示。 その後確認画面がOKをおされた場合備考の内容を <form action="./index.php" method="post"> <input type="hidden" name="biko" value=<? echo $biko; ?>> でメール送信するモジュールへとばしています。 このとき、届いたメールに備考の内容が26文字しかありませんでした。 これはhiddenの文字の上限なのでしょうか? 解決方法もわかる方がいらっしゃったら教えてください。

みんなの回答

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.4

う~ん。。 悪いところはありませんし、私の環境で試してみると、上手く動きました。 また、No2の方の言われる特殊文字を混ぜてもうまくいきます。 さて、問題は何でしょう(^^; もうちょっと詳しいコードを書いたら(または、どこかにUPして、他の人が見られるようにしたら)いい回答が付くかも知れません。 現在の情報だけでは「何も問題がない」と言うのが答えですね。

すると、全ての回答が全文表示されます。
  • zzzzzz
  • ベストアンサー率61% (70/113)
回答No.3

hiddenに文字数制限はないはずです。思いついた原因を挙げておきます。 1.value属性の値が引用符で囲まれていない 通常、value="<? ... ?>"のように記述すると思われます。 引用符を省略できる場合もありますが、書いておいた方が無難です。 これについては参考URLを参照してください。 2.文字参照絡み $bikoに">"という文字が含まれている場合、inputタグの終端と解釈されてしまいますので、 $bikoの内容をエスケープする必要があります。 例えば、>を&gt;に、"を&quot;にします。

参考URL:
http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.2
すると、全ての回答が全文表示されます。
  • kirin_f
  • ベストアンサー率51% (44/85)
回答No.2

hiddenに文字数制限があるのかどうかはわからないですが、 26字ではないです。 もっと長い文字列を渡しても大丈夫だったことがあります。 その渡した文字列の27文字目は、何ですか? そこでひっかかってしまっているんじゃないでしょうか。 "'<>などの特殊文字なら、&gt;などに変換したほうがいいですよ。 ひっかかってしまうので。

すると、全ての回答が全文表示されます。
  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

こんばんは <?php $mode=$_GET[mode]; if($mode=="") {   print<<<EOF <form action=$_SERVER[PHP_SELF]?mode=test method=post> <input type=hidden name=biko value="あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろ"> <input type=submit value=go> EOF; }else if($mode=="test") {   $biko=$_POST[biko];   print $biko; } ?> これを実行すると、正常に$bikoを表示しました。 hiddenの限界ではなく、メールモジュール側に問題があるのだと思います

ninakko
質問者

補足

ありがとうございます。 よかったら何処を改善すればよいのか教えてください。 メールモジュールは以下のとおりです。 $mail_detail= "備考 :" . $biko; mail("$sendto_email",$mail_title,$mail_detail,"From: ***@****.com\nContent-Type: text/plain; charset=ISO-2022-JP");

すると、全ての回答が全文表示されます。

関連するQ&A

  • hiddenには文字制限があるのでしょうか?

    あるフォームに備考欄をつけました。 その内容を確認画面に表示。 その後確認画面がOKをおされた場合備考の内容を <form action="./index.php" method="post"> <input type="hidden" name="biko" value=<? echo $biko; ?>> でメール送信するモジュールへとばしています。 このとき、届いたメールに備考の内容が26文字しかありませんでした。 これはhiddenの文字の上限なのでしょうか? 解決方法もわかる方がいらっしゃったら教えてください。

  • PHP+HTMLの確認画面から入力画面に戻る際のデータ保持について質問

    PHP+HTMLの確認画面から入力画面に戻る際のデータ保持について質問致します。 1.入力→2.確認→3.実行の3ページを作成しましたが、 2.確認で入力した値が間違っていた場合、1.入力に戻って訂正する仕様です 私は2.確認の戻るボタンにjavaのhistory.back();を使ったのですが ブラウザやOSにより、戻った際にデータが保持されていない場合があるとの事だったので 他の方法がないかご教授下さい。サンプルコードを書いて頂くと助かります。 以下、作成したコード 1.入力画面(mail.html) <html> <body> <form action="chk.php" method="post"> 件名:<br> <input type="text" name="subject" size="30" value=""><br> 送信者名:<br> <input type="text" name="name" size="30" value=""><br> メールアドレス:<br> <input type="text" name="mail" size="30" value=""><br> 本文:<br> <textarea name="message" cols="30" rows="5"></textarea><br> <br> <input type="submit" value="確認する">&nbsp&nbsp<input type="reset" value="クリア"> </form> </body> </html> 2.確認画面(chk.php) <?php $name = $_POST["name"]; $message = $_POST["message"]; $subject = $_POST["subject"]; $mail = $_POST["mail"]; ?> <html> <body> <form action="send.php" method="post"> 件名:<?php echo $subject; ?><br> 送信者名:<?php echo $name; ?><br> メールアドレス:<?php echo $mail; ?><br> 本文:<?php echo $message; ?><br> <input type="submit" value="これでOK"> &nbsp&nbsp //下記の戻るボタンで戻るとデータ保持をするようにしたい。history.back以外で。 <input type="button" value="戻る" onclick="history.back();"> <input type="hidden" name="name" value="<?php echo $name; ?>"> <input type="hidden" name="message" value="<?php echo $message; ?>"> <input type="hidden" name="subject" value="<?php echo $subject; ?>"> <input type="hidden" name="mail" value="<?php echo $mail; ?>"> </form> </body> </html> 3.送信画面(send.php) <?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); $message = "名前:" . $_POST["name"] . "\n本文:" . $_POST["message"]; if (!mb_send_mail("hoge@example.com", $_POST["subject"], $message, "From: " . $_POST["mail"])) { exit("メールの送信に失敗しました。"); } ?> <html> <body> <p>メールが送信されました。</p> </body> </html> 初心者ですので、わかりやすい表記をお願い致します。

    • 締切済み
    • PHP
  • 特定の文字が文字化けします

    こんにちは。 とても困ってます。 例えば、phpで echo "<P><FORM ACTION=\"main.php\">"; echo "<METHOD=POST>"; echo "<INPUT TYPE=HIDDEN NAME=res VALUE=\str_request\">"; echo "<INPUT TYPE=HIDDEN NAME=action VALUE=post>"; echo "<TEXTAREA NAME=\"str\" ROWS=\"8\" COLS=\"50\"></TEXTAREA>"; echo "<INPUT TYPE=\"submit\" VALUE=\"send">"; echo "</METHOD></FORM></P>"; と記述して「send」ボタンを押下して文字列をPOSTした場合、 受け取った文字($str)の特定の文字が文字化けします。 特定の文字とは、「る」「れ」「ろ」などです。 どなたか原因がわかる方いらっしゃらないでしょうか?

    • 締切済み
    • PHP
  • 問い合わせフォームでの確認画面について

    phpで問い合わせフォームを作成しているのですが、修正ヵ所があれば問い合わせフォームの下に「戻る」ボタンだけを表示し、正確に入力されていれば「戻る」ボタンと「OK」ボタンを表示することができました。 しかし、問い合わせフォームの上に表示する、修正ヵ所があれば「入力内容に誤りがあります。※印の項目は必ずご記入ください。」、正確に入力されていれば「以下の内容で送信しますか?」を表示させることができません。 この場合、どのようなコードを、どの部分に記述したら良いのでしょうか? ちなみに、submit後のphpファイルのコードは以下となります。 かなり無駄が多いかもしれません。 <table class="table margin01" width="592" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="190" align="left" bgcolor="#FFF09D">お名前<span class="tabletext1"></span></td> <td> <?php $name=$_POST['name']; if($name=='') { echo'<FONT COLOR="#cc3333">※必ず入力してください。</FONT>';; } else { echo $name; } ?> </td> </tr> <tr> <td align="left" bgcolor="#FFF09D">メールアドレス<span class="tabletext1"></span></td> <td> <?php $mail=$_POST['mail']; if (!preg_match( '/^[a-z0-9][a-z0-9_\.\-]*@[a-z0-9][a-z0-9_\.\-]+[a-z]$/i', $mail)) { echo'<FONT COLOR="#cc3333">※正しいメールアドレスを指定してください。</FONT>';; }elseif($_POST['mail']!==$_POST['mail2']) { echo '<FONT COLOR="#cc3333">※確認用メールアドレスと一致していません。</FONT>';; }else{ echo $mail; } ?> </td> </tr> <tr> <td align="left" bgcolor="#FFF09D">メールアドレス(確認)<span class="tabletext1"></span></td> <td> <?php $mail2=$_POST['mail2']; if($mail2=='') { echo'<FONT COLOR="#cc3333">※必ず入力してください。</FONT>';; } else { echo $mail2; } ?> </td> </tr> <tr> <td align="left" bgcolor="#FFF09D">お問い合せ内容<span class="tabletext1"></span></td> <td> <?php $list=$_POST['list']; if($list=='お問い合せ内容をお選びください') { echo'お問い合せ内容をお選びください<FONT COLOR="#cc3333">&nbsp;※必ず入力してください。</FONT>';; } else { echo $list; } ?> </td> </tr> <tr> <td align="left" bgcolor="#FFF09D">内容<span class="tabletext1"></span></td> <td> <?php $content=$_POST['content']; if($content=='') { echo'<FONT COLOR="#cc3333">※必ず入力してください。</FONT>';; } else { echo $content; } ?> </td> </tr> </table> <?php if($name==''|| $mail==''|| $mail2==''|| $list==''|| $content=='') { echo'<form>'; echo'<p align="center" class="margin01"><input type="button" value="戻る" onclick="history.back()"</p>'; echo'</form>'; } elseif($_POST['mail']!==$_POST['mail2']) { echo'<form>'; echo'<p align="center" class="margin01"><input type="button" value="戻る" onclick="history.back()"</p>'; echo'</form>'; } elseif(!preg_match( '/^[a-z0-9][a-z0-9_\.\-]*@[a-z0-9][a-z0-9_\.\-]+[a-z]$/i', $mail)) { echo'<form>'; echo'<p align="center" class="margin01"><input type="button" value="戻る" onclick="history.back()"</p>'; echo'</form>'; } elseif($list=='お問い合せ内容をお選びください') { echo'<form>'; echo'<p align="center" class="margin01"><input type="button" value="戻る" onclick="history.back()"</p>'; echo'</form>'; } else { echo'<form method="post"action="thanks.php">'; echo'<input type="hidden" name="name" value="'.$name.'">'; echo'<input type="hidden" name="mail" value="'.$mail.'">'; echo'<input type="hidden" name="mail2" value="'.$mail2.'">'; echo'<input type="hidden" name="list" value="'.$list.'">'; echo'<input type="hidden" name="content" value="'.$content.'">'; echo'<p align="center" class="margin01"><input type="button"onclick="history.back()"value="戻る">'; echo'<input type="submit"value="OK"></p>'; echo'</form>'; } ?>

    • ベストアンサー
    • PHP
  • 確認画面で表示される商品名にリンクをつけるには!?

    よくショッピングカートとかで表示される確認画面で商品名は表示されるのですがこれをクリックして新しい画面(***.html)が出るようにするにはどうすればよいのでしょうか?よろしくお願いいたします。 ちなみに現在は下記のような感じになっています。 <form method=post action="../cart.asp"> <input type=hidden name="action" value="regist"> <input type=hidden name="goods" value"商品名"> <input type=hidden name="unit" value="100"> <input type=submit value="カゴへ"> </form>

    • ベストアンサー
    • CGI
  • ファイル間のデータの受け渡しについて hidden? session?

    1.php (フォームを表示) 2.php (入力内容の確認ページ) 3.php (最後のページ、送られた値を使用し、メール送信やデータベースに書き込むなどの処理をしたい。) とhiddenを使い、3つのファイルを作成しました。 ファイル"1.php" <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title></title> </head> <body> <form action="2.php" method="post"> <input type="text" name="data1" value="データその1"> <input type="hidden" name="data2" value="隠しデータ"> <input type="submit" name="" value="送信"> </form> </body> </html> ファイル"2.php" <?php echo "<h1>確認ページ</h1>"; echo $_POST[data1]."<BR>"; echo $_POST[data2]; print<<<_HOGE_ <form action="3.php" method="post"> <input type="hidden" name="data1" value="$_POST[data1]"> <input type="hidden" name="data2" value="$_POST[data2]"> <input type="submit" name="" value="送信"> </form> _HOGE_; ?> ファイル"3.php" <?php echo $_POST[data1]."<BR>"; echo $_POST[data2]; ?> 2.phpの(入力内容の確認ページ)を見ているときに、他の人が2.phpにアクセスして入力内容を盗み見る事は出来るのでしょうか? (2.phpに直接アクセス出来ないように、リダイレクト処理はするつもりですが。) 2.phpから3.phpに値を渡す場合、このようなhiddenの使い方は間違っていますか? セッションを使った方が良いのでしょうか?

    • ベストアンサー
    • PHP
  • swich文を使ったメールフォームの作成について。

    <?php // Error indicate. $error_msg = '未入力...'; /*--- Form mode ---*/ $mode = isset($_POST["mode"]) ? htmlspecialchars($_POST["mode"]) : "input"; /*--- 入力項目 ---*/ $mail = (isset($_POST["mail"]) && $_POST["mail"]!=$error_msg) ? htmlspecialchars($_POST["mail"]) : ""; switch ($mode) { /*--- 入力画面 ---*/ case 'input': echo' <html> <body> <form enctype="multipart/form-data" action="inquiry.php" method="post"> <input type="hidden" name="mode" value="check" /> <div>* メールアドレス<input name="mail" type="text" value="'.$mail.'" size="" /></div> <div><input type="submit" value="確認する" /></div> </form> </body> </html> '; break; /*--- 入力チェック画面 ---*/ case 'check': //----------------------------------------- // 入力チェック。 //----------------------------------------- //User Mail. if ($mail == "") {//未入力処理。 $mail ='<font color="red">'.$error_msg.'</font>'; $error = 1; } else if ( ereg("^[^@]+@[^.]+\..+", $mail) == false ){//書式処理。 $mail ='メールアドレスの書式が正しくありません。'; $error = 1; } else { $mail = $_POST["mail"]; } if ($mail != "") {// 全角を半角に。 $mail = mb_convert_kana($_POST["mail"], "a", "utf-8"); } echo' <html> <body> <h1>ご入力内容をご確認してください。</h1> <div>* メールアドレス<br />'.$mail.'</div> '; /*--- 未入力画面 ---*/ if($error == 1) { echo' <div> <form action="inquiry.php" method="post"> <input type="hidden" name="mode" value="input" /> <input type="hidden" name="mail" value="'.$mail.'" /> <input type="submit" value="戻る" /> </form> </div> </body> </html> '; } /*--- 送信可能画面 ---*/ if($error == 0) { echo' <form action="inquiry.php" method="post"> <input type="hidden" name="mode" value="send" /> <input type="hidden" name="mail" value="'.$mail.'" /> <input type="submit" value="送信" /> </form> <form action="inquiry.php" method="post"> <input type="hidden" name="mail" value="'.$mail.'" /> <input type="submit" value="戻る"> </form> </body> </html> '; } /*--- 送信画面 --*/ case 'send': } /* swich文を中心にメールフォームを作っています。 入力画面で「$mail」には、入力内容、未入力の場合、エラー文が代入されます。 再び、入力画面に戻ると、当然ですが、入力欄には、エラー文が表示されてしまいます。 $mailを空にして入力画面に戻せば良いのですが、正しい入力や多少のミス入力した場合等、 ユーザが入力した値を、入力欄に戻したいと思っています。 どのような処理をすれば良いのでしょうか? 皆様、ご回答の方、どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • mailで送信する場合の行改

    もともとテキストエリアのデーター($biko)を一度確認画面に表示させて 確認画面から <input type="hidden" name="biko" value=<? echo $biko; ?>> でデータを受け取り、それを、mailで送信する場合、行改したところから 文章がmailにありませんでした。全文をメールに載せるにはどうしたらいいのでしょうか? 出来れば改行位置も入力したとおりにしたいです。

    • 締切済み
    • PHP
  • postのタイムラグ

    以下のソースでPOSTの値が取れないときがあるので困っています。 具体的にはページを表示してから30秒程度待ってからの クリックじゃないとPOSTの値が取れません。 GETの場合はページ表示後すぐにボタンをクリックしても大丈夫でした。 原因が分からず途方に暮れています。 お知恵をお貸しください。 PHP Version 5.2.3 <?php $P_data = $_POST["pg"]; print("POST=>".$P_data."<BR>"); $G_data = $_GET["pg"]; print("GET=>".$G_data."<BR>"); print <<< DOC_END <html> <head> </head> <body> DOC_END; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=1>"; echo"<input type=submit value=あ>"; echo"</form>"; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=2>"; echo"<input type=submit value=い>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=3>"; echo"<input type=submit value=う>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=4>"; echo"<input type=submit value=え>"; echo"</form>"; print <<< END </body> </html> END; ?>

    • 締切済み
    • PHP
  • INPUTタグによるデータ引継ぎについて

    入力フォームから確認画面を経由してメール送信する プログラムを作っているのですがINPUT<type="hidden"に よるデータの受け渡しがうまくいかず困っています。 ~ソース~ <FORM ACTION="send.php4" METHOD="post"> <INPUT TYPE="hidden" NAME="naiyo" VALUE=$temp> </FORM> $tempには改行コードを含む文字列が入っているのですが send.php4の方で変数naiyoを見ると、改行コードの ところでデータが切れてしまっているのです。 INPUTタグの前でstr_replaceを使って改行コードを 変換しても変わりません。 ありふれたプログラムなんですがはまってます・・。 どなたかお知恵をお貸しください・・。

    • ベストアンサー
    • PHP
発信可能も着信不可の謎
このQ&Aのポイント
  • 型VE-GD36-5の電話機は発信可能だが、着信できない問題が発生している。
  • 他の電話機やスマホからの呼び出しができず、電源の再起動や電話コードの抜き差しでも改善しない。
  • 故障や設定の問題が考えられるため、適切な処置方法を求めている。
回答を見る

専門家に質問してみよう