【问题标题】:Multiple form authentication in the same domain同域多表单认证
【发布时间】:2015-08-23 23:22:59
【问题描述】:

我有一个网站,在不同的页面中有两种形式的身份验证,有不同的输入名称和不同页面的链接。问题是,当我将身份验证保存到表单的浏览器(chrome)时,浏览器会使用其他表单中的相同数据填充字段。怎么可能?

第一种形式

<form action="" method="POST" enctype="multipart/form-data">
              <div class="form-group">
                <label for="exampleInputEmail1">Email</label>
                <input type="email" name="private_email" class="form-control" id="email1" value="" placeholder="Enter email" required>
              </div>
              <div class="form-group">
                <label for="exampleInputPassword1">Password</label>
                <input type="password" class="form-control" name="private_password" value="" id="password1" placeholder="Password" required>
              </div>
              <input type="submit" name="login" class="btn btn-default" value="Login">
            </form>

第二种形式(是cms的一种形式)

<form action="http://escuolainsieme.it/shop/login" method="post" id="login_form" class="box">
            <h3 class="page-subheading">Sei già registrato?</h3>
            <div class="form_content clearfix">
                <div class="form-group form-ok">
                    <label for="email">Indirizzo email</label>
                    <input class="is_required validate account_input form-control" data-validate="isEmail" type="text" id="email" name="email" value="">
                </div>
                <div class="form-group">
                    <label for="passwd">Password</label>
                    <span><input class="is_required validate account_input form-control" type="password" data-validate="isPasswd" id="passwd" name="passwd" value=""></span>
                </div>
                <p class="lost_password form-group"><a href="http://escuolainsieme.it/shop/recupero-password" title="Recupera la password dimenticata" rel="nofollow">Hai dimenticato la password?</a></p>
                <p class="submit">
                    <input type="hidden" class="hidden" name="back" value="my-account">                     <button type="submit" id="SubmitLogin" name="SubmitLogin" class="button btn btn-default button-medium">
                        <span>
                            <i class="icon-lock left"></i>
                            Entra
                        </span>
                    </button>
                </p>
            </div>
        </form>

Login.php

<?php session_start(); // Starting Session
$error = ''; // Variable To Store Error Message 
if (isset($_POST['private_login'])) {
if (empty($_POST['private_email']) || empty($_POST['private_password'])) {
    $error = "<div class='alert alert-danger'>Compila tutti i campi</div>";
} else {
    $email = mysqli_real_escape_string(conn(), $_POST['private_email']);
    $password = mysqli_real_escape_string(conn(), $_POST['private_password']);
    $cls_utente = new utente();
    if ($cls_utente->check_user($email, $password) == 1) {
        $_SESSION['login_user'] = $email; // Initializing Session
        $_SESSION['is_logged']  = true;
    } else {
        $error .= "<div class='alert alert-danger'>Email o password errati</div>";
    }
}}?>

【问题讨论】:

  • 你是在问如何让它停止,或者它是如何做到的?
  • 你使用任何框架吗?
  • 你需要在不同的页面中发布表单值吗?
  • @KarthikKeyan 没有问题,当我通过 chrome 或任何其他浏览器保存我的登录详细信息并访问另一个表单时,请填写另一个表单的字段。当我有两封相同的电子邮件保存在归属表中时,就会发生这种情况
  • 可以使用多少个按钮?

标签: php forms authentication


【解决方案1】:

您可以尝试使用autocomplete="false"autocomplete="off" 禁用它,不确定它是否有效,但请尝试一下。

就我而言,不可能让浏览器“意识到”它们是不同的表单,它们不应该自动填充相同的数据。

查看这 2 个答案,answer1answer2,了解浏览器如何检测表单的更多信息。

【讨论】:

  • 非常感谢......我阅读了第二个答案,我解决了我的问题!但我不理解所有浏览器上的这种行为。
【解决方案2】:

您必须在用户表中添加另一列,例如,如果您添加类型列,则值设置为默认超级管理员、版主、用户。现在您可以使用此列检查登录身份验证。如果用户名和密码和类型相等,则重定向到特定页面。因此您可以根据用户类型重定向不同的页面..

【讨论】:

    猜你喜欢
    • 2013-05-03
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 2014-03-24
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多