簡體   English   中英

如果SQL語句有效,則重定向到URL - ASP.NET與PHP

[英]Redirecting to URL if SQL statement is valid - ASP.NET vs PHP

這是對我的線程的一點跟進如何檢查mysql db是用戶是組的一部分 我正在使用IIS Basic身份驗證和ASp.NET作為我的默認登錄頁面開發登錄頁面。 我想要完成的是,當用戶登錄到asp.net登錄頁面時,它將連接到我的MYSQL數據庫,檢查我的表列名為group_name,看看用戶是否是管理員,如果是,他們將是重定向到url1,如果沒有重定向到URL2。

在這一點上,我已經非常接近完成將從PDO提供的代碼的邏輯轉換為ASP.NET,但是在我需要准備,綁定和執行的部分丟失了。 我不太熟悉PDO中的那些功能,甚至不是ASP.NET。 在這個項目上已經有好幾天了解ASP.Net,此時我會感激任何幫助。

以下是審核答案后更新的代碼(2月28日更新):

%@ Page Language="VB" debug="true" %>
<%@ Import Namespace = "System.Data" %>
<%@ Import Namespace = "MySql.Data.MySqlClient" %>
<script language="VB" runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
    Dim username As String = Convert.ToString(User.Identity.Name.Substring(User.Identity.Name.IndexOf("\") + 1))
    Dim myConnection  As MySqlConnection
    Dim myDataAdapter As MySqlDataAdapter
        Dim strSQL As String
        Dim mySqlCommand As MySqlCommand
        Dim counter As Integer
        Dim isInGroup As Boolean

        myConnection = New MySqlConnection("server=localhost; user id=Directory_Admin; password=IMCisgreat2014; database=imc_directory_tool; pooling=false;")
        strSQL = "SELECT COUNT(*) FROM tbl_staff WHERE username = @username AND 'group_id' = '1001';"

        myDataAdapter = New MySqlDataAdapter(strSQL, myConnection)
        mySqlCommand = New MySqlCommand(strSQL)
        mySqlCommand.Parameters.AddWithValue("@username", username)
        counter = mySqlCommand.ExecuteScalar()
        If isInGroup = counter > 0 Then
            Response.Redirect("http://www.w3schools.com")
        Else
            Response.Redirect("http://www.google.ca")
        End If

    End Sub

</script>

<html>
<head>
<title>Simple MySQL Database Query</title>
</head>
<body>

Main page ...

</body>
</html> 

我試圖將以下代碼的邏輯復制到我的ASP.net頁面。

$db = new PDO("mysql:host=localhost;dbname=db_name", $user, $pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$username = "username1";
$group = "Administrator";

$query = "SELECT COUNT(*) FROM tbl_staff 
         WHERE username = :username 
         AND `group` = :username";

$statement = $db->prepare($query);
$statement->bindValue(':username', $username);
$statement->bindValue(':password', $group);
$statement->execute();
$count = $statement->fetchColumn();
if ($count === 1)
{
    return TRUE;
}
else 
{
    return FALSE;   
}

首先,閱讀ASP.NET中的成員資格提供程序。 你正在做的是一個非常常見的任務,因此MS構建了一個ASP.NET成員資格模式。 您可以根據您的數據庫創建成員資格提供程序,然后您可以在Web.config中指定權限,而不必檢查每個頁面或使用Context.User.IsInRole(“Administrators”)`,如果,如果,仍然可以工作,您將會員數據庫切換為Active Directory。

要回答你詢問如何使用綁定參數的代碼問題,它會像(在C#中,因為這個問題被標記為C#)

var myConnection = new MySqlConnection("connection string");
var mySqlCommand = new MySqlCommand("SELECT COUNT(*) FROM tbl_staff WHERE username = @username AND 'group_id' = '1001'");
mySqlCommand.AddWithValue("@username", username);
int count = (int)mySqlCommand.ExecuteScalar();
bool isInGroup = count > 0;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM