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

このQ&Aのポイント
  • PHP初心者が画像をDBにアップロードする際、jpgの場合のみアップできるようにしたい。他の拡張子の場合はエラーメッセージを表示させたいが、うまくいかない。
  • 画像の拡張子がjpg以外の場合にエラーメッセージを表示できない。
  • 画像の拡張子制限とエラーメッセージの表示が上手くいかない。初歩的なミスかもしれない。
回答を見る
  • ベストアンサー

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

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

  • ベストアンサー
回答No.4

こんばんは。 >つまり >if($_POST['image'] == '') { >$error['image'] = 'blank'; >} >↑この部分がどこか間違っている(?)。 その通りです。 ここがおかしい(とさっきも言いましたが・・・)です。 $_POSTは、基本的にname=valueのペアで飛んで来る事を忘れないでください・・・。

その他の回答 (3)

回答No.3

こんにちは。 なんか基本的な部分が理解できてないような・・・? >しかし二箇所あるheader('Location: content_upload.php');のうち、 >両方と片方ずつとexit();を何度か入れてみましたが、 >今度はjpg画像でも$error['image'] == 'blank'と同じ「* 恐れ入りますが、画像を改めて指定してください」 >が出るようになってしまいました。。 えーと・・・、 この現象とexit()は、何の関係もありません。 Locationでheader吐いた直後は、両方ともexit()してください。 (じゃないと、以降の処理も走ります) if($_POST['image'] == '') { $error['image'] = 'blank'; } これは必ずTRUEになりますよね? <input type="file" name="image" /> これはvalueがありません(指定できない)ので・・・。 理解できますか? >試しに >$error['image'] = 'type'; >} >} >この下にexit();を入れてみたのですが、ページ自体が白紙になってしまいました。 何でこんなところに入れるの? 意味ありますか?

shunnsuke0620
質問者

お礼

すいません、理解不足で・・ if($_POST['image'] == '')がtrueになっているためエラーメッセージが出るのは理解しております。 <input type="file" name="image" />でvalueが指定できないのも。 でも <?php if($error['image'] == 'type'): ?> <p class="error">* 画像は「.jpg」の画像を指定してください</p> ↑これが正常に作動するということは、 //画像エラーの確認 $fileName = $_FILES['image']['name']; if(!empty($fileName)) { $ext = substr($fileName, -3); if($ext !='jpg') { $error['image'] = 'type'; } } ↑これは間違っていないと。 つまり if($_POST['image'] == '') { $error['image'] = 'blank'; } ↑この部分がどこか間違っている(?)。 $_POSTではなく$_FILESなのかなとも少し思ったのですが、 今度はどの画像でもDBに上がるようになってしまいました・・・ 何度も非常に申し訳ございません。何が足りないのでしょうか? >>試しに >>error['image'] = 'type'; >> >> >>この下にexit();を入れてみたのですが、ページ自体が白紙になってしまいました。 >何でこんなところに入れるの? >意味ありますか? こちらはすいません、if(empty($error))がfalseなので仰るとおり意味なかったです。

回答No.2

こんばんは。 ちょっと回答が短絡的で、分かりにくかったですね・・・。 スミマセン。 >画像がないと何もDBに入らないようにしたはずですがtitleとmessageは必ず入り、 これは、 if (!empty($_POST)) { if ($_SESSION['join']['image'] !='') { ですが、 $_POSTはemptyじゃないので、TRUE。 $_SESSION['join']['image'] !=''もTRUEになってしまいます・・・。 (これは分かりますよね?''じゃないですから・・・) >、違う拡張子の画像を入れても「date('YmdHis')」部分だけは入ってしまいます。 これは、 if(empty($error)) { ここがFALSEでスルーされますが、後は一緒なので・・・。

shunnsuke0620
質問者

お礼

taka451213さん、ご回答有難うございます。exit();。なるほどです。 エラーメッセージがちゃんと表示されて画像以外もDBに入らなくなりました。 しかし二箇所あるheader('Location: content_upload.php');のうち、両方と片方ずつとexit();を何度か入れてみましたが、 今度はjpg画像でも$error['image'] == 'blank'と同じ「* 恐れ入りますが、画像を改めて指定してください」が出るようになってしまいました。。 おそらく$error['image'] == にblankが入ってしまっていると思うのですが、 大変申し訳ありませんがわかりません。 試しに $error['image'] = 'type'; } } この下にexit();を入れてみたのですが、ページ自体が白紙になってしまいました。 大変お手数ですが再度お教え願えますでしょうか。

回答No.1

こんばんは。 >header('Location: content_upload.php'); この後に、 exit();

関連するQ&A

  • 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 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
  • 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勉強中の初心者です。会員登録画面を作り動作確認しているのですが ログインするときに下記のエラーが出ます。 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'nakahiro7'@'localhost' (using password: NO) in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 15 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 15 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'nakahiro7'@'localhost' (using password: NO) in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 16 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 16 Warning: mysql_query() [function.mysql-query]: Access denied for user 'nakahiro7'@'localhost' (using password: NO) in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 18 Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 18 Access denied for user 'nakahiro7'@'localhost' (using password: NO) login.phpのソースは下記です <?php require('dbconnect.php'); session_start(); if ($_COOKIE['email'] != ''){ $_POST['email'] = $_COOKIE['email']; $_POST['password'] = $_COOKIE['password']; $_POST['save'] = 'on'; } if(!empty($_POST)) //ログインの処理 if ($_POST['email'] != '' && $_POST['password'] != ''){ $sql = sprintf('SELECT * FROM member WHERE email="%s" AND password="&s"', mysql_real_escape_string($_POST['email']), mysql_real_escape_string(sha1($_POST ['password']))); $record = mysql_query($sql) or die(mysql_error()); if ($table = mysql_fetch_assoc($record)) { //ログイン成功 $_SESSION['id'] = $table['id']; $_SESSION['time'] = time(); //ログイン情報を記録する if ($_POST['save'] == 'on') { setcookie('email',$_POST['email'],time()+60*60*24*14); setcookie('password',$_POST['password'], time()+60*60*24*14); } header('Location: index.php'); exit();}else{ $error['login'] = 'failed'; }}else{ $error['login'] = 'blank'; } ?> <div id="lead"> <p>アドレスとパスワードを入力しログインしてください</p> <p>メンバーズ登録がまだの方はこちら</p> <p>&raquo;<a href="join/">メンバーズ登録をする</a></p> </div> <form action="" method="post"> <d1> <dt>アドレス</dt> <dd> <input type="text" name="email" size="35" maxlength="255" value="<?php echo htmlspecialchars($_POST['email']); ?>" /> <?php if($error['login'] == 'blank'): ?> <p class="error">*アドレスとパスワードを記入ください</p> <?php endif; ?> <?php if ($eoor['login'] == 'failed'): ?> <p class="error">*ログインに失敗しました。正しく入力してください。</p> <?php endif; ?> </dd> <dt>pasword</dt> <dd> <input type="password" name="password" size="35" maxlength="255" value="<?php echo htmlspecialchars($_POST['password']); ?>" /> </dd> <dt></dt> <dd><input id="save" type="checkbox" name="save" value="on"> <label for="save">次回から自動的にログイン</label> </dd> </d1> <div> <input type="submit" value="Log in"/></div> </form> ググりまくりましたが解決できませんでした。 エラーの解決方法 その他ご指摘ありましたらお願いいたします。

    • ベストアンサー
    • PHP
  • phpからmysqlにデータ保存(テキストと画像)

    登録フォームを作成し、PHPにてMYSQLに情報を保存しようとしています。 テキストデータは問題なく保存できるのですが、画像データが保存できません。 いろいろ調べているのですが、テキストデータと画像データをいっぺんに保存する方法がわかりません。 なんとなくはどこらへんが問題なのかということはわかるのですが、具体的にどうすればいいかがわかりません。 アドバイスをご教示いただけないでしょうか。よろしくお願いします。 【mysqlテーブル】 create table entries ( id int not null auto_increment primary key, name varchar(255), address varchar(255), image1 MEDIUMBLOB NOT NULL, image1 MEDIUMBLOB NOT NULL, ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 【touroku.php】 <?php error_reporting(E_ALL & ~E_NOTICE); if ($_SERVER['REQUEST_METHOD']=="POST") { $name = $_POST['name']; $email = $_POST['email']; $image1 = $_POST['image1']; $image2 = $_POST['image2']; $error = array(); // エラー処理 if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $error['email'] = 'メールアドレスが正しくありません'; } if ($email == '') { $error['email'] = 'メールアドレスが入力されていません'; } // エラーがなかった場合 if (empty($error)) { // DBにデータを入れる mysql_connect("localhost", "ユーザー名", "パスワード") or die("can't connect to DB: ".mysql_error()); mysql_select_db("DB名") or die("can't select to DB: ".mysql_error()); $q = sprintf("insert into entries (name, email, image1, image2) values ('%s', '%s', '%s', '%s')", mysql_real_escape_string($name), mysql_real_escape_string($email), mysql_real_escape_string($image1), mysql_real_escape_string($image2)); mysql_query($q) or die("can't run query: ".mysql_error()); // 登録完了画面に飛ぶ header("Location: http://localhost/.../thanks.html"); } } ?> <!DOCTYPE html> <html lang="ja"> <meta charset="UTF-8"> <title>登録フォーム</title> <head> </head> <body> <form method="post" action=""> <p>名前:</p> <input type="text" name="name" value="<?php echo htmlspecialchars($name); ?>"> <?php if ($error['name']) echo $error['name']; ?> <p>メールアドレス</p> <input type="text" name="email" value="<?php echo htmlspecialchars($email); ?>"> <?php if ($error['email']) echo $error['email']; ?> <br> <p>画像1:</p> <input type="file" name="image1"> <p>画像2:</p> <input type="file" name="image2"> <p><input type="submit" value="登録"></p> </form> </body> </html>

    • ベストアンサー
    • PHP
  • PHP入門書で勉強中の初心者

    PHP初心者です。 現在PHPの入門書で勉強中なのですが その中の「一言掲示板を作ってみよう」という内容を今やっていますがエラーが出てしまいます。ググってもググってもよくわからず質問させていただきます。 dbconnect.php ソース <?php mysql_connect('mysql.hostinger.jp','u666462996_*****','******') or die(mysql_error()); mysql_select_db('u666462996_*****'); mysql_query('SET NAMES UTF8'); ?> サーバーのパス ユーザー名は****とさせていただきます。 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> <dt>写真など</dt><dd> <img src="../member_picture/<?php echo $_SESSION['join'] ['image']; ?>" with="100" height="100" alt="" /> </dd> </dl> <div><a href="index.php?action=rewrite">&laquo;&ndsp;入力しなおす</a> | <input type="submit" value="登録する"/></div></form> check.phpを開いたらエラーが出ます。 エラー Warning: require(../dbconnect.php) [function.require]: failed to open stream: No such file or directory in /home/u666462996/public_html/check.php on line 2 Fatal error: require() [function.require]: Failed opening required '../dbconnect.php' (include_path='.:/opt/php-5.2/pear') in /home/u666462996/public_html/check.php on line 2 エラー内容 解決方法をお願いいたします。 dbconnect.phpもエラーが出てましたが phpを5.5から5.2に設定しなおすとエラーはなくなりました。 これもどういうことでしょうか。 ひとつお力を貸してくださいませ。

    • ベストアンサー
    • PHP
  • エラーの意味がどうしてもわからない(PHP)

    ●質問の主旨 Parse error: syntax error, unexpected 'maker_id' (T_STRING) in C:\xampp\htdocs\shop\input_do.php on line 23 というエラーが出ます。なぜエラーが出るのか分かりません。 エラーを表示させないためには、下記のコードをどのように 書き換えればよいでしょうか?ご存知の方、ご教示願います。 ●質問の補足 1.HTMLフォームinput.php(添付画像)に情報を入力。登録ボタンを押す ↓ 2.受付画面(input_do.php)に遷移 という流れを作りたいのですが、上記のエラーが出ます。 もちろんデータベース(mydb3)やテーブル(my_items)は、 すでにphpmyadminに用意しています。 ●開発環境 windows8 xammp1.8.1 ●参考文献 たにぐちまこと 「よくわかるPHPの教科書」P200 ●コード (input.php) <!DOCTYPE html> <html lang="ja"> <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> <div id="content"> <p style="margin-top: 20px"> <?php mysql_connect('localhost', 'root','') or die(mysql_eror()); mysql_select_db('mydb3') or die(mysql_error()); mysql_query('SET NAMES UTF8'); $sql = sprintf('INSERT INTO my_items SET maker_id=%d, item_name="%s", price=%d, keyword="%s", mysql_real_escape_string($_POST['maker_id']), mysql_real_escape_string($_POST['item_name']), mysql_real_escape_string($_POST['price']), mysql_real_escape_string($_POST['keyword']) ); mysql_query($sql) or die(mysql_error()); ?> </p> </div> <p>商品を登録しました</p> <div id="foot"> <p><img src="images/txt_copyright.png" width="136" height="15" alt="(C) H2O Space. MYCOM" /></p> </div> </div> </body> </html> (input_do.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" /> <link rel="stylesheet" type="text/css" href="style.css" /> <title>商品登録</title> </head> <body> <div id="wrap"> <div id="head"> <h1>商品登録</h1> </div> <div id="content"> <p>登録する商品の情報を記入してください。</p> <form id="frmInput" name="frmInput" method="post" action="input_do.php"> <dl> <dt> <label for="maker_id">メーカーID</label> </dt> <dd> <input name="maker_id" type="text" id="maker_id" size="10" maxlength="10" /> </dd> <dt> <label for="item_name">商品名</label> </dt> <dd> <input name="item_name" type="text" id="item_name" size="35" maxlength="255" /> </dd> <dt> <label for="price">価格</label> </dt> <dd> <input name="price" type="text" id="price" size="10" maxlength="10" /> 円</dd> <dt> <label for="keyword">キーワード</label> </dt> <dd> <input name="keyword" type="text" id="keyword" size="50" maxlength="255" /> </dd> <input type="submit" value="登録する" /> </form> </div> <div id="foot"> <p><img src="images/txt_copyright.png" width="136" height="15" alt="(C) H2O Space. MYCOM" /></p> </div> </div> </body> </html>

    • ベストアンサー
    • PHP
  • どうしてもPHPのエラーが消えまえん。

    今週からPHPを勉強し始めました。 書籍を元に勉強をしているのですが、書籍通りの内容で書き、 どんなに調べても、どうしてもエラーが消えません。 お知恵をお貸し頂けると幸いです。 エラー内容はコチラです。 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':20130514235839, created="2013-05-15 08:27:09"' at line 1 エラーページのコードは下記です。 <?php session_start(); require('../function.php'); if(!isset($_SESSION['sign_up'])){ header('Location: index.php'); exit(); } if (!empty($_POST)) { // 登録処理をする $sql = sprintf('INSERT INTO members SET name="%s", mail="%s", pass="%s", image=:%s, created="%s"', mysql_real_escape_string($_SESSION['sign_up']['name']), mysql_real_escape_string($_SESSION['sign_up']['mail']), mysql_real_escape_string(sha1($_SESSION['sign_up']['pass'])), mysql_real_escape_string($_SESSION['sign_up']['image']), date('Y-m-d H:i:s') ); mysql_query($sql) or die(mysql_error()); unset($_SESSION['sign_up']); header('Location: finish.php'); exit(); } 念のため、phpmyadminの画面をあげておきます。 http://cl.ly/image/3M002J1S0q0N 以上よろしくお願い致します。

    • ベストアンサー
    • PHP
  • うまくプログラムが動いてくれません……

    phpを勉強し始め、ログインページを作っているのですが、うまく動いてくれません。 空で送っても、エラーが表示されず……先に進めません。 一体、何が間違えているのでしょうか? requireで呼んでいるデータベースはきちんと読み込めています。 どなたか、ご助力を宜しくお願いします。 <?php require('../dbconnect.php'); session_start(); if(!empty($_POST)){ //ログインの処理 if ($_POST['id_name'] != '' && $_POST['password'] != '') { $sql = sprintf('SELECT * FROM members WHERE id_name="%s" AND password="%s"', mysqli_real_escape_string($db, $_POST['id_name']), mysqli_real_escape_string($db, sha1($_POST['password'])) ); $record = mysqli_query($db, $sql) or die(mysqli_error($db)); if($table = mysqli_fetch_assoc($record)) { //ログイン成功 $_SESSION['id'] = $table['id']; $_SESSION['time'] = time(); header('Location: index.php'); exit(); } else { $error['login'] = 'failed'; } } else { $error ['login'] = 'blank'; } } ?> <div id="lead"> <p>IDとパスワードを記入してログインしてください</p> <p>ユーザー登録がまだの方はコチラからどうぞ</p> <p><a href="join/">ユーザー登録をする</a></p> </div> <form action="" method"post"> <dl> <dt>ログインID</dt> <dd> <input type="text" name="id_name" size="35" maxlength="255" value="<?php echo htmlspecialchars($_POST['id_name']); ?>" /> <?php if ($error['login'] == 'blank'): ?> <p class="error">ログインIDとパスワードを記入してください</p> <?php endif; ?> <?php if ($error['login'] == 'failed'): ?> <p class="error">ログインに失敗しました。正しく記入してください</p> <?php endif; ?> </dd> <dt>パスワード</dt> <dd> <input type="password" name="password" size="35" maxlength="255" value="<?php echo htmlspecialchars($_POST['password']); ?>" > </dd> <dt>ログイン情報の記録</dt> <dd><input id="name" type="checkbox" name="save" value="on"> <label for="save">次回からは自動的にログインする</label></dd> </dl> <div><input type="submit" value="ログインする"></div>

    • ベストアンサー
    • PHP
  • PHP 下記エラーメッセージの解消について

    下記PHP エラーメッセージの解消方法と、正常にプログラムが動くための簡単なスクリプトも添えていただければ幸いです。よろしくお願い申し上げます。 ■エラーメッセージ (1)Notice: Undefined variable: error in C:\xampp on line 66 (2)Notice: Undefined variable: error in C:\xampp on line 69 ■スクリプト <body> <h1>ログインする</h1> <form action="" method="post"> <dl> <dt>メールアドレス</dt> <dd> ⇒(ここからPHP文です) <input type="text" name="email" size="35" maxlength="255" value="<?php echo htmlspecialchars($_POST['email']); ?>" /> <?php if ($error['login'] == 'blank'): ?> <p class="error">* メールアドレスとパスワードをご記入ください</p> <?php endif; ?> <?php if ($error['login'] == 'failed'): ?> <p class="error">* ログインに失敗しました。正しくご記入ください。</p> <?php endif; ?> ⇒(ここまでPHP文です) </dd> <dt>パスワード</dt> <dd> <input type="password" name="password" size="35" maxlength="255" value="<?php echo htmlspecialchars($_POST['password']); ?>" /> </dd> ......省略 </form> なのですが、 下記エラーメッセージが出てしまいます。 (1)Notice: Undefined variable: error in C:\xampp on line 66 (2)Notice: Undefined variable: error in C:\xampp on line 69 これは、上記スクリプトのPHP文を指しております。 どのように初期化をすればよいかわからず、ここで立ち止まっておりました。 ☆どうすればこのエラーメッセージを解消でき、また、本スクリプトが正常に作動しますでしょうか? ☆初期化のためのスクリプトを添えて頂ければ嬉しく思います。 みなさまのお力を貸して頂ければ幸いでございます。 よろしくお願い申し上げます。

    • ベストアンサー
    • PHP