• ベストアンサー

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
  • 回答数4
  • ありがとう数3

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

  • ベストアンサー
  • carroll
  • ベストアンサー率61% (13/21)
回答No.4

前の質問でincludeかrequireを使ったらという回答がありましたが、これらを使えば$_POSTのデータがそのまま使えます。 f(!$_POST['name'] OR !$_POST['passwd'] OR !$_POST['address'] OR !$_POST['tel'] OR !$_POST['email']){ echo ("空欄があります。すべて記入して下さい。"); }else{ require("confirm_user.php"); }

shingetsu
質問者

お礼

これは大変失礼いたしました。そのふたつについてはまだ調べていませんでした。きちんと調べてから新たに質問するべきでした・・・とても反省しています。助かりました。ありがとうございました。

その他の回答 (3)

noname#25358
noname#25358
回答No.3

>がどのようなことを指しているのかわからないので  えとですね。  つまり普通の GET で渡すのです。  header("http...yshop/confirm_user.php?name=$_POST['name']&passwd=$_POST['passwd']...  とまぁ、このように、引数をそのまま confirm_user.php へ渡すのです。  すると今度は confirm_user.php 側では、$_GET['name'] といった感じで取り出せるようになります。  もっとも、この場合だと error.php と confirm_user.php を統合して1つの php で処理するようにした方がいいと思いますが。

shingetsu
質問者

お礼

何度も質問してもお答えいただきありがとうございます。なんとか解決しましたので、質問は終わらせていただきます。今回教えていただいた点は必ず復習してこなせるようにしたいと思います。ありがとうございました。

shingetsu
質問者

補足

わざわざありがとうございます。 1つのphp処理とありますが、なにぶん勉強をはじめて間もないのでうまくできなかったので、このような形になったのです。もう少しがんばってみたいと思います。 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?name=$_POST['name']&passwd=$_POST['passwd']....&email=$_POST['email']"); } としてみましたが、エラーがでてしまいました。どこか間違えているのでしょうか・・?

  • YSW
  • ベストアンサー率23% (33/141)
回答No.2

無理ですね。 解決する方法はいくつかありますが、 ・error.phpは作らずに、confirm_user.phpでエラー処理を同時に行う。 つまり、エラーの場合だけ header("Location: xxx"); でエラー表示に飛ばす。 ・セッション関数を使う。 のどちらかが一般的だと思います。

shingetsu
質問者

お礼

回答ありがとうございます。 同時に処理を行おうとやってみましたが、なにぶん勉強始めたばかりでうまくできませんでした。もう少し頑張ってみようと思います。

noname#25358
noname#25358
回答No.1

 残念ながら送れません。  それと、ACTION= のところに複数のURLを書くこともできません。  データは error.php からさらに confirm_user.php へ橋渡ししてください。

shingetsu
質問者

補足

回答ありがとうございます。 そうですか・・やはり送れないのですね。 自分で試してもエラーがでるか表示されないばかりでしたので、望みをかけて質問した次第であります。 よろしければ >>error.php からさらに confirm_user.php へ橋渡ししてください がどのようなことを指しているのかわからないので教えていただけないでしょうか?よろしくお願いします。

関連するQ&A

  • PHPについて教えてください。

    こんにちは。いつもお世話になります。shingetsuです。先日もPHPについて質問させていただいたのですが、また別のことで行き詰ったのでよろしければアドバイスをいただければと思います。よろしくお願いします。 if(!$_POST['name'] OR !$_POST['passwd'] OR !$_POST['address'] OR !$_POST['tel'] OR !$_POST['email']){ echo ("空欄があります。すべて記入して下さい。"); }else{ echo ("登録ありがとうございます。"); } というプログラムで、「登録ありがとうございます。」という箇所を別のPHPに誘導できるリンクにしたいのですが、どのような方法がありますでしょうか。 HTMLを使えば可能なわけですが、PHPとなるとどうなるのかわからなくなりました。簡単なヒントなどでもよろしいので教えてください。お願いします。

    • ベストアンサー
    • PHP
  • セッション変数に対するエラー表示

    こんにちは。いつもお世話になっています shingetsuです。 PHPをただいま勉強中で、わからないことがあったので質問させていただきます。よろしくお願いします。 現在自分でサイトを作っているのですが、ユーザー登録フォームに空欄があった場合空欄があります、というようなエラーを表示させたいのですが、その表示方法がよくわかりません。 <?php //入力されたデータを読み取る $_SESSION['name'] = $_POST['name']; $_SESSION['passwd'] = $_POST['passwd']; $_SESSION['address'] = $_POST['address']; $_SESSION['tel'] = $_POST['tel']; $_SESSION['email'] = $_POST['email']; このように読み取ってから、ここでif文を使ってエラーを表示させればいいのでしょうか?それとももっと簡単な方法がありますでしょうか?PHPの本を読んでみましたが載ってなく、ネット検索してみようにも検索方法がよくわからないのでヒントやアドバイスをよろしければ教えてください。お願いします

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

    PHP初心者です。 ロリポップで登録したPHPMyadminでユーザー名やパスワード等を入力する表を作成しています。 更新又は削除ボタンが押されたときにこういう処理をする、という命令を出すページで躓いています。 <?php $db = new PDO('mysql:host=●●;dbname=●●;charset=utf8', '●●', '●●'); try { if (isset($_POST['update'])) { $stt = $db->prepare('UPDATE `date` SET sid=:sid, uid=:uid, name=:name, email=:email, passwd=:passwd WHERE sid=:sid'); $stt->bindValue(':sid', $_POST['sid']); $stt->bindValue(':uid', $_POST['uid']); $stt->bindValue(':name', $_POST['name']); $stt->bindValue(':email', $_POST['email']); $stt->bindValue(':passwd', $_POST['passwd']); } elseif (isset($_POST['delete'])) { $stt = $db->prepare('DELETE FROM `date` WHERE sid=:sid'); } $stt->bindValue(':sid', $_POST['sid']); $stt->execute(); } catch(PDOException $e) { die('エラーメッセージ'.$e->getMessage()); } header('Location:●●'); ?> 毎回どうしても $stt->bindValue(':sid', $_POST['sid']); Fatal error: Call to a member function bindValue() on a non-object というエラーが出てしまいます。 sidが存在していないのに要求しているのだと思うのですが、PHPMyAdminでsidというカラムはきちんと存在しています。 何が間違っているのでしょうか。 記入している内容にも間違いがあったらご指摘お願いします。 回答よろしくお願いします。

    • ベストアンサー
    • PHP
  • php post

    phpで質問です。 ページ1でユーザーにフォームから入力されたページをページ2でサニタイズをし確認のため表示しページ3でページ 1に入力された値をそのままdbに入れたいのですが、どうすればページ1で受け取ったデータを2.3に送信できますか?ページ2では確認のため表示したあとに登録か修正か尋ねるフォーム(登録がのname='add')のようにしています。 ページ2の 確認フォーム<form action="3.php" method="post"> <button type="submit" name="remove" class="pre">修正</button> <button type="submit" name="add" value="true" class="button">登録</button> </form>

    • ベストアンサー
    • 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
  • 携帯電話のページでphpでカンタンログインを

    携帯電話のページでphpでカンタンログインと日記作成を下記ページを参考にして行っています。 参考「PHP×携帯サイト 実践アプリケーション集」(ソフトバンククリエイティブ)。 PHP×携帯サイト 実践アプリケーション集」のサンプル09での 携帯SNSアプリの作成の項目をサンプルのPHPをみながら進めていましたが、どうやっても データーベースのエラーが新規ログインででてきてしまいます。 DBの接続状況は確認しても問題なく接続されているんですがエラー処理をかえされます。 PHPMYADMINでテーブルをみてみても入力したデーターははいってはいませんでした。 つまずいてるのはユーザー登録ページ(reguser.php)です。 未登録であればユーザー登録のためのフォームを表示 登録ずみであればマイページへリダイレクト のように分岐する仕様でユーザー登録はニックネームと自己紹介うぃお入力し登録ボタンを押すと自分自身のプログラムに対して値がPOSTされるのでPOSTされた値と個体識別番号を習得してDBに格納する処理フローになります。 未登録であればユーザー登録のためのフォームを表示まではできているのでDBを参照していると思われます。 入力でのエラーとういうよりは個体識別番号の個所かDBへ書き込みで不具合がでてる感じがしますがさっぱり原因がわかりません。 こちらの参考ソースは下記のURLにUPしてあります。 http://sjfzpr.xsrv.jp/9.zip 私は初心者であまりPHPやプログラムには詳しくなく、このような配布されたプログラムを何とか利用できるレベルです。よろしくお願い致します。

    • 締切済み
    • PHP
  • PHPを使用してパスワード認証の画面を作成したいと思っております。

    現在運営しているWEBサイトのページに、パスワードのみのログイン画面へのリンクを張り、 パスワード認証が成功した場合は会員専用ページ(yes.html)に飛び、失敗の場合はエラーページ(no.html)に飛ばすようにしたいと思っております。 他でソースを教えていただいて、下記のように作成してみたのですが、 56行目の</html>の行でエラー(Parse error: on line 56)が出てしまいます。 私はまったく知識がありませんので、どこがおかしいのか見当がつきません。 知識をお持ちの方、どなたかご教示いただけませんでしょうか。 よろしくお願い申し上げます。 <?php //まずパスワード受け取ってない //かりにPOSTで送られているとすると $post_pass = $_POST['password']; $user_pass = "1111"; $ok = "./yes.html"; $error = "./no.html"; $script = "./login2.php"; $doc_title = "テスト"; if(!isset($ver)) { $ver = '1.05.1'; } if(!isset($pass)) { $pass = $user_pass; //これだと$passも1111 だし$user_passも1111 //だから下で1111==1111でOKに行く if($user_pass == $post_pass){ if($passwd == $pass){ header("Location: $ok"); }elseif($passwd){ header("Location: $error"); } } ?> <html> <head> <title><?php echo $doc_title; ?></title> <meta http-equiv="Content-Type" content="text/html;Charset=Shift_JIS"> <script type="text/javascript"> <!-- function check() { if(document.formxx.passwd.value.length == 0) { alert("パスワードが入力されてません"); return false; } return true; } //--> </script> </head> <body> <h3><?php echo $doc_title; ?></h3> <form action="<?php echo $script; ?>" method="post" name="formxx"> <input type="password" name="passwd" size="15"> <input type="submit" value=" login " onClick="check()"> <form> </body> </html>

    • ベストアンサー
    • PHP
  • PHP5.2.2について

    はじめまして、こんばんは。 PHPを触り始めて間もない者ですが、困り果てて投函させて頂くことにいたしました。 先日、OS(WinXPsp2)を再インストールした際、PHP(5.2.2)、Apache(2.0.59)、MySQL(4.1.22)を以前利用していたものより新しいバージョンをインストールしたのですが、以前作成したスクリプトを表示させたところ、これまで何ら問題ないところでエラーが出てきて、その対処が分からずご指導いただければ・・と思っております。 index.php <?php session_start(); require_once("./auth.php");  ・  ・ auth.php <?php session_start();//Notice: A session had already been started - ignoring session_start() $mail = $_POST['mail'];//Notice: Undefined index: mail $passwd = $_POST['passwd'];//★ if($mail != "" || $passwd != ""){  ・  ・ 上記、コメントの箇所にエラーが出てしまうのですが、これまでは同じソースでも問題がなかったための質問です。説明不足名ところがあるかとは思いますが、上記エラーはインストール時の設定が間違っているのか?それともバージョンによるものなのか?(その場合は対処法など・・)を知りたく投函させていただきました。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPのセッションについて。

    <?php if(isset($_POST['cmdSubmit'])){ session_start(); $user = $_POST['user_name']; $_SESSION['user_name'] = $user;  header('Location:./test.php'); } ?> アンケートフォームの内容をセッションに入れて 別ページで <?echo $_SESSION['user_name'];?> という感じで出力させたいのですがうまく行きません。 セッションに登録されているかチェックするために 移動する前にecho $_SESSION['user_name']; で内容が表示されるかどうか確認したのですが そのときは問題なく内容が表示されるので、 headerで他のページに移動する前までは問題なさそうだと思います。 なにかアドバイスいただけたらとおもいます。 よろしくおねがいします。

    • ベストアンサー
    • PHP
  • enter.php:さくらスタンダードで動かない。

    下記のenter.phpのコードですが、さくらレンタルサーバのスタンダードプランに移動してから正しく動作しなくなりました。 さくらで設定しているPHPのバージョン:PHP 5.2.17 [標準のPHP] (CGI版) モジュール版は利用不可能です。 現在の動作としては、「確認画面へ進む」ボタンを押すと、入力エラーの確認はきちんとできます。入力内容に問題がなければ、mail.phpへページが移動するはずなのですが、enter.phpからmail.phpへ画面が切り替わらず入力フォームも表示されなくなり、enter.phpの背景のみ表示されてしまいます。 そこで、mail.phpのURLをブラウザーのアドレスバーに直接入力すると、mail.phpが正しく表示されます(データはenter.phpからmail.phpにちゃんと送られているようです。)。 どなたか、どこが悪いか教えてください。 <enter.php> <?php session_start(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> </head> <body> <?php if (isset($_SESSION['input_data'])) { $input_data = $_SESSION['input_data']; $_SESSION = array(); session_destroy(); } if (isset($_POST['confirm'])) { $isErr = false; if (strlen(trim($_POST['inquiry'])) == 0) { $isErr = true; $error_inquiry = '内容を入力してください。'; } if (!$isErr) { $_SESSION['input_data'] = $_POST; header('Location: http://www.example.com/contact/mail.php'); exit; } else { $input_data = $_POST; } } ?> <form action="enter.php" method="post"> <table> <?php if (isset($error_inquiry)) { echo $error_inquiry;} ?> <tr> <td> * </td> <td> 内容 </td> <td> <textarea name="inquiry" cols="35" rows="20"><?php echo htmlspecialchars($input_data['inquiry'], ENT_QUOTES, 'UTF-8') ?></textarea> </td> </tr> <tr> <td colspan="3"> <div> <input type="submit" name="confirm" value="確認画面へ進む"> </div> </td> </tr> </table> </form> </body> </html>

    • ベストアンサー
    • PHP

専門家に質問してみよう