PHP MySQL 多用户登录单个用户 ID 例如具有五个用户名的公司帐户都访问相同的数据

标签 php mysql

这仅与登录表单有关。数据库中的用户详细信息如下

用户

CREATE TABLE `users` (
    `UserID` INT(25) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `Username` VARCHAR(65) NOT NULL ,
    `Password` VARCHAR(32) NOT NULL ,
    `EmailAddress` VARCHAR(255) NOT NULL,
    `Pass1` VARCHAR(32) ,
    `User1` VARCHAR(65) ,
    `Pass2` VARCHAR(32) ,
    `User2` VARCHAR(65) ,
    `Pass3` VARCHAR(32) ,
    `User3` VARCHAR(65) ,
    `Pass4` VARCHAR(32) ,
    `User4` VARCHAR(65) ,
    `Pass5` VARCHAR(32) ,
    `User5` VARCHAR(65) 
);

我不希望公司帐户的要求必须创建五个用户等,但他们可以选择因此不使用 NOT NULL。

我希望登录公司帐户的所有 5 个用户都拥有与 1 个用户相同的访问权限,方法是检查他们各自的密码和用户名。

PHP

<?php
    if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['Username']))
    {
?>
<h1>Member Area</h1>
<p>Thanks for logging in! You are <code><?=$_SESSION['Username']?></code> and your email address is <code><?=$_SESSION['EmailAddress']?></code>.</p>
<a href="logout.php">Logout<a>
<?php
    }
    elseif(!empty($_POST['username']) && !empty($_POST['password']))
    {
        $username = mysql_real_escape_string($_POST['username']);
        $password = md5(mysql_real_escape_string($_POST['password']));
        if (($username) === false) {
            $user_cond = "user1='$username'";
            }
        else {
        $user_cond = "username='$username'";
        }
        $checklogin = mysql_query("SELECT `UserID`,`Username`,`Password`,`EmailAddress`,`Pass1`,`User1` FROM users WHERE $user_cond");
        if(mysql_num_rows($checklogin) == 1)
        {
            $row = mysql_fetch_array($checklogin);
            $email = $row['EmailAddress'];
            $_SESSION['Username'] = $username;
            $_SESSION['EmailAddress'] = $email;
            $_SESSION['LoggedIn'] = 1;
            echo "<h1>Success</h1>";
            echo "<p>We are now redirecting you to the member area.</p>";
            echo "<meta http-equiv=refresh content=2;login.php>";
        }
        else
        {
            echo "<h1>Error</h1>";
            echo "<p>Sorry, your account could not be found. Please <a href=\"login.php\">click here to try again</a>.</p>";
        }
    }
    else
    {
?>
<h1>Member Login</h1>
    <p>Thanks for visiting! Please either login below, or <a href="register.php">click here to register</a>.</p>
    <form method="post" action="login.php" name="loginform" id="loginform">
        <fieldset>
            <label for="username">Username:</label><input type="text" name="username" id="username"/><br />
            <label for="password">Password:</label><input type="password" name="password" id="password"/><br />
            <input type="submit" name="login" id="login" value="Login" />
        </fieldset>
    </form>

最佳答案

你必须先改变你的数据库设计。尝试理解什么是 1:N 关系。 现在根据您的问题,您需要 5 个不同的用户从同一个用户 ID 登录。

现在您必须创建包含 ID 和电子邮件地址的父表。 现在创建子表,其中包含父表的外键和用户名密码。

现在您可以在子表上查询用户名和密码,您将获得所有 5 个用户的相同 ID。

考虑这个哈希你的密码并学习数据库规范化。然后你可以尝试实现你的登录。

同时检查所有 session 。

关于PHP MySQL 多用户登录单个用户 ID 例如具有五个用户名的公司帐户都访问相同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29715906/

相关文章:

php - 如何在显示 WordPress 帖子的 PHP 中循环 while 语句?

php - 如何在 CakePHP 的输入字段中显示数据库中的值

php - PHP如何与MySQL交互

mysql - 使用 select 更新数据表

php - 尝试在 php 中更新 mysql 数据库表单

php postgresql pg_fetch_all

php - 永久链接不适用于自定义帖子和类别

javascript - Laravel 5.5 中的多字段排序

mysql - cakephp 在条件中找到多组 OR

ios - MYSQL 和 Swift - 上传图像和文件 ||使用 Alamofire 会更好吗?