フォームの内容を送信しようとするとエラーが出る

このQ&Aのポイント
  • 最近、PHPを勉強し始めた初心者です。よくわかるPHPの教科書(毎日コミュニケーションズ刊)の239ページに載っているサンプルプログラムを参考に入力フォームに記入した内容を確認ページに反映したいのですが、エラーが出てしまいます。ヘッダが既に送信されているため、ヘッダを変更できなかったとのことです。どこが間違っているのでしょうか?
  • PHPを勉強し始めた初心者ですが、入力フォームに記入した内容を確認ページに反映する際にエラーが出てしまいます。既にヘッダが送信されているため、ヘッダを変更できなかったとのエラーメッセージが表示されます。どこに問題があるのか教えてください。
  • PHP初心者です。入力フォームに記入した内容を確認ページに反映しようとすると、ヘッダが既に送信されているためエラーが発生します。ヘッダの変更ができない理由や解決策を教えてください。
回答を見る
  • ベストアンサー

フォームの内容を送信しようとするとエラーが出る

最近、PHPを勉強し始めた初心者です。 よくわかるPHPの教科書(毎日コミュニケーションズ刊)の239ページに載っているサンプルプログラムを参考に入力フォームに記入した内容を確認ページに反映したいのですが Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\bkconnect.php:10) in C:\xampp\htdocs\input.php on line 31 というエラーが出てしまいます。ヘッダが既に送信されているのでヘッダを変えることができなかったみたいなのですが。 どこがいけないのでしょうか? ●input.php <?php session_start(); require('bkconnect.php'); if (!empty($_POST)) { //エラー項目の確認 if ($_POST['title'] == '') { $error['title'] = 'black'; } if ($_POST['hira'] == '') { $error['hira'] = 'black'; } if ($_POST['management'] == '') { $error['management'] = 'black'; } $fileName = $_FILES['image']['title']; if (!empty($fileName)) { $ext = substr($fileName, -3); if ($ext != 'jpg' && $ext != 'gif') { $error['image'] = 'type'; } } if (empty($error)) { //画像をアップロードする $image = date('YmdHis') . $_FILES['image']['title']; move_uploaded_file($_FILES['image']['tmp_title'], ' ./book_picture/' . $image); $_SESSION['join'] = $_POST; $_SESSION['join']['image'] = $image; header('Location: check.php'); } } //書き直し if ($_REQUEST['action'] == 'rewrite') { $_POST = $_SESSION['join']; $error['rewrite'] = true; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>追加入力フォーム</title> <link rel="stylesheet" type="text/css" href="book.css"> </head> <body> <center> <div> ・・・ よろしくお願いします。

  • PHP
  • 回答数3
  • ありがとう数4

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

  • ベストアンサー
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.3

ん~・・・ ちょっと、その本を書いた人の意図がわかりませんが、bkconnect.php は <?php ~ ?> の部分だけで済む話な気がしないでもないです。 bkconnect.php を HTML部分を 全消しで 以下だけにしてみてください。 <?php mysql_connect('localhost', 'root', '') or die(mysql_error()); mysql_select_db('book_db'); mysql_query('SET NAMES UTF8'); ?> もしくは、input.php の require('bkconnect.php'); を消して、そこに↓を入れてみてください。 mysql_connect('localhost', 'root', '') or die(mysql_error()); mysql_select_db('book_db'); mysql_query('SET NAMES UTF8');

shorinji36
質問者

お礼

回答有難うございます。 >bkconnect.php を HTML部分を 全消しで 以下だけにしてみてください データベースの共通プログラムはデンプレ必要ないようでした。

その他の回答 (2)

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.2

若干、勘違いがあるようなので ツッコまさせていただきますが、「既にヘッダーが送られている」のではなく「ヘッダーの前に何かが既に出力されている」から出るエラーです。 その何かが出力されている箇所が >>1 さんがピックアップしている、「bkconnect.php の 10行目」なのです。 提示されたものには、bkconnect.php のソースが無いようですので、正確な所は 不明です。

shorinji36
質問者

お礼

回答有難うございます。 bkconnect.phpはデータベースにアクセスするプログラムです。 ●bkconnect.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>データベース接続</title> </head> <body> <?php mysql_connect('localhost', 'root', '') or die(mysql_error()); mysql_select_db('book_db'); mysql_query('SET NAMES UTF8'); ?> </body> </html>

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.1

output started at C:\xampp\htdocs\bkconnect.php:10

関連するQ&A

  • PHPの画像アップ時の拡張子制限とエラー表記の方法

    PHP初心者です。画像をDBにアップロードする際jpgの場合のみアップできるようにして、 それ以外の場合エラーメッセージを表記させたいのですが、上手くいきません。 下記がソースになります。 if(!empty($_POST)) { if($_POST['image'] == '') { $error['image'] = 'blank'; } //画像エラーの確認 $fileName = $_FILES['image']['name']; if(!empty($fileName)) { $ext = substr($fileName, -3); if($ext !='jpg') { $error['image'] = 'type'; } } if(empty($error)) { //画像をアップロードする $image = date('YmdHis') . $_FILES['image']['name']; move_uploaded_file($_FILES['image']['tmp_name'], '../member_picture/' . $image); $_SESSION['join'] = $_POST; $_SESSION['join']['image'] = $image; header('Location: content_upload.php'); } } //メッセージを記録する if (!empty($_POST)) { if ($_SESSION['join']['image'] !='') { $sql = sprintf('INSERT INTO post SET member_id=%d,message="%s", title="%s", image="%s", created=NOW()', mysql_real_escape_string($member['id']), mysql_real_escape_string($_POST['message']), mysql_real_escape_string($_POST['title']), mysql_real_escape_string($_SESSION['join']['image']) ); mysql_query($sql) or die(mysql_error()); header('Location: content_upload.php'); } } (以下body) <form action="" method="post" enctype="multipart/form-data"> <dl> <dt>ログイン名:<?php echo $member['name']; ?>投稿画面<br><br>タイトル</dt> <dd> <input type="text" name="title" size="35" maxlength="255" value="<?php echo h($_POST['title']); ?>" /> </dd> <dt>メッセージ</dt> <dd> <input type="text" name="message" size="35" maxlength="255" value="<?php echo h($_POST['message']); ?>" /> </dd> <dt>写真 <span class="required">必須</span></dt> <dd> 画像<br> <input type="file" name="image" /> <?php if($error['image'] == 'type'): ?> <p class="error">* 画像は「.jpg」の画像を指定してください</p> <?php endif; ?> <?php if($error['image'] == 'blank'): ?> <p class="error">* 恐れ入りますが、画像を改めて指定してください</p> <?php endif; ?> </dd> </dl> <div><p><input type="submit" value="投稿する" /></p></div> </form> 「//メッセージを記録する」で画像がないと何もDBに入らないようにしたはずですがtitleとmessageは必ず入り、違う拡張子の画像を入れても「date('YmdHis')」部分だけは入ってしまいます。 エラーメッセージはどうしても出ません。初歩的なミスかもしれませんが宜しくお願いします

    • ベストアンサー
    • PHP
  • PHPでimageファイルをアップロードする際、

    PHPでimageファイルをアップロードする際に、デジカメのサイズでは大きすぎるので小さなサイズでアップロードしたいと思っています。 <?php $error = ""; if (isset($_POST["submit"])) { $fileName = $_FILES['image']['name']; if (!empty($fileName)) { $ext = substr($fileName, -3); if ($ext != 'jpg' && $ext != 'gif' && $ext != 'png') { $error['image'] = 'type'; } } if (empty($error)) { // 画像をアップロードする $image = date('His') . $_FILES['image']['name']; move_uploaded_file($_FILES['image']['tmp_name'], 'image/' . $image); $_POST['image'] = $image; $error = "アップロード成功!"; } else { $error = "アップロード失敗!"; } } ?> 上記のコードだとそのままのファイルサイズでアップされるのですが、サイズを(400px、300px)の様に小さくしてアップする方法はないでしょうか? 現状ではフォトショップなどで一度画像を小さくしてアップしています。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHPでDBとディレクトリへの画像データ登録方法

    初めて質問させていただきますPHP初心者です。 画像投稿画面を作り、DB(imageフィールド)と任意のディレクトリ(member_picture)へ画像を保存するページを考えてます。 下記が作ったソースになるのですが、 id、message、titleフィールドにはちゃんと投稿内容が入るのですが、 どうしてもimageだけがフィールドにもディレクトリにも入りません。 アドバイスいただけますでしょうか。 <?php session_start(); if(!empty($_POST)) { //画像エラーの確認 $fileName = $_FILES['image']['name']; if(!empty($fileName)) { $ext = substr($fileName, -3); if($ext !='jpg') { $error['image'] = 'type'; } } if(empty($error)) { //画像をアップロードする $image = date('YmdHis') . $_FILES['image']['name']; move_uploaded_file($_FILES['image']['tmp_name'], '../member_picture/' . $image); $_SESSION['join'] = $_POST; $_SESSION['join']['image'] = $image; header('Location: content_upload.php'); } } //記録する if (!empty($_POST)) { if ($_POST['title'] !='') { $sql = sprintf('INSERT INTO post SET member_id=%d, message="%s", title="%s", image="%s", created=NOW()', mysql_real_escape_string($member['id']), mysql_real_escape_string($_POST['message']), mysql_real_escape_string($_POST['title']), mysql_real_escape_string($_POST['image']) ); mysql_query($sql) or die(mysql_error()); header('Location: content_upload.php'); } } ?> <!DOCTYPEうんぬん・・> <html うんぬん・・> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" type="text/css" href="style.css" /> <title>画像投稿ページ</title> </head> <body><div id="wrap"> <div id="head"><h1>画像投稿ページ</h1></div> <form action="" method="post" enctype="multipart/form-data"> <dl><dt>投稿画面</dt> <dd>画像<br> <input type="file" name="image" /> <?php if($error['image'] == 'type'): ?> <p class="error">* 画像は「.jpg」の画像を指定してください</p> <?php endif; ?> <?php if(!empty($error)): ?> <p class="error">* 恐れ入りますが、画像を改めて指定してください</p> <?php endif; ?> </dd> </dl> <div> <p><input type="submit" value="投稿する" /></p> </div> </form> </div> </div> </body> </html> 以上になります。 どこを注意したらいいのかもわからず困ってます! よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • php ひとこと掲示板について

    お世話になります。 現在php初心者で勉強中のものです。 現在「ひとこと掲示板を作る」というのをやっています。 ちなみに書籍はたにぐちまことの よくわかるPHPの教科書です。 1 ログイン画面で ハンドルネーム アドレス 写真を入れる項目があるのですが、画像を入れても check.phpで 画像が×になります。 解決方法が知りたいです。 2 登録と押しても登録できません エラーは出ませんがMyAdominに会員登録情報のデータも送信されていませんでした。 ソース index.php <?php require('../dbconnect.php'); session_start(); if (!empty($_POST)){ //エラーの確認 if ($_POST['name'] == ''){ $error['name'] ='blank';} if ($_POST['email'] == ''){ $error['email'] = 'blank';} if (strlen($_POST['password']) < 4) { $error['password'] = 'length';} if($_POST['password'] == ''){ $error['password'] = 'blank';} $fileName = $_FILES['image']['name']; if (!empty($fileName)) { $ext = substr($fileName, -3); if ($ext !='jpg' && $ext !='gif'){ $error['image'] = 'type'; } } //重複アカウントのチェック if(empty($error)){ $sql = sprintf('SELECT COUNT(*) AS cnt FROM members WHERE email="%s"', mysql_real_escape_string($_POST['email'])); $record = mysql_query($sql) or die(mysql_error()); $table = mysql_fetch_assoc($record); if($table['cnt'] > 0){ $error['email'] = 'duplicate'; } } if(empty($error)){ //画像をアップロードする $image = date('YmdHis') . $_FILES['image']['name']; move_uploaded_file($_FILES['imge']['tmp_name'], '../member_picture/'. $image); $_SESSION['join']=$_POST; $_SESSION['join']['image'] = $image; header('Location: check.php'); exit(); }} //書き直し機能 if ($_REQUEST['action'] == 'rewrite') { $_POST = $_SESSION['join']; $error['rewrite'] = true;}?> <p>会員登録画面に必要事項を記入ください</p> <form action="" method="post" enctype="multipart/form-data"> <dl> <dt>ハンドルネーム<span class="required">必須</span></dt> <dd> <input type="text" name="name" size="35" maxlegth="255" value="<?php echo htmlspecialchars($_POST['name'], ENT_QUOTES,'UTF-8'); ?>" /> <?php if($error['name'] == 'blank'):?> <p clas="error">*ハンドルネームを入力してください</p> <?php endif; ?> </dd> <dt>メールアドレス<span class="required">必須</span></dt> <dd><input type="text" name="email" size="35" maxlegth="225" value="<?php echo htmlspecialchars($_POST['email'],ENT_QUOTES,'UTF-8');?>" /> <?php if($error['email'] == 'blank'): ?> <p class="error">*メールアドレスを入力してください</p> <?php endif; ?> <?php if($error['email'] =='duplicate'): ?> <p class="error">*指定されたメールアドレスは既に登録されています</p> <?php endif; ?> </dd> <dt>パスワード<span class="required">必須</span></dt> <dd><input type="password" name="password" size="10" maxlength="20" value="<?php echo htmlspecialchars($_POST['password'], ENT_QUOTES,'UTF-8'); ?>" /> <?php if($error['password'] == 'blank'): ?> <p class="error">*パスワードを入力してください</p> <?php endif; ?> <?php if($error['password'] == 'length'): ?> <p class="error">*パスワードは4文字以上で入力してください</p> <?php endif; ?></dd> <dt>写真など</dt> <dd><input type="file" name="image" size="35"/> <?php if ($error ['image'] == 'type'): ?> <p class="error">写真などは[.gif]または[.jpg]の画像を指定してください</p> <?php endif; ?> <?php if (!empty($error)): ?> <p class="error">恐れ入りますが画像を改めて指定してください</p> <?php endif; ?> </dd> <div><input type="submit" value="入力内容を確認する"/></div></form> check.php <?php session_start(); require('../dbconnect.php'); if(!isset($_SESSION['join'])) { header('Location: index.php'); exit();} if(!empty($_POST)) { //登録処理をする $sql = sprintf('INSERT INTO members SET name="%s", email="%s", password="%s",picture="%s",created="%s"', mysql_real_escape_string($_SESSION['join']['name']), mysql_real_escape_string($_SESSION['join']['email']), mysql_real_escape_string(shal($_SESSION['join']['password'])), mysql_real_escape_string($_SESSION['join']['image']), date('Y-m-d H:i:s')); mysql_query($sql) or die(mysql_error()); unset($_SESSION['join']); header('Location: thanks.php'); exit(); }?> <form action="" method="post" <input type="hidden" name="action" value="submit"/> <dl> <dr>ハンドルネーム</dr> <dd> <?php echo htmlspecialchars($_SESSION['join']['name'],ENT_QUOTES, 'UTF-8'); ?></dd> <dt>メールアドレス</dt> <dd> <?php echo htmlspecialchars($_SESSION['join']['email'],ENT_QUOTES, 'UTF-8'); ?></dd> <dt>パスワード</dt> <dd>[表示されません]</dd> 文字制限でここまでです すみません。 お願いいたします。

    • ベストアンサー
    • PHP
  • PHP初心者です。エラーが出て困っております。

    ※下記がスクリプトです。((エラーは最下部にございます。) <?php require('../dbconnect.php'); session_start(); if (!empty($_POST)) { // エラー確認 if (isset($_POST['name']) == '') { $error['name'] = 'blank'; } if (isset($_POST['mail1']) == '') { $error['mail1'] = 'blank'; ..........省略 } } // 重複アカウントチェック if (isset($_POST['mail1'])) { if (empty($error)) ; $sql = sprintf('SELECT COUNT(*) AS cnt FROM ○○ WHERE mail1="%s"', mysql_real_escape_string($_POST['mail1']) ); $record = mysql_query($sql) or die(mysql_error()); $table = mysql_fetch_assoc($record); if ($table['cnt'] > 0) { $error['mail1'] = 'duplicate'; } } if (empty($error)) { // 画像をアップロードする $upfile = date('YmdHis') . $_FILES['upfile']['name']; move_uploaded_file($_FILES['upfile']['tmp_name'], '../member_picture/' . $upfile); $_SESSION['join'] = $_POST; $_SESSION['join']['upfile'] = $upfile; header('Location: check.php'); } } // 書き直し if (isset($_REQUEST['action']) == ('rewrite')) { $_POST = $_SESSION['join']; $error['rewite'] = true; } ?> <html.....省略 <body> <h1>会員登録</h1> <div id="content"> <p>記入ください。</p> <form action="" method="post" enctype="multipart/form-data"> <dl> <dt>ニックネーム<span class="required">必須</span></dt> <dd> <input type="text" name="name" size="35" maxlength="255" value="<?php if (isset($_POST['name'])) {echo htmlspecialchars($_POST['name'],ENT_QUOTES, 'UTF-8'); } ?>" /> <?php if (!isset($error['name'])) {$error['name']="blank";} if ($error['name'] == 'blank'): ?> <p class="error">* ニックネーム</p> <?php endif; ?> </dd>................続く ※エラーは、 Notice Undefined index: name in....... です。 どうすれば上記エラーが消えますでしょうか? また、その際はどこをどのように直せばよろしいでしょうか。 お手数をおかけ致しますが、お力をお貸しいただければ嬉しく思います。 お願い致します。

    • ベストアンサー
    • PHP
  • $error配列がUndefined indexに

    簡単な入力フォームを初心者用の本に沿って作成しているのですが、 入力フォームのチェックで$error配列を使う部分で、 nameがblankかどうか確認する部分で、なぜかnameがNotice: Undefined indexとなってしまいます。 お詳しい方、下記のコードを見て何か原因をお分かりになりますでしょうか? <?php session_start(); if(!empty($_POST)){ if($_POST['name']==''){ $error['name']='blank'; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Upload</title> </head> <body> <form action="" method="post" enctype="multipart/form-data"> <p>次のフォームに必要事項をご記入下さい。</p> <dl> <dt>ニックネーム<span class="required">必須</span></dt> <dd><input type="text" name="name" size="35" maxlength="255" value="<?php echo htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8'); ?>" /> <?php if ($error['name'] == 'blank'): ?> <p class="error">* ニックネームを入力してください</p> <?php endif; ?> </dd> </dl> </form> </body> </html>

    • 締切済み
    • PHP
  • PHP 問い合わせフォームの文字化け

    はじめまして。 会員648です。 Websiteを作成し、問い合わせフォームで 入力をHTML、チェック・確認画面、送信をPHPで 作成しました。 初心者なので、サイトでの作成事例をまねております。また文字化けは UTF-8を書けば良い ということも サイトにあったので、とりあえずそうしました。 しかし 他のHTMLは正常に表示しますが、HTMLの入力画面、PHPチェック画面 すべて  文字化けします。 入力画面は <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <form method="post" action="check.php"> ですが 文字化け表示となります。 内容確認画面は check.php で <?php // フォームデータが空の場合は処理終了 if (empty($_POST)) { echo "処理終了"; exit; } // セッションの開始 session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> で始まります。 詳しくPHPを知りませんので、どこが問題なのか 教えていただけませんでしょうか。 なお、テスト環境は 自分のPCで Xampp をインストールして、htdocs 配下に すべての HTML, CSS, image,php を 置いております。 なにとぞ よろしくお願いいたします。

    • 締切済み
    • PHP
  • 入力フォーム内容のDB保存について

    MySQLへの登録処理についての質問お願いします。 サイトの登録用ページを作っていていて、PHPでmySQLにデータを保存する。 というながれのプログラムを作っています。 空白のまま「送信」を押すと、空白エラー「メールアドレスを入力してください」のメッセージが出るようになっています。 その後のDB保存がどうしてもうまくいかないので間違えをご指摘いただければ幸いです。 DB接続は、 'データベースに接続しました'と表示されています。 soushin.phpの最後に記述しているheader('Location: soushin.php');が正しいのかもわかりません。 よろししくお願いします。 //index.php <html> <body> <form action="" method="POST" > <label for="mail">メールアドレス</label> <input name="mail" type="text" id="mail" size="35" maxlength="255" > <?php if($error['mail'] == 'blank'):?> <p class="error">メールアドレスを入力してください</p> <?php endif; ?> <br> <input type="submit" value="上記に同意して仮登録メールを送信"> </form> </body> </html> //soushin.php <?php session_start(); mysql_connect('localhost','my_db','') or die(mysql_error()); echo 'データベースに接続しました'; mysql_select_db('kaiin_touroku'); mysql_query('SET NAMES UTF8'); if (!isset($_SESSION['join'])) {     header('Location: index.php'); exit(); } if (!empty($_POST)){     //登録を処理する     $sql = sprintf('INSERT INTO kaiin_touroku SET mail="%s"',     mysql_real_escape_string($_SESSION['join']['mail']) ); mysql_query($sql) or die(mysql_error()); header('Location: soushin.php'); } ?> <!DOCTYPE HTML> ・ ・ ・ <form action="" method="post">  <dl>  <dd> <?php echo htmlspecialchars($_SESSION['join']['mail'], ENT_QUOTES, 'UTF-8'); ?>に送信いたしました。  </dd>  </dl>  </form>

    • 締切済み
    • PHP
  • phpのエラーについて

    phpでメールフォームを作っています。 メールフォーム(1)、(2)、(3)と3つ作っています。 (2)で確認して記入内容に間違いがなれけば送信して(3)を表示。 間違っていたら(1)に戻るというものです。 確認するページ(2)の記述でParse error: syntax error, unexpected T_STRING in……とエラーが出ます。 その問題の行は、セッションを開始したすぐ下の行の die('不正アクセスの疑いがあります。'); という部分です。 この行と、それより以前・以後を何度も確認しましたがエラーの原因となるものが発見できません…… PHP初心者なのでもうお手上げです>< どなたかご教授よろしくお願いします!!! レンタルサーバーはヘテムルでphpは5.2.8です。 <?php function checkInput($var){ if(is_array($var)){ return array_map('checkInput', $var); } else { if(get_magic_quotes_gpc()){ $var = stripslashes($var); } if(preg_match('/\0/', $var)){ die('不正な入力です。'); } if(!mb_check_encoding($var, 'UTF-8')){ die('不正な入力です。'); } return $var; } } session_start(); $_POST = checkInput($_POST); if(isset($_POST['ticket']) && isset($_SESSION['ticket'])){ $ticket = $_POST['ticket']; if(!in_array($ticket, $_SESSION['ticket'])){ die('不正アクセスの疑いがあります。'); //この行がエラーとなります。 } }else{ die('不正アクセスの疑いがあります。'); } $name = isset($_POST['name']) ? $_POST['name'] : NULL ; $email = isset($_POST['email']) ? $_POST['email'] : NULL ; $name = isset($_POST['comment']) ? $_POST['comment'] : NULL ; $error = array(); if(trim($name) == ''){ $error[] = 'お名前は必須項目です。'; } else if(mb_strlen($name) > 100){ $error[] = 'お名前は100文字以内でお願いします。'; } if(trim($email) == ''){ $error[] = 'メールアドレスは必須項目です。'; } else { $pattern = '/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/iD'; if(!preg_match($pattern, $email)){ $error[] = 'メールアドレスの形式が正しくありません'; } } if(trim($comment) == ''){ $error[] = 'コメントは必須項目です。'; } else if(mb_strlen($comment) > 500){ $error[] = 'コメントは500文字以内でお願いします。'; } $_SESSION['name'] = $name; $_SESSION['email'] = $email; $_SESSION['comment'] = $comment; $_SESSION['error'] = $error; if(count($error) > 0) { $dirname = dirname($_SERVER['SCRIPT_NAME']); $dirname = dirname == DIRECTORY_SEPARATOR ? '' : $dirname; $uri = 'http://' .$_SERVER['SERVER_NAME'] . $dirname . '/○○.php'; header('HTTP/1.1 303 See Other'); header('Location: ' . $uri); } else { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>確認フォーム</title> </head> <body> <div id="form"> <p>以下の内容でよろしければ送信ボタンを押してください。</p> <dl> <dt>お名前:</dt> <dd><?php echo h($name);?></dd> </dl> <dl> <dt>メールアドレス:</dt> <dd><?php echo h($email);?></dd> </dl> <dl> <dt>コメント:</dt> <dd><?php echo nl2br(h($comment));?></dd> </dl> <form action="thank.php" method="post"> <input type="hidden" name="ticket" value="<?php echo h($ticket);?>" /> <input type="submit" name="submit" value="送信する" /> </form> </div> </body> </html> <?php } function h($string) { return htmlspecialchars($string, ENT_QUOTES); } ?>

    • ベストアンサー
    • PHP
  • PHPのフォームでエラーが出ます

    どなたかお力添えをお願いします。 【全体の流れ】 step1.php ラジオボタンで、商品を3種類選択する template.php 選択した商品名を表示し、金額を計算して表示する step2.php 「template.php」を表示し、規約に同意する step3.php 個人情報入力画面へ ・ ・ ・ という流れでフォームを作っていますが、step1.phpでつまずいています(涙)。 step1.phpのコード(html部分は省略してます)は以下のとおりです。 商品を3つ選んだ場合は、問題なく実行できるのですが、1つ、または2つ選択 した場合、画面上部に Notice: Undefined index: plan in C:\xampp\htdocs\step1_1.php on line 10 Notice: Undefined index: uq in C:\xampp\htdocs\step1_1.php on line 11 などとエラーメッセージが出ます。 ほかは正常に動いています。このメッセージを出なくさせる方法をぜひ、教えてください! よろしくお願いいたします。 <?php session_start(); $error = ""; if(isset($_POST["submit"])==TRUE){ $_SESSION["product1"]=$_POST["product1"]; $_SESSION["product2"]=$_POST["product2"]; $_SESSION["product3"]=$_POST["product3"]; $choice1 = $_SESSION["product1"]; $choice2 = $_SESSION["product2"]; $choice3= $_SESSION["product3"]; //未入力チェック if($choice1== null){ $error .="端末を選択してください<br />"; } if($choice2== null){ $error .="プランを選択してください<br />"; } if($choice3== null){ $error .="UQ Wi-Fiサービスの利用有無を選択してください<br />"; } if($error == null){ $url = "step2.php"; header("Location: ".$url); exit(); } } ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう