为不同的浏览器设置不同的登录表单

时间:2013-02-03 20:42:30

标签: php html

有人可以帮助我。我很难获得一个表单在Firefox中正确显示和行为。其他所有浏览器都能正常运行。

但我想尝试在php中设置一条规则来说明chrome是否会这样做,如果firefox那样做。

我在下面尝试了这个,当使用ie和chrome等时,登录表单按预期出现但是当使用firefox时,没有显示登录表单。没有错误信息。

<div id="login">
    <?
    if (preg_match('/Chrome|Opera|Safari|MSIE 8.0/', $_SERVER['HTTP_USER_AGENT'])) { ?>

      <?php
        if (!logged_in()) {
            ?>

      <form id="myform" action="login.php" method="post" class="loginform">

    Email
      <input type="text" name="email" maxlength="30" />

    Password
    <input type="password" name="password" maxlength="30" />

    <input type="image" src="../PTB1/assets/img/icons/loginarrow1.png" name="submit" class="loginbutton" />

                </form>


               <?php
        }
        if (logged_in()) {
            ?>


                 Logged in as, <?php echo $_SESSION['email'] ?>. <a href="dashboard.php">Dashboard</a>, <a href="logout.php">Logout</a> |&nbsp;&nbsp;&nbsp;&nbsp;<div class="login_settings" id="login_settings"></div>
    <?php
        }

    else if (preg_match('/Firefox/', $_SERVER['HTTP_USER_AGENT'])) { 


        if (!logged_in()) {
            ?>

      <form action="login.php" rel="shadowbox;height=300;width=500" method="post" >

                    <div class="row email">
                        <input type="email" id="email" name="email" placeholder="Email" value="<?php echo htmlentities($email); ?>" />
                    </div>

                    <div class="row password">
                        <input type="password" id="password" name="password" placeholder="Password" value="<?php echo htmlentities($email); ?>" />
                    </div>
                    <input type="submit" name="submit" value="Login >"  />
                </form>


               <?php
        }
        if (logged_in()) {
            ?>


                 Logged in as, <?php echo $_SESSION['email'] ?>. <a href="dashboard.php">Dashboard</a>, <a href="logout.php">Logout</a> |&nbsp;&nbsp;&nbsp;&nbsp;<div class="login_settings" id="login_settings"></div> 

    <?  


    } } }
    ?>
    </div>

1 个答案:

答案 0 :(得分:1)

我对您的代码的理解是,您试图检测浏览器是否只是Firefox,以便您可以使用placeholder属性和其他HTML5表单功能。

这不仅是一个可怕的想法(IE10和Chrome都支持placeholder,我确信Opera也会这样做),但无论如何它都是placeholder属性的不恰当使用。

相反,只需使用此表单:

<form action="login.php" method="post">
  <div class="row email">
    Email:
    <input type="email" id="email" name="email" placeholder="john.smith@example.com" />
  </div>
  <div class="row password">
    Password:
    <input type="password" id="password" name="password" placeholder="Password" />
  </div>
  <input type="submit" name="submit" value="Login &gt;" />
</form>

毕竟,放置一个可能不受支持的属性没有任何害处,只会被忽略。

相关问题