jQuery Moblie サイトの登録処理

このQ&Aのポイント
  • jQuery Moblie サイトの登録処理について解説します。
  • 登録確認ボタンを押した後、フォームのアクションに対してエラーの確認を行い、エラーメッセージがなければ別のページに移動する処理が行われます。
  • フォームのアクションを別のページに設定した場合、入力したデータを表示するためには、$_POSTを使用することができます。
回答を見る
  • ベストアンサー

jQuery Moblie サイトの登録処理

登録確認ボタンを押したら、フォーム アクションは先に自身のページのエラーの確認を行い、エラーメッセージがなければ、 if (empty($error)) { header('Location: index_insert.php');  exit(); } index_insert.phpに移動が出来ますが、$_POSTのデータが何も表示されないです。 フォームアクションはaction="index_insert.php"にしたら、エラーの確認処理はやってないので、入力したデータはindex_insert.phpで$_POSTが表示されました。 エラーの確認処理と$_POSTも表示したいですが、どうすれば良いですか? 

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

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 headerでリダイレクトをかけるとpostの内容は引き継がれません。 セッションを利用して値を引き継ぐのが手っ取り早いと思います。 <?php if ( empty($error) ) { session_start(); // 極端な例だけどPOSTをそのまま突っ込んでみる $_SESSION['post'] = $_POST; header('Location: index_insert.php'); exit(); } ?> ==== index_insert.php <?php session_start(); // これで$postの中身は前ページで代入した$_POSTの中身 $post = $_SESSION['post']; ?>

huizhipeng1987
質問者

お礼

参考になりました。 ありがとうございました。

huizhipeng1987
質問者

補足

こんにちは。 教えて頂いたセッションを使うと、データが上手く表示されました。 ありがとうございました。

関連するQ&A

  • 現在PHPの勉強をしています。初心者のためご教授いただければと思います

    現在PHPの勉強をしています。初心者のためご教授いただければと思います。 メールフォームを作成しており、エラーチェックで困っています。 簡単に流れを説明しますとフォーム画面で入力をしてもらったら確認画面へと移行します。 ここでエラーがあった場合、confirm.phpにてエラーチェックをし、form.phpに戻り、エラーがなければ確認画面にて入力した、項目が表示されるようにしたいと思っています。 ソースは下記のとおりになります。 form.php ---------------------- */ <html> <body> <form action="confirm.php" method="post"> 名前:<input type="text" name="name" value="" /<?php echo $errmsg['name'] ;?><br> 内容:<textarea name="comment" rows="5" cols="40"></textarea><?php echo $errmsg['comment'] ;?><br> <input type="hidden" name="contact" value="form" /> <input type="submit" name="submit" value="確認" /> </form> </body> </html> confirm.php ---------------------- */ <?php $name = $_POST['name']; $comment = $_POST['comment']; if(isset ($_POST['contact'])) { $errmsg = array(); if(empty($name)){ $errmsg['name'] = '未入力'; } if(empty($comment)){ $errmsg['comment'] = '未入力'; } if (count($errmsg) != 0) { header("Location: index.php"); exit; } } ?> <html> <body> 名前:<?php echo $name; ?><br /> 内容:<?php echo $comment; ?><br /> </body> </html> としております。 if (count($errmsg) != 0) { header("Location: form.php"); exit; 上記のようにするとエラーチェックの表示がされません。 require(form.php);にするとform.phpが表示されるのですがURLを見るとconfirm.phpの状態になっております。 header("Location: form.php");を使用してのエラーチェックをしたいのですが、どのように記述したらよろしいのでしょうか? 上記の内容でどなたかご教授いただけないでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • <?php

    <?php session_start(); $_SESSION['name'] = $_POST['name']; $_SESSION['kana'] = $_POST['kana']; $_SESSION['nick'] = $_POST['nick']; $_SESSION['sex'] = $_POST['sex']; $_SESSION['pass'] = $_POST['pass']; $_SESSION['pass2'] = $_POST['pass2']; $_SESSION['mail'] = $_POST['mail']; if(empty($_SESSION['name'])) { $_SESSION['error'] = '名前を入力して下さい'; } if(empty($_SESSION['kana'])) { $_SESSION['error'] = 'フリガナを入力して下さい'; } if(empty($_SESSION['pass'])) { $_SESSION['error'] = 'パスワードを入力して下さい'; } if(empty($_SESSION['pass2'])) { $_SESSION['error'] = '確認用パスワードを入力して下さい'; } if($_SESSION['pass'] and $_SESSION['pass2'] and ($_SESSION['pass'] != $_SESSION['pass2'])){ $_SESSION['error'] = 'パスワードが一致しません'; } if (preg_match("/^[a-zA-Z0-9]{4,12}$/", $_SESSION["pass"])){ $_SESSION['error'] = 'パスワードは半角英数字で入力して下さい'; } if(isset($_SESSION["error"])) { header("Location: regist.php"); exit; } else { header("Location: index.php"); exit; } ?> で、PCからみるとエラーメッセージがでるのですが、自分の携帯(ドコモ)でみるとエラーメッセージが表示されていません・・・ なぜでしょうか?><; フォーム画面のソースは <?php if (isset($_SESSION["error"])) { echo $_SESSION["error"]; session_destroy(); } ?> </font> <font size="2"> <form action="error_check.php" name="form" method="post"> //ここからフォーム内容 です。 ご教授のほど宜しくお願い致します><;;;;;;; 補足 >GETで、セッション名に、session_id()で取得した値を渡してやる必要があります。 それはいったいどうやるんですか?><; 簡単でいいのでソースとか記述してくださればわかりやすいです><; お願い致します><;

    • 締切済み
    • PHP
  • Docomoでサイトが移動しました(301)が消えない

    お世話になっています。 携帯向けサイトを制作しているのですが、Docomo機種で「サイトが移動しました(301)」が消えずに困っています。 サイトはPHPで制作している為、拡張子が「.php」になります。 各所でheader移動しているのですが、そこで301表示が出てしまいます。 header移動は以下のように記述しています。 if(preg_match("/DoCoMo/",$_SERVER['HTTP_USER_AGENT'])){ header("HTTP/1.1 301 Moved Permanently"); header("Location: index.php?".SID); } else { header("Location: index.php"); } exit; セッションを利用している為、スラッシュで終わる事が出来ません。 POSTでSIDを渡す場合は問題なく移動出来ています。 文字コードはShift-JIS、確認を行った機種は70シリーズの3種類の携帯です。 header部分は「header('Status: 301 Moved Permanently');」と言う様にも試してみましたが解決しませんでした。 301表示を消す他の方法がありましたら、ご教授願えませんでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPとPerlのリダイレクト

    こんにちは。 PHPとPerlのリダイレクトの処理ついて質問です。 PHPのリダイレクトには、exit;を付けないとその後の処理も行ってしまいます。 header("Location:index.php"); exit; Perlのリダイレクトにも、このexit;は必要でしょうか? print "Location:index.cgi\n\n"; exit; ← ? 以上です。 どうぞよろしくお願いします。

    • ベストアンサー
    • Perl
  • HTMLとPHP

    こんにちは。いつもお世話になっています。 PHPとHTMLを勉強していてわからないことがあったのでよろしければ教えてください。 POSTでデータを取得するときにデータがあるか無いか判定してから、項目すべてに記入してあれば登録確認ページへ、空欄があればエラーページへいくようなサイトをつくったのですが、確認ページでデータが表示されませんでした。 if(!$_POST['name'] OR !$_POST['passwd'] OR !$_POST['address'] OR !$_POST['tel'] OR !$_POST['email']){ echo ("空欄があります。すべて記入して下さい。"); }else{ header("Location: http://localhost/my/myshop/confirm_user.php"); } エラー表示ページ(error.php)でこのように判定し、空欄がなければエラーページから確認ページ(confirm_user.php)へいくようにしました。 登録フォーム(input.php)で<FORM ACTION="error.php","confirm_user.php" METHOD="post"> としたのですが、2つのPHPにデータを送れないのでしょうか?

    • ベストアンサー
    • PHP
  • PHPでのエラーチェックについて

    PHP 初心者デス。よろしくお願いします。 勉強のため、PHPにてメールフォームを作成してます。 PHPでのエラーチェックについて教えていただきたいのですが、 よろしくお願いします。 メールフォーム自体は下記のような流れで作成しております。 ------------------------------------------- 入力フォーム(index.php) ↓(check.php エラーチェック用ファイルとおる) 確認画面表示(confirm.php) ↓(send.php 送信処理がかかれたファイルとおる) 完了画面表示(thanks.html) ------------------------------------------- エラーチェックはindex.phpで必須項目などが、未入力、空白があれば、 送信ボタンを押した際に、index.php自体の入力フォームの下などに 「未入力です」などのエラー表示をさせたいのですが、うまくいきません。 ご教授お願いいたします。 できればSESSIONなどを使用せず行いたいですが可能でしょうか? とりあえず自力でやって、うまくいかなかったのは以下内容です。 --------------------------------------------------- check.phpにエラーチェック用処理を記載しており、index.phpのフォームには <form method="post" action="check.php"> としてます。 ですが、これだともちろんエラー表示はchek.phpに表示されてしまい、 うまくindex.phpにエラー表示ができません。 またindex.phpに入力した内容をconfirm.phpにPOSTで渡せなかったりします。 index.phpにincludeなどでchek.phpを読み込ませて、 <form method="post" action="confirm.php"> としてみても、 うまくエラーチェックが動作しなかったり、 index.phpに入力した内容をconfirm.phpにPOSTで渡せなかったり、 苦労してます。 どうかご教授のほど、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 入力チェックについて

    今、メールフォームを作っているのですがHTMLで入力してもらいkakunin.phpでチェックします。入力ミスがあれば、error.htmlへミスが無ければそのままkakunin.phpで表示したいのですが、中々上手くいきません。長い文で恐縮ですがよろしければご教授ください。 ★HTML★ <form name="form1" method="post" action="kakunin.php"> <td width="64">お名前</td> <td width=<input type="text" name="name"></td> </tr> </table> <input type="submit" name="Submit" value="送信"> </form> ★kakunin.php★ <?php $name=$_POST["name"] $Submit=$_POST["Submit"] //記入チェック if($Submit=="送信") { if (empty ($name)){ header("Location: error.html"); exit; } } ?>

    • ベストアンサー
    • PHP
  • phpでのリダイレクト処理について

    phpで index.php にアクセスがあった時に、 以下の様に top.php へリダイレクトさせたいと思います。 header("Location:top.php"); exit(); この時、top.phpが表示された時のブラウザのアドレスバーは index.php のままです。 アドレスバーのURLを top.php にする方法はないですか?

    • 締切済み
    • PHP
  • docomoで読み込み時のheader記述後のexitについて

    サンプルの挙動はPCでは書込み1回、Docomoでは書込み2回が行われます。 exitの前の#を取るとどちらも1回になります IF文中のheader:Locationでリロードを行い、再表示時にファイルに記録を行うというプログラムなのですが、header記述後の「exit;」を記載しない場合、プログラムが書き込みを2度行うという現象がおこり、理由について悩んでいます。 header:Locationでページを移動しているのに「exit;」を記載しない場合、初回読み込み時のheader後の処理が行われているのですが、 「header Location」というのは処理をストップさせる効果を必ずしも期待できないのでしょうか? <?php #リロード if(empty($_GET['id'])){ header("Location:./test.php?id=a"); #exit; } #記録 $read = id."\n"; file_put_contents("chk.txt",$read,LOCK_EX | FILE_APPEND); ?>

    • 締切済み
    • PHP
  • jQuery POST送信後のページ更新

    いつもお世話になっております。 jQuery+PHPにて、POST送信し、 戻り値の条件分岐でページを遷移させたり、 更新させたいと思っています。 ご教授願えないでしょうか。 index.php内 [ソース] $.POST('./search.php', {'code':12345'}, function(data){ if(data['type'] == '1'){ alert('見つかりません') location.href='./index.php'; } else if(data['type'] == '2'){ location.href='./edit.php; }, 'json' ); 見つかりませんのアラートを表示した後、 location.hrefだと、リロードする事なく。 またlocation.reloadにしても同様です。 $.POST外でlocation.reloadを指定すると リロードしてくれるのですが、$,POST送信してくれません。 もし不可能であれば、location.hrefで別のファイルを経由させて実施しようと思っています。 宜しくお願いします。

    • ベストアンサー
    • AJAX

専門家に質問してみよう