2013-02-03 59 views
-1

有人可以幫助我。我很難讓表單在firefox中正確顯示和行爲。其他瀏覽器都可以正常工作爲不同的瀏覽器設置不同的登錄表單?

但我想嘗試和設置一個規則在PHP中說,如果鉻,ie等做這個,如果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> 
+10

這是一種錯誤的方法,我建議將它修改爲Firefox,而不是爲每個瀏覽器創建一個黑客版本 –

+0

^100%同意 - 這是對這個問題絕對錯誤的方法。 – rlemon

回答

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="[email protected]" /> 
    </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> 

畢竟,存在將可能不被支持的屬性沒有傷害,它只是被忽略。