見よう見まねでやっている超初心者です。
恥を忍んで質問させて頂きます。
古いPHP(2003年ごろ)関連書籍に下記のような
include.phpファイルがあるのですが、DB接続失敗、クエリ発行エラー等の
エラー表示は出ないのですが(65行目位の、管理者パスワードチェック : _chkPass)でパスワードがMYSQLにINSERTできません。
PHPバージョンの違いなのでしょうか(私のはPHPV5 XAMPPです。)
色々試したりMYSQLの確認をしたのですが、どこがイケないのか、
どこをどう直したらいいのか全く分かりません。
このプログラムに不具合は無いのか?あったとしたらどう直したら動くようになるのか?
わかる方どうかご教授の程よろしくお願い致します。
具体的にご教授頂けると大変助かります。
<?php
putenv("TZ=JST-9");
define( "_DB_SERVER", "localhost");
define( "_DB_NAME", "cgiweb" );
define( "_DB_UID", "root" );
define( "_DB_PASS", "" );
//---------------------------------------------------------
// DB接続 : _dbConnect
//---------------------------------------------------------
function _dbConnect(){
//DB接続
$_conn = mysql_connect( _DB_SERVER, _DB_UID, _DB_PASS)
or die('DB接続失敗 = ' . mysql_error());
//DB選択
mysql_select_db( _DB_NAME, $_conn)
or die('DB選択失敗 = ' . mysql_error());
return( $_conn );
}
//---------------------------------------------------------
// DB切断 : _dbDisconnect
//---------------------------------------------------------
function _dbDisconnect( $_conn ){
//DB切断
mysql_close($_conn);
}
//---------------------------------------------------------
// クエリ発行 : _query
//---------------------------------------------------------
function _query( $_conn, $_query ){
$_result=mysql_query($_query,$_conn)
or die('クエリ発行エラー = ' .mysql_error());
return( $_result );
}
//---------------------------------------------------------
// FETCH実行 : _fetchArray
//---------------------------------------------------------
function _fetchArray( $_result ){
$_row = mysql_fetch_array($_result,MYSQL_ASSOC);
return( $_row );
}
//---------------------------------------------------------
// 結果セット開放 : _freeResult
//---------------------------------------------------------
function _freeResult($_result){
mysql_free_result($_result);
}
//---------------------------------------------------------
// 管理者パスワードチェック : _chkPass
// 引数:コネクション
// チェック対象パスワード
// 戻値:_OK or _NG
//---------------------------------------------------------
function _chkPass( $_conn, $_input_pass ){
$_err_str = "";
if( ! $_input_pass ){
//パスワード未設定なら入力画面を表示
$_err_str = "パスワードを入力してください";
}
else{
//パスワードがあるなら店舗マスタの内容と比較
$_result = _query( $_conn, "SELECT tenpo_pass FROM tenpo_mst" );
$_row = _fetchArray( $_result );
if( $_row ){
//レコードがあればチェック
if( $_input_pass != $_row['tenpo_pass'] ){
//認証NGなので、入力画面を再表示
$_err_str = "パスワードが誤っています";
}
}else{
//レコードがなければ入力されたパスワードでレコード作成
$_sql = "";
$_sql .= "INSERT INTO tenpo_mst (";
$_sql .= " tenpo_name,";
$_sql .= " tenpo_pass,";
$_sql .= " zei_kbn,";
$_sql .= " zeiritsu,";
$_sql .= " zei_kirisute_kbn,";
$_sql .= " order_status";
$_sql .= " ) VALUES (";
$_sql .= " '',";
$_sql .= " '" . addslashes($_input_pass) . "',";
$_sql .= " 2,";
$_sql .= " 0,";
$_sql .= " 0,";
$_sql .= " 0";
$_sql .= " )";
_query( $_conn, $_sql );
}
_freeResult( $_result );
}
//入力画面表示の場合
if( $_err_str != "" ){
echo "<HTML>\n";
echo "<HEAD>\n";
echo "<TITLE>管理者認証</TITLE>\n";
echo "</HEAD>\n";
echo "<BODY>\n";
echo "<CENTER>\n";
echo "<FONT COLOR=RED SIZE=5>管理者認証</FONT>\n";
echo "<HR>\n";
echo "${_err_str}<BR><BR>\n";
echo "<FORM ACTION=\"mnt_menu.php\" METHOD=\"POST\">\n";
echo "<FONT COLOR=RED SIZE=2>※記号を除く半角小文字8文字以内</FONT><BR>\n";
echo "パスワード:<INPUT TYPE=\"password\" NAME=\"post_pass\" MAXLENGTH=8>\n";
echo "<INPUT TYPE=\"submit\" VALUE=\"送信\">\n";
echo "</FORM>\n";
echo "<HR>\n";
echo "</CENTER>\n";
echo "</BODY>\n";
echo "</HTML>\n";
_dbDisconnect($_conn);
exit;
}
}
?>
以下省略しました。
No.3ベストアンサー
- 回答日時:
どこをどう治す というより、このinclude.phpというファイルを見るかぎりは
単独では動くようになっておらず関数を提供しているだけのように 見えます。
この場合別途phpファイルを作りそこで、
<?php
include('include.php');
$conn = _dbConnect();
_chkPass( $conn, $_POST["post_pass"]);
?>
とし、こちらのほうを実行することで 利用可能になると思われます。
(実際に確認はしてないので、エラーがでるかもしれませんが)
もし、
「以下省略しました。 」の部分に 実際にはphpの記述で上記と同様な
記述があるようなら、話は、また変わりますが・・・
回答を頂きまして大変ありがとうございます。
返信が遅くなりました事をお詫び申し上げます。
朝から折を見てはやっているのですが、確かにそのような記述はあったので、$post_pass = $_POST["post_pass"];とすることで一応INSERT出来るようになりました。しかしながらプログラム自体は全く動いてくれませんでした。
私の馬鹿さ加減ですが、プログラムが動かない理由はこの他にもあるのかもしれません。これ以上時間を頂きご迷惑をおかけするわけにもいきませんので、今回はこれにて、お礼申し上げます。
この度は大変ありがとうございました。また質問させて頂くと思いますがその時はこれに凝りず、是非又よろしくお願い致します。
No.2
- 回答日時:
FORMでのNAMEは"post_pass"ですので、$_POST["post_pass"]で受け取って
それをDBと比較するなり代入するなり する必要があります。
その前に、_chkPass を どこからもコールしていないので、ここが動かなくても
当然といえば当然です。
この回答への補足
ご回答大変ありがとうございます。
すいません超初心者なものでなんとなくは、わかる気がするのですが、
どこをどう書き変えればそれが出来るようになるのでしょうか?お手数ですが、
もう少し具体的に教えて頂ければ助かるのですが、教えては頂けないでしょうか?
どうかよろしくお願い致します。
No.1
- 回答日時:
直接の回答ではないのですが
日進月歩のIT界において一昔前の書籍を見るメリットがわかりません
かえって変なクセに染まってしまって新しい流儀に付いていけなくなってしまう恐れがあります
基礎を身につけるにしても現代のWebを見たほうがいいのではないでしょうか
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP php ログイン 1 2022/11/01 00:24
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
stringaddslashes 半角¥が消える
-
住所録を作りたい
-
PHP と Mysql の連携時に発生す...
-
MySQLから取得した値をPHPを使...
-
Resource id #3 をフィールドの...
-
変数同士の引き算が出来ない
-
SQLのデータから連想配列を作成...
-
mysql_resultのエラー
-
XAMMPが起動しません。
-
実行時エラー3131 FROM 句の構...
-
VBAをつかってクエリの情報を抽...
-
MySQLでデータベースにデータin...
-
DBで検索結果に該当するデータ...
-
PHP + MySQLを使用して詳細画面...
-
検索結果をgoogleのように数件...
-
PHPでいいね機能を作りたいので...
-
SQL文が実行できません
-
php データ削除
-
PHP&MySQLでの文字列+数列の一...
-
Q&Aサイトを作成していてURLの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mysql_fetch_objectのエラー
-
XAMPPで画面が真っ白になります。
-
テーブルに入っているデータと...
-
sqlから多次元配列に要素を格納...
-
PHP+mysqlでSQL文に文字数制限...
-
stringaddslashes 半角¥が消える
-
phpのエラーについてです
-
PHPで絞り込み検索結果の件数を...
-
PHPエラーが出て困ってます
-
PDOを使いたい
-
CSVをダウンロードさせた際、CS...
-
mysql_query等でレコード数を変...
-
Resource id #3 をフィールドの...
-
ボタンのonclick時における関数...
-
XAMMPが起動しません。
-
SQL文2つ実行
-
PHPのSQLインジェクションはspr...
-
SQLの結果が返ってこない
-
MySQLのデータを使ってプルダウ...
-
会員登録したらメールが送られ...
おすすめ情報