AUTHのフォーム認証で認証されない原因がわかりません
AUTHを使いフォーム認証を試みていますが、
AUTH_WRONG_LOGINが返ってきます。
なぜ、認証されないのか原因が全くわかりません。
(単純入力ミス、パスワードのmd5による暗証値等の登録ミスではありません。)
以下がコードですが、コードに不適当な個所があればご指摘いただければと思います。
また、コードに問題がないようであれば、原因として何が考えられるか助言
をいただければと思っています。
(1)認証フォーム
<html>
<head>
<title>ログインページ</title>
</head>
<body>
<form method="POST" action="<?php> print($_SERVER['PHP_SELF']) ?>">
<table border="0">
<tr>
<th align="right">ユーザID:</th>
<td><input type="text" name="username" size="15" maxlength="20" /></td>
</tr>
<tr>
<th align="right">パスワード:</th>
<td><input type="password" name="password" size="15" maxlength="20" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="ログイン" />
</td>
</tr>
</table>
<font color="red"><?php print($err); ?></font>
</form>
</body>
</html>
(2)認証コード
<?php
function loginFunction($usr,$status){
switch($status){
case AUTH_IDLED :
case AUTH_EXPIRED :
$err='ログイン期限が切れています。再ログインしてください';break;
case AUTH_WRONG_LOGIN :
$err='ユーザID/パスワードが間違っています。';break;
case AUTH_METHOD_NOT_SUPPORTED :
$err='認証方法が未サポート';break;
}
require_once('loginForm.php');
}
$params=array(
'dsn'=>'uri:file://XXXXX\XXXX.dsn',
'table'=>'login',
'usernamecol'=>'username',
'passwordcol'=>'password',
'db_fields'=>'*');
$myAuth=new Auth('DB', $params, 'loginFunction');
$myAuth->start();
if(!$myAuth->getAuth()){
exit();
}
?>
.htaccessを使用し、認証コードが逐次実行されるようにしています。
[PHP使用環境]
PHP=5.1.6
OS=Windows2000 PRO
webserver=apatch2.0
[DB環境(リモートサーバ)]
DB=MS SQL Server2000
OS=Windows2003 server R2
説明不足等がありましたら、ご指摘ください。
お礼
ありがとうございます。 よくわからなかったので SqlDataSource+FormViewで作成しなおし 以下のようにコーディングし ログインボタンのイベントでFormViewから値取得して メインページへリダイレクトしようと思います。 FormViewから値取得については別で質問させて 頂きます、 ありがとうございました。 --- Web.Config ------- <configuration> <appSettings/> <connectionStrings> <add name="ConnectionString1" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\LogIN\App_Data\User.mdb" providerName="System.Data.OleDb" /> </connectionStrings> --- Login.aspx ------- <html> <head> <title>フォーム認証ログイン</title> </head> <body> <form id="Form1" runat="Server"> <h1> <span style="color: #330099"> ログイン</span></h1> <hr /> <b><span style="font-size: 14pt">ID:</span></b> <asp:TextBox id="txtUsr" runat="Server" Columns="12" /><br /> <br /> <asp:Button id="objBtn" runat="Server" Text="ログイン" OnClick="objBtn_Click" /><br /> <asp:Label id="objLbl" runat="Server" ForeColor="Red" Width="569px" /> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString1 %>" ProviderName="<%$ ConnectionStrings:ConnectionString1.ProviderName %>" SelectCommand="SELECT [ID], [登録者氏名] FROM [User] WHERE ([ID] = ?)"> <SelectParameters> <asp:ControlParameter ControlID="txtUsr" Name="ID" PropertyName="Text" Type="Int32" /> </SelectParameters> </asp:SqlDataSource> <asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1"> <EditItemTemplate> ID:<asp:TextBox ID="IDTextBox" runat="server" Text='<%# Bind("ID") %>'> </EditItemTemplate> <InsertItemTemplate> ID:<asp:TextBox ID="IDTextBox" runat="server" Text='<%# Bind("ID") %>'> </asp:TextBox><br /> <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert" Text="挿入"> </asp:LinkButton> <asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="キャンセル"> </asp:LinkButton> </InsertItemTemplate> <ItemTemplate> ID:<asp:Label ID="IDLabel" runat="server" Text='<%# Bind("ID") %>'></asp:Label><br /> </ItemTemplate> </asp:FormView> </form> </body> </html>