• 締切済み
  • すぐに回答を!

extract($_POST)

PHP&MySQLの初心者です。 レンタルサーバーでPHP&MySQLを利用したいと思い、入門本を読みながらやっておりますが、PHPからMySQLのデータベースへ 入力しようとすると、 Warning: extract() expects first argument to be an array in /home/.sites/62/site118/web/ken4.php on line 12 のエラーがでます。 色々調べて行くとどうも「extract($_POST)」がPHPのバージョンによって使えないとの事までは解ったのですが、これを回避する方法がわかりません。 レンタルサーバーはPHP4(4.0.6)とMySQL(3.23)です。 是非ともご回答をお待ちしています。 ちなみに入門本のスクリプトは以下のものです。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>県データ登録</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <?php extract($_POST); if($ken<>''){ mysql_connect('××××','×××','××××'); mysql_select_db('×××'); $sql = "insert into todofuken values('$ken', '$kec', $jin, $men,)"; mysql_query($sql); $ken = ''; echo "データを登録しました<br />"; echo "登録を続けますか <a href=\"ken4.php\">続行</a>"; exit; } ?> <p>データを入力してください</p> <form action="ken4.php" method="post" > <p>県   名:<input type="text" name="ken" size="40"></p> <p>県庁所在地:<input type="text" name="kec" size="40"></p> <p>人   口:<input type="text" name="jin" size="40"></p> <p>面   積:<input type="text" name="men" size="40"></p> <input type="submit" value="登録"> <input type="reset" value="リセット"> </form> </body> </html>

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数690
  • ありがとう数3

みんなの回答

  • 回答No.3
  • yambejp
  • ベストアンサー率51% (3827/7415)

シフトJISだとインジェクション対策がかなりいろいろ引っかかりそうですが たとえばmysql_escape_stringをつかってこんな感じにします。 今回の場合ですと外部からうけとる変数を'ken','kec','jin','men'に しぼっています。そうしないと、ユーザーが任意で設定した変数を 勝手におくられてきた場合、想定外の挙動をとる可能性があります。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>県データ登録</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <?PHP foreach(Array('ken','kec','jin','men') as $val){ if($_POST["{$val}"]!="") $$val=mysql_escape_string($_POST["{$val}"]); } if(isset($ken)){ $link=mysql_connect('××××','×××','××××'); mysql_select_db('×××',$link); $sql = "insert into todofuken values('{$ken}','{$kec}', '{$jin}', '{$men}')"; mysql_query($sql,$link); //print $sql; unset($ken); echo <<<eof データを登録しました<br /> 登録を続けますか <a href="{$_SERVER['PHP_SELF']}">続行</a> eof; }else{ echo <<<eof <p>データを入力してください</p> <form action="{$_SERVER['PHP_SELF']}" method="post" > <p>県   名:<input type="text" name="ken" size="40"></p> <p>県庁所在地:<input type="text" name="kec" size="40"></p> <p>人   口:<input type="text" name="jin" size="40"></p> <p>面   積:<input type="text" name="men" size="40"></p> <input type="submit" value="登録"> <input type="reset" value="リセット"> </form> eof; } ?> </body> </html>

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。教えて頂いた方法でうまく行きました。 今までVBAでの経験はかなりあったので、PHP&MySQLもと思ってやり始めましたが、入り口で躓き気持ちが萎えかけていましたが、 一つステップがUP出来たので、また頑張れそうです。 本当に有り難う御座いました。

関連するQ&A

  • フォーム情報をDBに追加できない

    はじめまして。 初心者で現在参考書を使ってMYSQL、PHP、HTMLを学習してるんですが フォームの情報をデータベースに格納できません。 (ken1.php) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>県別人口面積その1</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <?php mysql_connect('localhost','root','freedom'); mysql_select_db('lesson'); $sql= "select * from todofuken"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row["kenmei"]; echo " "; echo $row["kencho"]; echo " "; echo $row["jinko"]; echo " "; echo $row["menseki"]; echo "</p>"; } } ?> </body> </html> (ken2.html) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>フォーム文</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <p>データを入力してください</p> <form action="ken3.php" method="post" > <p>県   名<input type="text" name="ken" size="40"></p> <p>県庁所在地<input type="text" name="kec" size="40"></p> <p>人   口<input type="text" name="jin" size="40"></p> <p>面   積<input type="text" name="men" size="40"></p> <input type="submit" value="登録"> <input type="reset" value="リセット"> </form> </body> </html> (ken3.php) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>ここにページのタイトルが入る</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <?php error_reporting(E_ALL & ~E_NOTICE); extract($_POST); mysql_connect('localhost','root','freedom'); mysql_select_db('lesson'); $sql = "insert into todofuken values('$ken', '$kec', $jin, $men, 0)"; mysql_query($sql); ?> </body> </html> ブラウザでken2.htmlのフォームにデータを埋め込み、そのデータを DBに追加したいんです。 問題はken2.htmlの登録ボタンを押してken3.php に移動するまでは良いんですが DBにデータが追加されません。 構文は参考書どうりにやっているので間違いないと思うのですが 原因がわかる方どうぞよろしくお願いします。

    • 締切済み
    • PHP
  • フォームデータをデータベースに追加したい

    はじめまして。 初心者で参考書を使ってPHP、MYSQLを学習してるんですが フォームに入力したデータをデータベースに追加するとこが 参考書どうりにやってるんですができません。 どうかお力を貸してください。 (ken1.php) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>県別人口面積その1</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <?php mysql_connect('localhost','root','freedom'); mysql_select_db('lesson'); $sql= "select * from todofuken"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row["kenmei"]; echo " "; echo $row["kencho"]; echo " "; echo $row["jinko"]; echo " "; echo $row["menseki"]; echo "</p>"; } } ?> </body> </html> (ken2.html) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>フォーム文</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <p>データを入力してください</p> <form action="ken3.php" method="post" > <p>県   名<input type="text" name="ken" size="40"></p> <p>県庁所在地<input type="text" name="kec" size="40"></p> <p>人   口<input type="text" name="jin" size="40"></p> <p>面   積<input type="text" name="men" size="40"></p> <input type="submit" value="登録"> <input type="reset" value="リセット"> </form> </body> </html> (ken3.php) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>ここにページのタイトルが入る</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <?php extract($_POST); mysql_connect('localhost','root','freedom'); mysql_select_db('lesson'); $sql = "insert into todofuken values('$ken', '$kec', $jin, $men, 0)"; mysql_query($sql); ?> </body> </html> ken2.htmlで入力したデータをデータベースに追加したいのですが ブラウザ上で登録ボタンを押してken3.phpに移動するまでうまくいっています。 参考書ではこの操作で入力したデータがデータベースに追加されると書いているのですが データベースを見ても追加されていません。 原因をいろいろ調べたのですが不明なのでお力添えお願いします。

    • 締切済み
    • PHP
  • POSTされない

    xamppにてローカル環境でやっているのですがなぜか type="file"だけPOSTされません。 ie6とfairefox3で試しましたが取得できませんでした。 調べてみたのですが同様の事例が見つからずわからかったのですが これは何が原因なのでしょうか? ---html--- <form action="index.php" method="post" enctype="multipart/form-data"> <input type="text" name="name" /> <input type="file" name="img" /> <input type="submit" name="send" value="送信する" /> </form> ---php--- if (isset($_POST['send'])) { echo '<pre>'; print_r($_POST); echo '</pre>'; } print_r($_FILES);を試すと正常に値が表示されます。全く意味不明 なのですが何かセキュリティ上の問題などが原因なのでしょうか?

    • 締切済み
    • PHP
  • 回答No.2
  • hrm_mmm
  • ベストアンサー率63% (292/459)

>>(実際には$valになんらかの処理をいれて危険要素を排除してください) >の意味がイマイチ分かりません。 mysql_real_escape_string()や、文字コード問題やSQLインジェクションやクロスサイトスクリプティングについてしっかり調べましょう。 しっかり知識を得た上で対策をとらないと、公開サーバーにアップしたとたんに攻撃を受けてしまいます。

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • yambejp
  • ベストアンサー率51% (3827/7415)

extract()自体が危険性を含む関数のため$_POSTなど 外からデータを持ちこむ際のご利用にはオススメできません。 ただ、どうしてもそれが必要で、なんらかの理由でうまく動かないので あれば同様の処理は以下のようにしてみてはいかがでしょうか? (実際には$valになんらかの処理をいれて危険要素を排除してください) if(is_array($_POST)) foreach($_POST as $key=>$val){ $$key=$val; }

共感・感謝の気持ちを伝えよう!

質問者からのお礼

早速のご意見有り難うございます。 Warning: extract() expects first argument to be an array in /home/.sites/62/site118/web/ken4.php on line 12 のエラーは回避出来ましたが、データベースに入力は出来ませんでした。 全くの初心者で申し訳ないのですが、 >(実際には$valになんらかの処理をいれて危険要素を排除してください) の意味がイマイチ分かりません。

関連するQ&A

  • 記述の仕方

    <?php For ($p=1; $p<=5; $p=1++){ $wr = "<input type="text" name="ken[p]" value="<?php echo $ken[$p] ;?>"> $wr = $wr . "<input type="text" name="ken[p]" value="<?php echo $shouhin_name[$p] ;?>>" }    echo $wr ?> この記述ではエラーになりますどうしてですか?

    • ベストアンサー
    • PHP
  • POST からの受け渡しができません・・・

    教えてくださいm(__)m <FORM action="<? echo $PHP_SELF; ?>" method="POST"> :(ここにはif文がはいっています。) : print "お名前:<BR>\n"; print "<input type=\"text\" name=\"handle\" size=\"16\" maxlength=\"30\" value=\"<? echo ($handle); ?>\"><br><br>\n"; print "性別:<BR>\n"; for (reset ($sex_tbl); $key = key ($sex_tbl); next ($sex_tbl)) { echo (" <OPTION value=\"" . $key . "\""); if ($key == $sex) echo (" SELECTED"); echo (">" . $sex_tbl[$key] . "\n"); } print "PRポイント:<BR>\n"; print "<input type=\"text\" name=\"pr\" size=\"16\" maxlength=\"30\" value=\"<? echo ($pr); ?>\"><br><br>\n"; print "<CENTER><input type=\"submit\" value=\"次の人!\"></CENTER><br>\n"; print "<input type=\"hidden\" name=\"page\" value=\"kekkapage\">\n"; print "<input type=\"hidden\" name=\"handle\" value=\"" . $_POST['handle'] . "\">\n"; print "<input type=\"hidden\" name=\"sex\" value=\"" . $_POST['sex'] . "\">\n"; print "<input type=\"hidden\" name=\"pr\" value=\"" . $_POST['pr'] . "\">\n";←80 </FORM> : : ↑なのですが、 「・・・on line 80」エラー表示になりうまくいきません。 の部分が原因と表示にはなっているのですが…。 助けてください。 宜しくお願いしますm(__)m

    • ベストアンサー
    • PHP
  • 質問です!

    下記のように記述しました。 $jusyo_ken_meiをarray構文にしたのですが、沖縄しか出ません。 2345も出せるようにしたいのですがどうしたらいいですか? <body> <form method="POST" action="text.php"> <p><input type="text" name="T1" size="20" value="<?php echo $T1 ; ?>"></p> <p><select size="1" name="$jusyo_ken"> <?php $jusyo_ken_mei = array (1 =>"沖縄県" , 2 =>"北海道", 3 =>"東京", 4 =>"大阪", 5 =>"鹿児島"); if ($jusyo_ken == ""){ echo "<option value=\"\" selected>---</optin>"; }else{ echo "<option value=\"\">--- </optin>"; } if ($jusyo_ken == "$jusyo_ken_mei[1]"){ echo "<option selected>$jusyo_ken_mei[1]</option>"; }else{ echo "<option>$jusyo_ken_mei[1]</option>"; } ?> </select></p> <p> </p> <p> </p> <p> </p> <p><input type="submit" value="送信" name="B1"><input type="reset" value="リセット" name="B2"></p> </form> </body>

    • ベストアンサー
    • PHP
  • postのタイムラグ

    以下のソースでPOSTの値が取れないときがあるので困っています。 具体的にはページを表示してから30秒程度待ってからの クリックじゃないとPOSTの値が取れません。 GETの場合はページ表示後すぐにボタンをクリックしても大丈夫でした。 原因が分からず途方に暮れています。 お知恵をお貸しください。 PHP Version 5.2.3 <?php $P_data = $_POST["pg"]; print("POST=>".$P_data."<BR>"); $G_data = $_GET["pg"]; print("GET=>".$G_data."<BR>"); print <<< DOC_END <html> <head> </head> <body> DOC_END; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=1>"; echo"<input type=submit value=あ>"; echo"</form>"; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=2>"; echo"<input type=submit value=い>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=3>"; echo"<input type=submit value=う>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=4>"; echo"<input type=submit value=え>"; echo"</form>"; print <<< END </body> </html> END; ?>

    • 締切済み
    • PHP
  • 改行データPOSTできない

    mysql+php+htmlで作ってるんですが、POST後のページで改行が反映されません。 -------------------------------- 111.php -------------------------------- - 省略 - <body> <form action="222.php" method="post"> <input type="hidden" name="data2" value=<?php echo "$data1";?>> <input type="submit" value="編集"> </body> - 省略 - -------------------------------- 222.php -------------------------------- --省略-- <?php $data2 = $_POST['data2']; ?> <form> <textarea cols="80" rows="20" name="test"><? echo "$data2"; ?></textarea> </form> --省略-- -------------------------------- これだと222.phpで1行だけしか表示されません。変数に入れれないのでしょうか? お手数ですが、ご教示お願いします。 ちなみに111.phpの方も textarea にすると正常に値が渡せます。 でも表示したくないのでイヤです。 (急いで入力したので、タイプミス&コピペミスっぽいのは無視してくださいm(_ _)m)

    • ベストアンサー
    • PHP
  • 住所録を作りたい

    『MySQL入門以前』という本をみながら住所録をつくっています。 1、htmlファイル データ登録画面用 ↓ 2、phpファイル データをMySQLデータベースに書き込み ↓ 3、phpファイル MySQLのテーブルから全体を読み出し の3つのファイルから構成しています。 データ登録画面で、全角文字『愛知県』をいれると データベースに新しいデータが追加されません。 半角英数字abcや123なら、新しいデータが追加されます。 どうしたら全角文字も対応させられるのでしょうか。 ファイルの一部 <form action="touroku.php" method="post"> <p>氏名:<input type="text" name="simei" size="40"></p> <p>郵便番号:<input type="text" name="yubin1" size="5">-<input type="text" name="yubin2" size="8"></p> <p>住所1:<input type="text" name="jusho1" size="50"></p> <p><input type="submit" value="登録"> <input type="reset" value="リセット"></p> </form> MySQL 5.0 PHP 5.2.5.5 apache 2.0.59 Windowes XP

    • 締切済み
    • PHP
  • フォームからmySQL-DBにデータ登録したいです。

    FedoraCore6 + Apache2.2.4 + MySQL5.0.41 + PHP4.4.7 で学習しています。 TABLE aaa( id MEDIUMINT NOT NULL AUTO_INCREMENT, hiduke DATE, xyz INT, comment VARCHAR(30), PRIMARY KEY (id) );  という表を作り、 入力フォーム [TEST.html] <html><head><meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"></head> <body><p>データ入力</p> <form action="datatest.php" method="POST"> <p>日付<input type="text" name="hiduke" size="12"></p> <p>データ<input type="text" name="xyz" size="6"></p> <p>コメント<input type="text" name="comment" size="40"></p> <input type="submit" value="登録"> <input type="reset" value="リセット"> </form></body></html> ------------------ 書込スクリプト [datatest.php] <html><body> <php extract($_POST); mysql_connect(localhost,bbbbbb,******); mysql_select_db(cccccc); $sql = "insert into aaa values(0 '$hiduke','$xyz','$comment')"; mysql_query($sql); ?> 下記の内容で登録しました<p> 日付:<? echo $hiduke; ?> <br> データ:<? echo $xyz; ?> <br> コメント:<? echo $comment; ?> <br> <p></body></html> でデータを登録しようとしましたが書き込みができません。何が悪いのでしょうか? 基本的なところが間違っていると思い、いろいろ調べましたが、私の現在の力では原因を見つけることができないでいまず。よろしくご指導下さい。 なお、コマンドラインから、insert into aaa values(0, 20071008,3840,'qqqqq'); なら書込みできます。

    • ベストアンサー
    • MySQL
  • PHP whileでループした複数フォームのPOSTを取得したい

    お世話になります。PHP+MYSQLで、動物管理データベースを作成しています。動物入力を簡略化したいため、まず、動物種と匹数を入力した後、匹数に合わせた詳細フォームを表示させるプログラムを組みたいと考えています。 自力で、「動物種と匹数のフォーム表示」→「匹数に合わせた詳細フォーム表示」までは作ることができましたが、最後のフォームデータのみ挿入されます。どうか助けてください。 動物種別と匹数の指定された後、 <? while($a <= $_POST['匹数']) { ?> <tr> <form method="post" action="admin6.php"> <td><font size="2">自動入力</font></td> <td><input size="15" type="text" name="個体"></td> <td><input size="8" type="text" name="動物種別" value=""></td> <td bgcolor="#ffffff"><SELECT NAME="性別"> <OPTION>オス <OPTION>メス </SELECT></td> <td><input size="8" type="text" name="入荷日" value=""></td> <td><input size="8" type="text" name="処分日" value=""></td> <td><input size="8" type="text" name="飼育室" value=""></td> </tr> <? $a++; }  ?>    <br>    <input type="submit" name="q" value="新規追加"> 上記でその匹数分の入力フォームをWhile分で作成し、 if($_POST["q"] == '新規追加') { $insertQuery = "INSERT INTO Animal_manage VALUES(NULL,'"; $insertQuery .= addslashes($_POST["個体"]). "','"; $insertQuery .= $_POST["動物種別"]. "','"; $insertQuery .= $_POST["性別"]. "','"; $insertQuery .= $_POST["入荷日"]. "','"; $insertQuery .= $_POST["処分日"]. "','"; $insertQuery .= $_POST["飼育室"]. "')"; mysql_query($insertQuery, $myLink); mysql_close($myLink); header("Location: ".$_SERVER["PHP_SELF"]); exit; } と、POSTでMYSQLへ格納しようとしました。 作られた詳細フォーム分のレコードをMYSQLへ挿入するためにはどうしたらよいでしょうか?初心者ということもあり、検討がついていません。ご迷惑かけますがよろしくお願いします。

    • ベストアンサー
    • PHP
  • FORM ACTION~POST使用時について

    こんにちは。お世話になります。 cgiファイルから、FORM ACTION~POST⇒submitで自分自身を呼び出す時に、INPUT TYPE=\"text\"を11個間に入れると呼び出せません。 (10個の場合はうまくいきます) FORM ACTION~POSTは文字数制限がないと、本を見てもかいてあるのですが、なにか理由があるのでしょうか。 ご存知の方、ご教授願えたら幸いです。 よろしくお願いいたします。 抜粋したソースを下記に記します。 ------------------------------------------------------------- #障害対応情報項目テキストボックス print "<H5>【障害対応情報項目】</H5>\n"; print "<FORM ACTION=\"../cgi-bin/serch_e-001.cgi\" METHOD=\"POST\">\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-2\" VALUE=\"$$selectdata[0][7]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-3\" VALUE=\"$$selectdata[0][8]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-4\" VALUE=\"$$selectdata[0][9]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-5\" VALUE=\"$$selectdata[0][10]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-6\" VALUE=\"$$selectdata[0][11]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-7\" VALUE=\"$$selectdata[0][12]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-8\" VALUE=\"$$selectdata[0][13]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-9\" VALUE=\"$$selectdata[0][13]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-13\" VALUE=\"$$selectdata[0][18]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-14\" VALUE=\"$$selectdata[0][19]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-15\" VALUE=\"$$selectdata[0][19]\" SIZE=30>\n"; print "<INPUT TYPE=\"submit\" NAME=\"button\" VALUE=\"新規検索\">\n"; print "<INPUT TYPE=\"submit\" NAME=\"button\" VALUE=\"更新\">\n"; print "<INPUT TYPE=\"hidden\" NAME=\"no\" VALUE=\"$$selectdata[0][0]\">\n"; print "</FORM>\n"; ------------------------------------------------------------

    • ベストアンサー
    • Perl
  • POSTでファイルアップロード

    fedora7、PHP5、Mysql5を使っています。 画像ファイルやコメント、タイトル等を<form method="POST" action="regchk.php">で、渡すreg.phpファイルと、それお受け取り画像ファイルサイズやコメント文字数等をチェックするregchk.phpファイルがあります。 reg.phpの<form >部分が、 <form method="POST" action="regchk.php" enctype="multipart/form-data"> <table > <tr> <th>写真のファイル</th><td><!-- MAX_FILE_SIZE must precede the file input field --> <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> <input type="file" name="uploadfile" size="60"></td> </tr> <tr> <th>タイトル </th><td><input type="text" name="title" size="60" maxlength="50"></td> </tr> <tr> <th>コメント </th><td><textarea rows="7" cols="60" name="comment"></textarea></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" name="reg" value=" 登録 "> <input type="reset" value=" クリア "> </td> </tr> </table>  </form>です。 そして、regchk.php の$_POST['uploadfile'] で、画像ファイルがアップされているか、チェックしたいのです。以下のように。 $uploadfile = $_POST["uploadfile"]; echo $uploadfile."<br>"; ----→空白が表示される //エラーコード 検証用 echo $_FILES['uploadfile']['error']."<br>"; ---→ 0が表示される echo $_FILES['uploadfile']['tmp_name']."<br>"; --→ /usr/tmp/phpアルファベット echo $_FILES['uploadfile']['size']."<br>"; ----→9894 //入力データのチェック $errmsg = ""; if (strlen($uploadfile) == 0) { $errmsg .= "写真のファイルが指定されてません.<br />"; } ↑このif文でエラー文字列が、$errmsg に入る。 アパッチのerror_logを見ると、 Notice: Undefined index: uploadfile in /home/user1/public_html/regchk.php on line 5, と、出ており、5行目とは $uploadfile = $_POST["uploadfile"]; のことです。 自分は、やり方が根本的に間違っているのでしょうか? ご教授の方、よろしくお願いします。

    • ベストアンサー
    • PHP