質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • PHP

    20307questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • セッション

    95questions

    Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

【PHP】セッションでデータを渡せない!

解決済

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 1,571

takkuleen

score 1

アンケートフォーム(regform_input.php)をつくり、
名前や生年月日などが記入条件をクリアすれば、
完了などの画面を出力(regform.php)し、
もし記入漏れがあるなど、条件をクリアしなければ、
リダイレクトでアンケートフォーム(regform_input.php)のページへ戻し、
その際に記入していたデータはセッションを使い、保持をしたままにしたいのですが、
つまづいています。

具体的には、セッションでregform.phpからregform_input.phpにデータを送り、
アンケートフォームに記入していた内容を出力するように書いているつもりなのですが、
Undefined variableと出力されてしまいます。

そうすればよいでしょうか。。

まだ途中ですが、以下がコードです。(とりあえず名前の部分さえ出力されれば、他の欄にもおなじように書けばできると思うので途中にしたままです。申し訳ございません。)

regform_input.php
<?php 
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>PHP基礎</title>
</head>
<body>

<form action="regform.php" method="post">
    名前:<br />
    <input type="text" name="name1" size="12" maxlength="10" value="<?php echo $name1; ?>"><br />
    名前(確認):<br />
    <input type="text" name="name2" size="12" maxlength="10" value=""><br />
    なまえかな:<br />
    <input type="text" name="kana1" size="20" maxlength="15"><br />
    なまえかな(確認):<br />
    <input type="text" name="kana2" size="20" maxlength="15"><br />
    生年月日(例:1990年08月04日):<br />
    <input type="text" name="year" size="4" maxlength="4">年<input type="text" name="month" size="4" maxlength="2">月<input type="text" name="date" size="2" maxlength="2">日<br />
    性別:<br />
    <input type="radio" id="male" name="sex" value="男性"><label for="male">男性</label>
    <input type="radio" id="female" name="sex" value="女性"><label for="female">女性</label>
    <br />
    自己紹介:<br />
    <textarea name="intro" cols="30" rows="5"></textarea><br />
    <input type="submit" value="送信">
</form>


</body>
</html>
regform.php
<?php
session_start();
$_session['name1']=htmlspecialchars($_POST['name1'],ENT_QUOTES);
$name1=$_session['name1']
$_session['name2']=htmlspecialchars($_POST['name2'],ENT_QUOTES);
$name2=$_session['name2']
$kana1=htmlspecialchars($_POST['kana1'],ENT_QUOTES);
$kana2=htmlspecialchars($_POST['kana2'],ENT_QUOTES);
$year=htmlspecialchars($_POST['year'],ENT_QUOTES);
$month=htmlspecialchars($_POST['month'],ENT_QUOTES);
$date=htmlspecialchars($_POST['date'],ENT_QUOTES);
$sex=htmlspecialchars($_POST['sex'],ENT_QUOTES);
$intro=htmlspecialchars($_POST['intro'],ENT_QUOTES);
if(($name1=="")or($name2=="")or($kana1=="")or($kana2=="")or($year=="")or($month=="")or($date=="")or($intro=="")or($sex=="")){
header("Location: regform1_input.php");
exit;
}
else{
    if ($name1!=$name2) {    
    header("Location: regform1_input.php");
    exit;
    }
    if (preg_match("/^[ぁ-ん]+$/u", $kana1)==false){
    header("Location: regform1_input.php");
    exit;}
    if ($kana1!=$kana2) {
    header("Location: regform1_input.php");
    exit;}
    if (!checkdate($month, $date, $year)) {
    header("Location: regform1_input.php");
    exit;}
}
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
</body>
</html>

よろしくおねがいします!
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

checkベストアンサー

0

本当にこの通りコードを書いていますか?

であれば、セッションの定義済み変数は

$_session

ではなく、

$_SESSION

です。

$_SESSION['name1']=htmlspecialchars($_POST['name1'],ENT_QUOTES);
$name1=$_SESSION['name1']
$_SESSION['name2']=htmlspecialchars($_POST['name2'],ENT_QUOTES);
$name2=$_SESSION['name2']

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/03/13 18:20

    というわけで

    名前:<br />
    <input type="text" name="name1" size="12" maxlength="10" value="<?php echo $_SESSION['name1']; ?>"><br />

    というのが、あなたのしたい事ではないでしょうか?

    ちょっとコードが平成1桁っぽいので、目がちかちかして、間違っていたらすいません。

    キャンセル

  • 2015/03/14 00:34

    luckerさん、

    ありがとうございます。

    おっしゃるとおり、$_sessionと書いてしまっており、
    そのせいでデータが渡せていなかったようです。

    大変助かりました。
    本当にありがとうございます。

    キャンセル

-1

下記の通り、regform.php の4行目、6行目の最後にセミコロンをつければ解決すると思います。

$_session['name1']=htmlspecialchars($_POST['name1'],ENT_QUOTES);
$name1=$_session['name1'];
$_session['name2']=htmlspecialchars($_POST['name2'],ENT_QUOTES);
$name2=$_session['name2'];

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/03/13 10:11

    回答ありがとうございます。
    ただ、依然として変化がありません。
    <br /><b>Notice</b>: Undefined variable: name1 in <b>C:\xampp\htdocs\phpkiso\regform1_input.php</b> on line <b>14</b><br />
    とでてきてしまいます。

    キャンセル

-1

$name1がセットされていないのにechoしているから出てるNoticeだと思いますが…。
下記のようにすればいいかと思います。

regform_input.php
<?php 
session_start();
//↓追加
if(isset($_session['name1'])){
  $name1 = $_session['name1'];
}else{
  $name1 = "";
}
//追加終わり
?>

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/03/14 00:38

    yokoyam49さん、

    ありがとうございます。
    こちらも忘れていました!
    本当に助かりました!
    ありがとうございます!

    キャンセル

-1

yokoyam49さんの回答ですでに解決済みかと思いますが、一点気になったので記載します。

regform_input.php のラジオですが、下記のようにデフォルトで男性を指定すると良いですね。
<input type="radio" id="male" name="sex" checked="checked" value="男性">

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/03/14 00:36

    bm000999さん、

    ありがとうございます。
    ここも気になっていたところでした!
    ありがとうございます!!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    PHPのセッションを利用したフォームについて

    PHPの入力フォームからセッションを利用してエラーチェックがない場合 次の確認画面にページ遷移させたいと思っています。 POSTでやった場合は、エラーチェック後確認画面へページ推

  • 解決済

    php ログインについて

    お世話になります。 現在phpでログイン画面を作っているのですがうまくいかず困っています。 ********** <?php require_once 'h.php'; # 

  • 解決済

    【PHP】リダイレクト時のメッセージと文字判定

    form.php→check.php→send.phpの3つのファイルを使ったお問い合わせフォームで、 未入力の場合の(check→formへ)リダイレクトは成功したのですが、 1

  • 解決済

    ユーザー登録画面を作成中ですが、エラーが出てしまいます。

    webサービスのユーザー登録画面を作成中ですが、エラーが出てしまいます。どのように修正すれば良いかアドバイスを頂けませんでしょうか? 以下登録画面のHTML&PHPです。 コード

  • 解決済

    PHPで簡易掲示板のログインページについて

    今課題でやっているPHPの記事版ログインページなのですが、たにぐちまことさんのよくわかるPHPの教科書というテキストを読みながらやっています。 その中でログインページを作っている

  • 解決済

    PHPのエラーが直らない

    以下のようなものをつくっているのですが、アクセスするたぶに投稿が追加されたりします。どうすれば直りますか? <?php $fp = fopen("kakiko.csv",

  • 解決済

    【PHP】ログイン機能の実装

    PHP初心者です。 PHPの勉強がてら、会員制のページを作成してます。 新規会員登録機能は実装できていますが、 ログイン機能の実装がうまくいきません。 やりたいことを実

  • 解決済

    エラーメッセージの出力がおかしいんです。ヘルプ!

    入力項目はFirst name, Middle name, Last name, Phoneの4つです。 First nameに数字123が入力されたら、” 123 is not

同じタグがついた質問を見る

  • PHP

    20307questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • セッション

    95questions

    Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。