セッションについて勉強中!ログイン名が表示されない問題について

このQ&Aのポイント
  • セッションについて勉強しているPHP初心者です。ログイン名が表示されない問題についてアドバイスをいただきたいです。
  • セッション管理の開始や変数の登録などのソースを記述しているのですが、名前が表示されません。
  • ログイン画面から名前を入力しても次のページに名前が表示されません。どうすれば表示できるようになるでしょうか?
回答を見る
  • ベストアンサー

セッションについて

PHP初心者です。 今、セッションについて勉強しています。 名前を入力してログインすると次のページに名前が表示するようにしたいのですが、表示されません。どうしたらよいでしょうか? ソース(ログインページ) <? session_start();// セッション管理の開始 session_register("namae1");//現在のセッションに1つ以上の変数を登録する ?> <? header("Content-type: text/html;charset=EUC_JP"); ?> <html><head><title>ログイン</title></head> <form action="sessiontop.php" method="post"> 名前: <input type="text" name="namae"><br><br> <input type="submit" value="ログイン"> </form> </body></html> ソース(名前が表示されるページ) <? session_start();// セッション管理の開始 header("Content-type: text/html;charset=EUC_JP"); //ディレクトリー内に入っているHTMLファイルは全てEUC-JPですという命令がブラウザに送信される。 ?> <html> <head> <title>セッションメインページ</title></head> <? $name = $_POST["namae"]; $_SESSION["s_name"]=$name; ?> <?= $s_name ?>さんこんにちわ<br><br> <a href="session3.php">ログイン画面に戻る</a><br> </body></html> よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

<?= $s_name ?>さんこんにちわ<br><br> $s_nameと言う変数への代入がないので表示されないのは当然です。 $name または $_SESSION["s_name"] としてください。 # $_POST["namae"] がないと名前が表示されない仕様なので、$_POST["namae"]がない場合はセッションを調べるようにしたほうがよいでしょう。

maha567
質問者

お礼

ありがとうございました。 ご指摘されたとおり$s_nameと言う変数への代入がないので表示されなかったです。 正常に動きました。 変数の使いかたが未だに理解できていなくて、本当にお恥ずかしいです。

関連するQ&A

  • 古いセッションが消えない

    フォームからのデータを受け取るPHP、sesssion.phpが下記のとおりだとします。 <? header('Cache-Control: nostore, no-cache, must-revvalidate'); session_cache_limiter('private_no_expire'); session_start(); header("Content-Type: text/html; charset=EUC"); $http = $_SERVER['HTTP_REFERER']; //どこから来たか $form_id = $_POST['form_id']; $form_pass = $_POST['form_pass']; $flg = $_POST['t']; $session = session_id(); if($http == "http://192.168.1.250/~fukazawa/session/form.html"){ $_SESSION['id'] = $form_id; $_SESSION['pass'] = $form_pass; } $test = $_SESSION['id']; $test1 = $_SESSION['pass']; if($flg == "t"){ echo <<<EOM <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <title> </title> </head> <body> ◎$test<br />$test1 <br><br><br><a href="session.php">test</a><br><br> <a href="session.php?t=test">test2</a> </body> </html> EOM; }else{ echo <<<EOM <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <title> </title> </head> <body> ◎$test<br />$test1 <a href="session.php">test</a><br> <a href="session.php?t=test">test2</a> </body> </html> EOM; } ?> 引数で表示させる内容を異なるようにするPHPファイルです。 仮に一回目にIDを「てすと」、パスワードを「ttt」でログインした場合、session.php・session.php?t=testに表示されるのは、 「◎てすと ttt」 です。 そして、これをいったんログアウトして、今度は ID「二回目」、パスワード「two」でログインすると、 session.phpには 「◎二回目 two 」と表示されますが、 session.php?t=test に飛んだ場合、 一回目のIDとパスワード、つまり 「◎てすと ttt」 が表示されてしまいます。 ブラウザをリロードすると 「◎二回目 two 」 と表示されます。 これは、前のセッションがまだ残ってしまっているということなのでしょうか。 対処法が分からず困っています。

    • ベストアンサー
    • PHP
  • php初心者です。セッションについて

    php初心者です。セッションをはじめて扱ってみているのですが、上手く行かずに困っています。 HP1でセッションに文字や数値を入れて表示、HP2でも表示というごく単純なものでセッションを試して見ているのですが上手く行かずにいます。 何か初歩的な間違いだとも思うのですが、どうにも上手くゆかず質問させていただきました。何に問題があるかアドバイスやご助言をいただければと思います。 よろしくお願いします。 ---------------------- HP1 ---------------------- <?php session_start(); //セッション開始 $_SESSION["str"] = "aiueo あいうえお"; $_SESSION["num"] = 1; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" > <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> <title>session01</title> </head> <body> <p>page1</p> <?php print $_SESSION["str"]."<br />"; print $_SESSION["num"]."<br />"; ?> <p><a href="session02.php">page2へ</a></p> <?php ?> </body> </html> ---------------------- HP2 ---------------------- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" > <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> <title>session01</title> </head> <body> <p>page1</p> <?php print $_SESSION["str"]."<br />"; print $_SESSION["num"]."<br />"; ?> <p><a href="session01.php">page1へ</a></p> <?php ?> </body> </html>

    • 締切済み
    • PHP
  • sessionが分かりにくいです

    try4.html <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> <head> <title>カンタンアンケート</title> </head> <body> <form action='try4-2.php' method='GET'> 性別:<br> <input type="radio" name="gender" value=0>男性 <input type="radio" name="gender" value=1>女性<br><br> 趣味(複数選択可):<br> <input type="checkbox" name="movies" value=1>映画  <input type="checkbox" name="music" value=1>音楽  <input type="checkbox" name="books" value=1>読書  <input type="checkbox" name="sports" value=1>スポーツ<br><br> ご意見をお書きください:<br> <textarea name="comment" rows="4" cols="40"></textarea><br><br> <input type="submit" value="送信"> <input type="reset" value="リセット"><br><br> </form> </body> </html> ////////////////////////////////////////////////////// try4-1.php <?php session_start(); ?> <html> <head><title>try4-1.php</title></head> <body> <?php $_SESSION = array(total_cnt => 0, male => 0, female => 0, movies => 0, music => 0, books => 0, sports => 0, comment => array("")); ?> //////////////////////////////////////////////////////////////// try4-2.php <?php session_start(); ?> <html> <head><title>try4-2.php</title></head> <body> <?php if ($_GET['gender'] == 0) ++$_SESSION['male']; elseif ($_GET['gender'] == 1) ++$_SESSION['female']; if ($_GET['movies']) ++$_SESSION['movies']; if ($_GET['music']) ++$_SESSION['music']; if ($_GET['books']) ++$_SESSION['books']; if ($_GET['sports']) ++$_SESSION['sports']; $_SESSION['comment'][] = $_GET['comment']; ++$_SESSION['total_cnt']; ?> 登録しました。さらに<A href="try4.html">入力する</A><br> これまでの集計結果を<A href="try4-3.php">表示する</A><br> </body> </html> ////////////////////////////////////////////////////////// try4-3.php <?php session_start(); ?> <html> <head><title>try4-3.php</title></head> <body> <?php echo "これまでにアンケートに応えたのは{$_SESSION['total_cnt']}人です。そのうち<br>"; if ($_SESSION['total_cnt']){ $male_rate = (int)($_SESSION['male'] / $_SESSION['total_cnt'] * 100); $female_rate = (int)($_SESSION['female'] / $_SESSION['total_cnt'] * 100); } else { $male_rate = 0; $female_rate = 0; } echo "男性:{$_SESSION['male']}人 $male_rate %<br>"; echo "女性:{$_SESSION['female']}人 $female_rate %<br><br>"; echo "趣味は映画:{$_SESSION['movies']}人、音楽:{$_SESSION['music']}人、読書:{$_SESSION['books']}人、" . "スポーツ:{$_SESSION['sports']}人<br><br>"; echo "意見:<br>"; foreach ($_SESSION['comment'] as $comment) echo $comment . "<br>"; ?> 集計を<A href="try4-1.php">初期化する</A><br> さらに<A href="try4.html">入力する</A><br> </body> </html> //////////////////////////////////////////////////////// とファイルが4つあるのですがセッション情報はどこに格納されているのでしょうか。TXTファイルでもなさそうなので教えて下さい。

    • ベストアンサー
    • PHP
  • $_SESSION['submit']の自動生成

    <form>タグの中にあるsubmitボタンをクリックすると、post先の.phpに、$_SESSION['submit']変数が自動生成されると聞いたので、テストプログラムを作ってみましたが、自動生成されません。 具体的には、test02.phpのprint_r($_SESSION);において、何も表示されません。 つまり、$_SESSION['submit']が作られていません。 詳しい方、ご教授をおねがいします。 test01.phpのソース <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <?php session_start(); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <title>test01</title> </head> <body> <?php print <<< EOH1 <form action="test02.php" method="post" name="form1"> <table> <tr> <td>会社名</td> <td> <input type="text" name="company" size="30" value="東京電気株式会社"> </td> </tr> </table> <br> <input type="submit" value="登録" name="submit">&nbsp;<input type="reset"> </form> EOH1; ?> </body> </html> test02.phpのソース <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <?php session_start(); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <title>test02</title> </head> <body> <?php print_r($_SESSION); if(isset($_SESSION['submit'])) { dispRequest(); } if(isset($_SESSION['submit'])) { unset($_SESSION['submit']); session_unset(); session_write_close(); } function dispRequest() { if (isset($_REQUEST['company'])) { echo "会社名:", $_REQUEST['company'], "<br>\n"; } else { echo "companyが未定義<br>\n"; } } ?> </body> </html>

    • ベストアンサー
    • PHP
  • docomoのセッションが切れてしまうのは?

    携帯サイト用のセッションでdocomoの時だけ思うように フォームによるページ遷移ができません。 色々試してみたのですが、サッパリです。 どなたかお知恵をお貸し下さい。 例) -- page01.php -- session_name( "test" ); session_start(); session_regenerate_id(true); $test = session_name()."=".session_id(); if ( ( $smp01 = auth() ) == FALSE ) { header( "Location: ./test.php?redirect=index_test.php?" ); exit; }←ログイン時の処理(ユーザー定義関数にて) ・        ・        ・        ・ <form action="page02.php?<?= $test ?>" method="get" /> 入力:<input name="test01" type="text" value="" /> <input name="smp02" type="submit" value="next" > </form> ↑入力させてpage02.phpにて処理 上記のようにしているのですが、 submitするとログイン時の処理に掛かってセッションが切れてしまい ログインページに戻ってしまいます。 ログイン時の処理を削除するとpage02.phpへと遷移します。 ログイン時の処理を残したままセッションが切れずにフォームによる ページ遷移ができるようにするにはどのようにすれば良いのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • php $_SESSIONで値が消える。

    いつもお世話になり誠にありがとうございます。 標記の件。 インプット画面ー>確認画面ー>戻るー>インプット画面 インプット画面に戻った時、どうしても最初のインプット画面で打った内容が消えてしまいます。 プログラムを診て、誤りを指摘して頂けないでしょうか? どうぞよろしくお願い致します。           記 <?php session_start(); $mode = 'input'; if( isset($_POST['back']) && $_POST['back'] ){ //何もしない } else if( isset($_POST['confirm']) && $_POST['confirm'] ){ $_SESSION['name'] = $_POST['name']; $_SESSION['email'] = $_POST['email']; $_SESSION['category']= $_POST['category']; $_SESSION['message'] = $_POST['message']; $mode = 'confirm'; } else if( isset($_POST['send']) && $_POST['send'] ){ $mode = 'send'; } else { $_SESSION['name'] =""; $_SESSION['email'] =""; $_SESSION['category']=""; $_SESSION['message'] =""; } ?> <!DOCTYPE html> <html lang="ja"> <head> </head> <body> <div class="v_line_fix"> <h1>Blog K・T</h1> <h2><a href="index.html">トップページ</a></h2> <?php if( $mode=='input'){ ?> <form method=post> お名前(ニックネーム)<br> <input type="text" name="name" value="<?php echo $_SESSION['name'] ?>"><br> Eメール<br> <input type="email" name="email" value="<?php echo $_SESSION['email'] ?>"><br> カテゴリー<br> <input type="text" name="category" value="<?php echo $_SESSION['category'] ?>"><br> 本文<br> <textarea style="font-size:1.5em;" cols="30" rows="80" name="message"><?php echo $_SESSION['message'] ?></textarea><br> <input type="submit" name="confirm" value="確認" /> </form> <?php }else if( $mode=='confirm'){ ?> <!--確認画面--> <form method="post"> <?php echo $_SESSION['name']?><br> <?php echo $_SESSION['email']?><br> <?php echo $_SESSION['category']?><br> <br> <?php echo nl2br($_SESSION['message'])?><br> <input type="submit" name="back" value="戻る"/> <input type="submit" name="send" value="送信"/> } </form> <?php } else { ?> <!--完了画面--> <?php } ?> </body> </html>

    • ベストアンサー
    • PHP
  • セッションについて教えてください。

    PHPを独学で勉強中の初心者です。(HTMLとCSSくらいしか分からない所からのスタートです) ログインフォーム→パスワード処理→コンテンツ表示というながれで作っています。 質問は、セッションの有効期限はデフォルトではブラウザを閉じるまでと聞いたのですが、それはウインドウを閉じるではなく、アプリケーションを終了するまでということでよいのでしょうか?ウインドウを閉じただけだと、コンテンツを表示できてしまいます。 また、コードがこんなんでよいものかアドバイスよろしくお願い致します。 --パスワード処理-- <?php session_start(); $id =p; $password =11; $n_id = $_POST["n_id"]; $n_password = $_POST["n_password"]; if(($n_id == $id ) && ($n_password == $password)){ $_SESSION['pass'] = 1; header("Location: page1.php"); }else{echo "IDまたはパスワードが違います。"; } ?> ----コンテンツページ----- <?php session_start(); if(isset($_SESSION["pass"]) && $_SESSION["pass"] == 1){ echo "コンテンツ"; echo "<html><head> <meta http-equiv=Content-type content=text/html; charset=EUC-JP> </head><body>"; echo "<form action =logout.php method=post>"; echo "<input type=submit name=sbm value=ログアウト>"; echo "</form></body></html>"; }else{ header("Location:login1.php"); } ?>

    • 締切済み
    • PHP
  • PHPでセッション管理

    PHPでセッション管理の勉強をしています、 テストに以下の文章があるのですが カウント2回です は表示するのですが 3回目以降も カウント2回です と表示します。 文章がどこかおかしいでしょうか? また、このセッション管理は携帯電話でも有効なのでしょうか? スミマセン、教えてください。 バージョンは MYSQL ver4.0.26 PHP ver4.2.2 です <?php session_start(); $count = 1; if (isset($_SESSION["count"])) { $count = $_SESSION["count"]; $count++; } $_SESSION["count"] = $count; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>セッション変数のテスト</title> </head> <body> セッション変数のテスト<BR> <BR> <?php if ($count == 1) { ?> はじめての訪問です。<BR> <BR> セッション変数にデータがありません。<BR> このページをリロードしてください。<BR> <?php } else { ?> あなたの訪問は<?=$count?>回目です。<BR> <?php } ?> </body> </html>

    • ベストアンサー
    • PHP
  • お問い合わせフォーム sessionについて

    自分でお問い合わせフォームを作ってみようと思い、 PHPでちょこちょこと色々なサイトを参考に作成してみています。 なかなか進まず、今つまずいているのが、sessionです。 お問い合わせを書き込んだ画面から確認画面に移行したいのですが、 移行した後の入力情報がうまく表示できません。 <?php session_start(); $check = 1; $em = ""; $name = $_POST["name"]; $mail = $_POST["mail"]; $tel = $_POST["tel"]; $naiyo = $_POST["naiyo"]; //エラーチェック if ($name == "") { $check = 0; $em = "<li>お名前をご記入ください。</li>"; } if ($mail == "" && $tel == "") { $check = 0; $em .= "<li>メールアドレスまたは、電話番号をご記入ください。</li>"; } if ($mail != "") { if (!ereg("[a-zA-Z0-9_.¥-]+@[a-zA-Z0-9_.¥-]+", $mail)) { $check = 0; $em .= "<li>メールアドレスをお確かめください。</li>"; } } if ($naiyo == "") { $check = 0; $em .= "<li>お問い合わせ内容をご記入ください。</li>"; } if (!$check) { $em = "<ul>".$em."</ul>"; } else { $_SESSION["name"] = $name; $_SESSION["mail"] = $mail; $_SESSION["tel"] = tel; $_SESSION["naiyo"]= naiyo; header("Location: confirm.php"); } ?> 確認ページ <?php session_start(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 10.0.0.0 for Windows"> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE></TITLE> </HEAD> <BODY> 名前 <?php echo($_SESSION["name"]); ?><br> メールアドレス<?php echo($_SESSION["mail"]); ?><br> </BODY> </HTML> 全くの初心者ですので根本的に分かっておらず、教えがいがないかも 知れませんが...。すみません。よろしくお願いします。

    • ベストアンサー
    • PHP
  • php $_SESSIONでデータが残らない。

    いつもお世話になり誠にありがとうございます。 標記の件。 インプット画面ー>確認画面ー>戻るー>インプット画面 インプット画面に戻った時、どうしても最初のインプット画面で打った内容が消えてしまいます。 プログラムを診て、誤りを指摘して頂けないでしょうか? 今度はCSSなども書きます。 どうぞよろしくお願い致します。 記 <?php session_start(); $mode = 'input'; if( isset($_POST['back']) && $_POST['back'] ){ //何もしない } else if( isset($_POST['confirm']) && $_POST['confirm'] ){ $_SESSION['name'] = $_POST['name']; $_SESSION['email'] = $_POST['email']; $_SESSION['category']= $_POST['category']; $_SESSION['message'] = $_POST['message']; $mode = 'confirm'; } else if( isset($_POST['send']) && $_POST['send'] ){ $mode = 'send'; } else { $_SESSION['name'] =""; $_SESSION['email'] =""; $_SESSION['category']=""; $_SESSION['message'] =""; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta http-equiv="content-type" content="text/html" charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>ブログ</title> <meta name="description" content="このWebサイトは、初めてHTMLで作るブログページです。"> <link rel="stylesheet" href="./css/style.css"> <style> body{ width: 100%; max-width: 800px; margin-top: auto; margin-left: auto; margin-right: auto; background-color: rgb(71, 133, 157); padding: 10px; text-align: center; } div{ background-color: rgb(247, 248, 245); padding: 2em; } script{ margin-top: 12em; } p { margin-left: 2em; text-align: left; font-size: 25px; font-weight: bold; color: rgb(10, 10, 10); } form { font-size: 25px; font-weight: bold; color: blue; } input { font-size: 25px; margin:auto; } </style> </head> <body> <div class="v_line_fix"> <h1>Blog K・T</h1> <h2><a href="index.html">トップページ</a></h2> <?php if( $mode=='input'){ ?> <form method=post> お名前(ニックネーム)<br> <input type="text" name="name" value="<?php echo $_SESSION['name'] ?>"><br> Eメール<br> <input type="email" name="email" value="<?php echo $_SESSION['email'] ?>"><br> カテゴリー<br> <input type="text" name="category" value="<?php echo $_SESSION['category'] ?>"><br> 本文<br> <textarea style="font-size:1.5em;" cols="30" rows="80" name="message"><?php echo $_SESSION['message'] ?></textarea><br> <input type="submit" name="confirm" value="確認" /> </form> <?php }else if( $mode=='confirm'){ ?> <!--確認画面--> <form method="post"> <?php echo $_SESSION['name']?><br> <?php echo $_SESSION['email']?><br> <?php echo $_SESSION['category']?><br> <br> <?php echo nl2br($_SESSION['message'])?><br> <input type="submit" name="back" value="戻る"/> <input type="submit" name="send" value="送信"/> } </form> <?php } else { ?> <!--完了画面--> <?php } ?> </body> </html>

    • ベストアンサー
    • PHP

専門家に質問してみよう