2006年7月 9日

[PHP-users 29672] Re:sessionを使った認証フォームに関して

おはよう御座います。
早速のお返事有難う御座います。感謝しております。

>立松様
検索条件(AND)の件、有難う御座います。色々と私なりに調べては居たものの、
素人故、得たい内容のものが見つからなかったため、このような的を得たご指摘に感
謝いたします。


>鈴木様
デバックの考え方を有難う御座います。
フォームにて入力後、POSTした後すべての表示の際に、echo文にて入力データを確認
してみましたが、どれもきちんと渡されているようです。

現在のコードは昨夜メールで公開させて頂いたものに少し手を加えているだけのもの
ですが、DBに参照できないためか、はたまたセッションに登録できないためか、
フォームを抜け出る事が出来ずにおります。(こういった際もデバックをすべきなん
ですよね。そうとは思って色々試しているのですが、思うように出来ないでいうのが
現状です。)


また、下記コードは、先日こちらのMLにて、山下様よりご教授いただいたものです
が、2行目のrequire_once("dbconn.inc.php");を外し、DBへの接続コードを本文中に
入れる事で、認証させる事が出来ました。


そこで改めてアドバイス頂きたいのは、
1・私が記載したコードにおいて、tableに接続(認証?)出来ない、考えられる理
由は何か?可笑しなところは何処か?

2・お教えいただいた下記スクリプトにおいて、require_onceを外しているが、これ
を外したことで上手く行った考えられる原因、および外した事で考えられる障害とは
何か?

3・同じく下記スクリプトを取り入れる条件として、
  > >まず、MySQL側(ユーザー名をユニークに)
  > >ALTER TABLE `usr_tb` ADD UNIQUE `username` (`username`)
と、アドバイス頂いたが、変更する意味(フィールド名は一緒)はどういったところ
にあるのか?です。
・・・この件も調べてはいるのですが、「変更する意味と、変更した事によるその働
き」が分からずにおります。
(現在、下記コードにおいての動作確認は、DBを変えずに動かしております。)


素晴らしい有識者の皆さんを前に、このような質問を繰り返すのもお恥ずかしい限り
では御座いますが、「動いたから良かった!」ではなく、「何で?何処が可笑しい
の?」と、今後に繋げたいと思っておりますので、お忙しい中恐縮ですが、今一度ご
教授いただけたら幸いに思います。


//require_once("dbconn.inc.php");
session_start();

$username = $_POST['username'];
$password = $_POST['password'];

if ($username != "" || $password != "") {
$username = addslashes(trim($username));
$password = addslashes(trim($password));

mysql_connect('localhost','root','******');//require_onceを外して追加した
mysql_select_db('test');//require_onceを外して追加した
$sql = "SELECT * FROM usr_tb WHERE username = '$username'";
//$data = $conn->getRow($sql,2);//PEAR で接続、使わない場合は mysql_query等
ですかね
$result = mysql_query($sql);
$rows = mysql_num_rows($result);

if ($rows == 1) {
$pass = mysql_result($result, 0, "passwd");
$nick = mysql_result($result, 0, "nick");
//$pass = data("passwd");
//$nick = data("nick");

if ($pass == $password) {
$_SESSION['username'] = $username;
$_SESSION['nick'] = $nick;
} else {
$Err = "IDまたはパスワードに誤りがあります。";
}
} else {
$Err = "IDまたはパスワードに誤りがあります。";
}
} else {
$Err = "認証が必要です。ユーザー名とパスワードを入力して下さい。";
}

// 未エラー、$_SESSION['username'] が未登録の場合
if ($Err != "" && $_SESSION['username'] == "") {
authform($Err);
}

function authform($Err) {
echo $Err;
echo <<


ユーザ名

パスワード



EOC;
exit;
}
?>


_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ns1.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://www.php.gr.jp/php/novice.php3

投稿者 xml-rpc : 2006年7月 9日 14:11
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/39223
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。