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

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

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

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

Q&A

解決済

2回答

9725閲覧

【PHP】SESSIONを使用した入力チェックとリダイレクト

star24star

総合スコア115

PHP

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

0グッド

0クリップ

投稿2015/04/16 14:36

[PHP]【SESSIONを使ったフォーム/未入力チェック】

入力画面→確認画面→完了画面の3つのファイルがあり、
入力画面で未入力のまま確認画面へ飛んだ場合は、

入力画面へ、リダイレクトさせるということをしたいのですが、
表記や場所が今一解りません。ご教授お願い致します。

lang

1 2■入力画面.php 3 <?php 4 session_start(); 5 $session['name'] = "$_POST['name']"; 6 $name = "$session['name']"; 7 ?> 8 <html><body> 9 <form action="check.php" name="$_POST['name']"><br> 10 <p>・名前</p> 11 <input type="submit" name="send" value="確認"> 12 </form></body></html>

lang

1■確認画面.php 2 <?php 3 session_start(); 4 if ($_POST['name']==""){ 5 session['error_name']=1; //エラー(未入力)だった時=1 6 if(session['error_name']==1){ //リダイレクトして1が出たらエラー 7print("名前を入力してください") //入力画面に表示させる 8header("location: 入力画面.php"); //リダイレクト先 9}} 10 ?> 11 <form action="完了画面.php" method="POST"> 12 <input type="hidden" name="name" value="<?php echo $name; ?>" > 13 <html><body> 14 <p>・名前</p> 15 <?php echo $name; ?> 16 <input type="submit" name="sends" value="確認した上で送信"> 17 </form></body></html> 18

issetやemptyなどは使わず、ごくシンプルにPOSTとSESSIONのみで
データの受け渡し、エラー、リダイレクトを実行したいです。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

表記や場所が今一解りません。ご教授お願い致します。

提示しているソースで何が出来ていて、何が出来ていないのかを書くことは大事な事だと思います。

とりあえず下記の箇所が問題だから確認画面.php側でデータが受けれないと思います

lang

1<!-- form のname属性に値を入れてもだめ --> 2<form action="check.php" name="$_POST['name']"><br> 3<!-- 画面にすでに記載してある値という想定であればhiddenで --> 4 <p>・名前</p> 5 <input type="hidden" name="name" value="名前" />

入力値を引き渡す想定であればテキストボックス、固定値で問題ないのであれば確認画面で利用しているhidden値でよいと思います。今のままだとそもそも$_POST['name']に相当する情報がないかと。

前回答者の方も言及していますが、かなり提示しているソースに誤字がありますね。
プログラミングを覚えていく上でコピペでなく自身でコードを書くのは大変有意義な修得法だと思います。

しかしながら状況を鑑みるにやろうとしている事とご自身の理解レベルに乖離があると推測します。
今回のケースであれば大まかにやりたい事は三点あると思います。
1.POSTでのページ間の情報受け渡し
2.sessionによる情報保持
3.適切なタイミングでのリダイレクト処理

これらをひとつずつ確実に解決しながら実装・修得する事をお勧めします。

※説教くさくて申し訳ないです。これも応援しているからこそと察してください

投稿2015/04/16 15:16

ShintaroIshida

総合スコア87

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

PHPでセッションを利用する場合の定義済み変数は

$_SESSION

です。アンダースコアでつなぎ、必ず大文字にしてください。小文字でかいたりすると、別の変数として扱われてしまいます。

それで、入力画面.phpの方にも

if ($_POST['name']!=""){ header("location: 確認画面.php"); //リダイレクト先 }

相当のコードを書いてリダイレクトしないと確認画面.phpに行かないですよね?

コードはかなり間違っていますが、まずそのへんから修正してみてはいかがでしょうか。

投稿2015/04/16 14:49

編集2015/04/16 14:50
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

star24star

2015/04/16 15:15

!とSESSON_の書き方ですね 間違っているというのは入力画面の方でしょうか
退会済みユーザー

退会済みユーザー

2015/04/16 15:34

そうですね。 <form action="check.php" name="$_POST['name']"> のname属性は、form自体の名前をつけるのですが、$_POST['name']は入力内容ですよね。 ですので入力画面の方の<form>は、 <form action="check.php" name="some_form_name" action="POST"> のようになります。あとは$_POST["name"]を入力するための<input>が必要ですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問