如果 SQL 语句有效,则重定向到 URL - ASP.NET vs PHP
Redirecting to URL if SQL statement is valid - ASP.NET vs PHP
这是对我的话题 的跟进。我正在开发一个使用 IIS 基本身份验证和 ASp.NET 作为我的默认登录页面的登录页面。我想要完成的是,当用户登录到 asp.net 登录页面时,它将连接到我的 MYSQL 数据库,检查我的名为 group_name 的 table 列并查看用户是否是管理员,如果是,他们将被重定向到 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 内置了一个模式,让 Membership into ASP.NET。您可以根据您的数据库创建一个 Membership Provider,然后您可以在 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;
这是对我的话题
然而,此时我已经非常接近完成将我从 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 内置了一个模式,让 Membership into ASP.NET。您可以根据您的数据库创建一个 Membership Provider,然后您可以在 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;