• ベストアンサー

form要素について

php初心者です。ログインページを勉強中なのですが、 form要素で受け取ったデータを別ページで取得したいんですがどうすればいいでしょうか? ★条件 1.最初の読み込み時は『ゲスト』と表示させたい 2.ログイン後は『名前』を表示させたい ●input.htmlファイル <form method="POST" action="output.php">  名前<input type="text" name="name"> </form> ●output.phpファイル <?php if($_REQUEST["name"] != null){  echo($_REQUEST["name"]); }else{  echo("ゲスト"); }?> アドバイスお願いします。

  • PHP
  • 回答数5
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • duckling
  • ベストアンサー率47% (88/185)
回答No.5

エラーは #4 の方がおっしゃっているように、 文字出力後にsetcookieされているからだと思います。 cookieはheaderにセットされるので、 何かを出力する前に、setやgetを完了していなければいけません。 あと、下のソースだと、 in.phpの時点では$_REQUEST["txt"]はnullなので そこでsetcookieしてもnullがセットされるだけです。 なので正しくセットされていたとしても、 out.phpでは何も表示されない(見えない)状態になると思います。 setcookie("MyCookie","abcde"); と書いて、自分のPCの中に Cookieファイルが出ているか確認しましょう。 セットされていれば、 out.phpに行った時に abcde と表示されると思いますよ。 #-- 混乱すると思うので成功後読んで欲しい ---- 上記の理由から、通常setcookieはout.phpの方で $_REQUEST["txt"]を取得した後に行うものですが、 ただ、$_COOKIE は、setcookie後すぐには効かなかったと記憶しています。 $_COOKIE は getcookie の結果だと思うので 1行目で setcookie しても、すでにgetcookieされた後らしく、 $_COOKIEの内容は更新されていない状態になるようです。

その他の回答 (4)

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.4

クッキーの出力は http://www.php.net/manual/ja/features.cookies.php にも書かれているとおり「ブラウザに何らかの出力を行う前にコー ルする必要」があります。

  • the845t
  • ベストアンサー率33% (246/743)
回答No.3

PHPの場合、クッキーの設定は比較的簡単です。 http://www.zuien.or.jp/develop/ja-manual/php3/function.setcookie.html が参考になると思います。 ただし、受け取る側がPHPでなく、HTMLになるのであれば、 与えることはPHPでできますが、HTMLでは取得ができません。 ですので受取るばあいはJavaScriptを使ってください。 http://tohoho.wakusei.ne.jp/wwwcook.htm が参考になると思います。 受取る時もPHPならもっと楽なんですけどね。

u-mesh12
質問者

補足

再度補足です。 setcookie()関数を用いて簡単な処理を行ってみましたが、思い通りの結果が処理できません。 ●送信側 in.phpファイル <form method="POST" action="out.php"> <?php  $value = $_REQUEST["txt"];  setcookie("MyCookie","$value"); ?> <input type="text" size="30" name="txt" value=""> <input type="submit" name="submit" value="送信"> </form> ●受取側 out.phpファイル <?php  echo $_COOKIE["MyCookie"]; ?> *内容* txt名テキストで入力された文字(データ)をsetcookie()関数にセットし送信し、out.phpでcookieのデータを取得し、表示させる。なおこの場合は無理やりクッキーを使用して結果を得ようとしていますが、あくまでクッキーの使用をテストするものであります。 これをブラウザで実行すると以下のエラーがでます。 Notice: Undefined index: txt in C:\Apache Group … クッキーのセット方法、取得方法がいまいちわからないので再度アドバイスをよろしくお願いいたします。

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.2

フォームを使ったログインならば #1さんの仰るとおりクッキーを使うのが最も楽でしょうね。 あとはセッションを使ってサーバー側にデータを保存(クッキーを併用、若しくはURLにセッションIDを埋め込み)するか、formによるログインにこだわらないのなら BASIC認証という方法があります。

参考URL:
http://www.hotwired.co.jp/webmonkey/2001/49/index2a.html
u-mesh12
質問者

お礼

参考URLありがとうございます。

  • the845t
  • ベストアンサー率33% (246/743)
回答No.1

クッキー使っちゃダメなの? あと、phpじゃなくて、htmlの方で使いたいってこと? この場合はクッキーしかないと思う。

u-mesh12
質問者

補足

クッキーを使いたいと思うのですが、 phpのクッキーの操作方法がよくわかりません。 参考になるURLなどはご存知でしょうか?

関連するQ&A

  • PHPでFormリクエスト

    ASPで以下実行したことをPHPで同じことはできるでしょうか? <form action=”Sample.asp” method=”post”> <input type=”text” name=”Name” value=”あ”><br> <input type=”text” name=”Name” value=”い”><br> <input type=”text” name=”Name” value=”う”><br> </form> Request.Form(“Name”)(1)  →あ Request.Form(“Name”)(2)  →い Request.Form(“Name”)(3)  →う

    • ベストアンサー
    • PHP
  • <input type="hidden" >で配列(複数の要素)を渡したいとき?

    こんにちわ, 今HTML+PHPで $hoge[]にいくつかの要素が入っているとき, それをあるfoo.phpというページに渡したいとき, echo '<form action="foo.php" method="POST">'; echo '<input type="hidden" name="$hoge[]" >'; echo '</form>'; としたのですが,うまくいきません。 どうしたらよろしいでしょうか。

    • ベストアンサー
    • PHP
  • formヘルパーを使わないと、パラメータを取得できないのでしょうか?

    symfonyを使用してますが、 formヘルパーを使わないと、リクエストのパラメータを取得できないのでしょうか? --------------------------------------------------- <form action="/web/xx.php/xx/xxx" enctype="text/plain" method="post"> <input type="text" name="model" value="50"> <input type="submit" value="検索"> </form> --------------------------------------------------- 上記だと、パラメータを取得できるが、下記だと取得できる。 --------------------------------------------------- <?php echo form_tag('/web/xx.php/xx/xxx') ?> <?php echo input_tag("model","50") ?> <?php echo submit_tag('検索')?>

    • 締切済み
    • PHP
  • 設定後の試し 見方 使い方

    input.phpというファイルで body内に <FORM action=output.php method=post>名前:<INPUT name=name> <INPUT type=submit value=送信> </FORM> というタグをいれ  output.phpというファイルで body内に  こんにちは、<?php print($_POST['name']);?>さん</form> というファイルをつくったが 正しく作動するかどうやって試すか教えてください。xamppでapache php は正しく設定してあります。phpファイルの保存場所に原因がありますか。 

    • 締切済み
    • PHP
  • PHPで使うis_null()関数

    PHP学習者です。 is_null() 関数の使い方で混乱しています。 添付の様な<form>を持つファイル nulltest.php と、それを受けて入力が nullかどうかを検証するファイルreceivee.php を作りました。 入力に何かを入れても、なにも入れなくてもis_null()は何も返しません、というか、False を返しているのだと思います。 逆に、!is_null() と否定形にすると、入力があっても無くても1,つまりtrue が返ります。 入力があれば true が返り、入力が無ければ false が返るようにするにはどうしたらよいのでしょうか?詳しい方どうか教えてください。 上記自作のファイルを以下にコピーします。 <?php echo "------------- nulltest.php ----------------</br>"; $no=null; echo "<form method='post' action='receive.php'>"; echo "<input type='text' name='testinput' value=".$no.">"; echo "<input type='submit' value='ok'>"; echo "</form>"; ?> <?php echo "------------- receive.php ------------------</br>"; $input=$_POST['testinput']; echo "======== ".$input." is ".is_null(input)."</br>"; ?>

    • ベストアンサー
    • PHP
  • form変数の初期化

    <br /><b>Notice</b>: Undefined index: your_name in <b>C:\xampp\htdocs\test\index.php</b> on line <b >83</b><br /> 入力画面で上記のエラーが解決しません。 どうすればいいでしょうか? 入力画面 <?php $_POST = array(); ?> <form method="post" action="./form_check.php"> <div class="element_wrap"> <label>氏名</label> <input type="text" name="your_name" value="<?php echo $_POST["your_name"]?>"> </div> <div class="element_wrap"> <label>メールアドレス</label> <input type="text" name="email" value=""> </div> <input type="submit" name="btn_confirm" value="入力内容を確認する"> </form> 確認画面 <?php $your_name = $_POST["your_name"]; ?> <form method="post" action="./test.php"> <div class="element_wrap"> <label>氏名</label> <p><?php echo $your_name; ?></p> </div> <div class="element_wrap"> <label>メールアドレス</label> <p><?php echo $_POST['email']; ?></p> </div> <input type="submit" name="btn_submit" value="送信"> </form> <form method="post" action="./index.php"> <!--<input type="button" name="btn_back" onclick="history.back()" value="戻る">--> <input type="submit" name="btn_back" value="戻る"> <input type="hidden" name="your_name" value="<?php echo $_POST['your_name']; ?>"> <input type="hidden" name="email" value="<?php echo $_POST['email']; ?>"> </form>

    • 締切済み
    • PHP
  • hidden属性だけのフォーム

    hidden属性だけのフォームというのはちゃんと動作しますか? 自分のソースでは動作せず、送り先のPHPスクリプトでvar_dump()すると、$_POST['']の中身が NULL になってました。送信やリセットボタンを作らずに送信できるとすれば、どんな ソースになりますか? <?php echo '<form name="form1" method="POST" action="../../disp_access.php">'; echo '<input type="hidden" name="from" value="1">'; // どのページから飛んできたかを示す echo '<input type="hidden" name="browser" value="'.$referer.'">'; echo '<input type="hidden" name="ip" value="'.$ip.'">'; echo '</form>'; ?>

    • ベストアンサー
    • HTML
  • PEARのAuth用のLoginFunctionが動かない

    $a = new Auth("MDB2", $options); のように第3引数を省略し、デフォルトのログイン画面を使うようにするとちゃんとログインできるのですが、自分で作った関数をログイン用に使おうとすると、$a->start()でフォームは表示されますがユーザー名などが入ってきていないようです。getAuthで認証の確認をすると失敗しています。どうして動かないのでしょうか? function loginFunction($username = null, $status = null, $auth = null) { /* * HTML出力は、作成するアプリケーションに合うように、 * 変更してください。 */ echo "<form method=\"get\" action=\"index.php\">"; echo "<input type=\"text\" name=\"username\">"; echo "<input type=\"password\" name=\"password\">"; echo "<input type=\"submit\">"; echo "</form>"; echo "ユーザー名:" . $username . "<br />\n"; //echo "Status:" . $status . "<br />\n"; }

    • 締切済み
    • PHP
  • Formを使ったPHP間での受け渡しについて

    いつもお世話になっています。 PHP間での変数の受け渡しで・・ <form action="<?= test.php ?>" method="POST">   <input type="hidden" name="id" value="aaa"/>   <input type="submit" name="submit" value="送信"> </form> と記述するとtest.phpには渡したいaaaが渡されるのですが、 これだとsubmitを押さないと渡せないため困っています。 したいことをまとめると、submitを使わずにページが表示されたら スグに変数が渡されるようにしたいです。 いろいろ試してみましたが、力不足で出来ませんでした。 宜しくお願いします!

    • ベストアンサー
    • PHP
  • formタグについてPHP

    他でも質問しましたが、xamppはもともと練習に使うつもりでしたが、 現在はレンタルサーバーを使っているのでここで試したらどうかと 帰りの電車の中で考えました。 ※送るデーター <form acition="index.php"method="POST"> <p>氏名<input type="text" size="20" name="ad"></p> <input type="submit" value="送信"> </form> ※受け取るデーター index.php <?php echo$_POST['ad1']; echo$_POST['ad2']; ?> 質問1.上記に名前が書かれれば、サーバーに引き渡したデーターを ブラウザーに表示ができるのでしょうか? 質問2.echoはeachとは違うのでしょうか? 質問3.actionのところによくメールアドレスが入っていたりするような気がします。 メールアドレスでも受け取れるのでしょうか?

    • 締切済み
    • PHP

専門家に質問してみよう