2006年7月 8日

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

はじめまして、こんばんは。
今回初めて投函させて頂きます。

とあるサイトのQ&Aにて、sessionを使った認証に関してアドバイスを頂戴したのです
が、DBへ登録は出来ているものの、ID、passを入力してもセッションに登録できない
ためか、ログインできない状態となっております。

動作環境

PHP4.3.7.7
Apacha1.3.29
MySQL4.0.20
WinXP

以下、テスト的にサイトにてお教えいただいたスクリプトを、試行錯誤を繰り返しな
がらのものです。
(色々試しているので、コメントで見難くなっていることをお許し下さい。)

--DB設定--
CREATE TABLE `usr_tb` (
membid int NOT NULL auto_increment,
username varchar(63) default NULL,
passwd varchar(63) default NULL,
nick varchar(127) default NULL,
flg tinyint default 0,
PRIMARY KEY (membid)
)

--dbconn.inc.php--
require_once('DB.php');

$dsn = 'mysql://root:******@localhost/test';
$options = array(
'debug' => 2,
'portability' => DB_PORTABILITY_ALL,
);

$conn =& DB::connect($dsn, $options);
if (PEAR::isError($db)) {
die($db->getMessage());
}

$conn->disconnect();

?>

--auth.inc.php--
require_once("dbconn.inc.php");
session_start();//セッション開く

//セッションに値が無い場合はパスワード認証画面を表示
function authform(){
echo <<


ユーザ名

パスワード



EOC;
exit;
}


if(!$_SESSION[username]){
echo "認証が必要です。ユーザー名とパスワードを入力して下さい。";
authform();
}


//ユーザ名とパスワードが送られてきた場合は認証
if($username <> "" && $passwd <> ""){
//addslashesはSQLインジェクション防止のため
$user = addslashes(trim($username));
$passwd = addslashes(trim($password));
$sql = "SELECT * FROM usr_tb WHERE like username='$user'";
//$data = $conn->getRow($sql,2);//PEAR で接続、使わない場合は mysql_queryな

$result = mysql_query($sql);
$rows = mysql_num_rows($result);

if($rows == 0){
echo "

該当データがありません。

";
}
else {
if($row["passwd"]==$passwd){
//データベースにあった場合はセッションに登録
$_SESSION[username] = $row["username"];
//ついでに諸々の情報をセッションに登録
$_SESSION[nick] = $row["nick"];//例えばニックネーム
echo $row["nick"];
}else{
echo "パスワードまたはIDに誤りがあります。";
authform();
exit;
}
}
}
?>


--mypage.php--




マイページ

session_start();
require_once("auth.inc.php");
?>

MyPAGE



以上、PHPを触り始めて間もない初心者の質問にて、このような媒体での質問に恐縮
いたしておりますが、ここ数日、以上の内容を印刷し、日夜持ち歩いてはいるのです
が・・解決できそうで出来ない。と、見えない壁に突き当たった感覚から質問させて
頂きました。お忙しい中恐縮ですが、何処が可笑しいのか、ご教授頂けたら幸いで
す。


_______________________________________________
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月 8日 00:15
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/39163
トラックバック
コメント
コメントする




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