php - 如果 SQL 语句有效,则重定向到 URL - ASP.NET 与 PHP

标签 php mysql asp.net vb.net pdo

这是我的帖子的后续内容 How to check mysql db is user is part of a group 。我正在开发一个登录页面,使用 IIS 基本身份验证和 ASp.NET 作为我的默认登录页面。我想要完成的是,当用户登录到asp.net登录页面时,它将连接到我的MYSQL数据库,检查我的名为group_name的表列,看看该用户是否是管理员,如果是,他们将是管理员重定向到 url1,如果没有则重定向到 URL2。

此时,我已经非常接近完成将我提供的代码逻辑从 PDO 转换为 ASP.NET 的任务了,但是在需要准备、绑定(bind)和执行的部分却迷失了方向。我对 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 中内置了一种成员(member)模式。您可以根据数据库创建一个成员资格提供程序,然后您可以在 Web.config 中指定权限,而不必检查每个页面或使用 Context.User.IsInRole("Administrators")`,如果这样的话,它仍然可以工作,您将成员(member)数据库切换到 Active Directory 之类的数据库。

要回答您提出的有关如何使用绑定(bind)参数的代码问题,它会类似于(在 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;

关于php - 如果 SQL 语句有效,则重定向到 URL - ASP.NET 与 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28778926/

相关文章:

php - 使用 CakePHP 将记录插入数据库会导致外键冲突

php - 如何在 CodeIgniter 中的一次提交中插入多行

mysql - RDS MySQL 数据到平面文件以在另一个 MySQL 中重新加载 - Std CLI 不工作

php - AJAX 轮询 - 检查新的数据库条目

asp.net - 是否可以在 Web 服务中使用缓存?

asp.net - 如何在 Google App Engine 上托管 ASP.NET MVC 5.1 应用程序

c# - 如何在后面的c#代码中设置video.js src

php - 如何使用 shell 运行 php 脚本

php - mysql好友在线显示

php - 检查某些文本是否输出到屏幕 PHP