2014-02-05 16 views
0

您好我正在創建一個網站與登錄部分這是工作我使用HTML和PHP。我想要做的是我的一個頁面有一個html按鈕,我希望這可以禁用某些用戶。此刻這就是我所得到的。

這是我用於登錄詳細信息的部分。

<?php 
    session_start(); 
    $_SESSION["username"]; 
    $_SESSION["password"]; 
    $_SESSION["access"]; 
    ?> 

我有如果我目前使用statments這是

if($_SESSION["access"] == "Administrator"){ 
    echo $Admin; 
    } 

什麼,我試圖做的是調用PHP中的JavaScript函數if語句是我迄今爲止得到的是

<?php 
    if($_SESSION["access"] == "Consumer") 
    { 
     echo '<script type="text/javascript"> 
      Disable(); 
      </script>'; 
    } 

    if($_SESSION["access"] == "Administrator") 
    { 
     echo '<script type="text/javascript"> 
      Enable(); 
      </script>'; 
    } 
    ?> 

我試圖調用JavaScript函數是

<script type="text/javascript"> 
    function Enable() { 
    SubmitButton.disabled = false; 
    } 

    function Disable() { 
    SubmitButton.disabled = true; 
    } 
    </script> 

我也tryed

if($_SESSION["access"] == "Consumer") 
    { 
     echo "<script> Disable(); </script>"; 
    } 

我只是想知道如果我在錯誤類型的東西,或者如果我忘記把東西。

任何幫助,將不勝感激。

回答

2

看着你的代碼中有幾個問題:

混合你的PHP邏輯和純HTML(通常)不是一個好主意。

相反,我建議您在服務器端完全移動訪問檢查邏輯,並根據用戶的訪問權限相應地顯示按鈕(禁用或啓用)。

例子:

<?php if($_SESSION['access']): // Only show the button for users with access ?> 
    <button type="submit" value="Submit" <?php echo ($_SESSION['access'] != 'Administrator' ? 'disabled' : ''); // Button disabled for everyone but administrators ?> /> 
<?php endif; ?> 

讓我指出明顯(如由其他的答案中提到),這不是100%防彈。即使用戶不是管理員,也可以通過即時編輯頁面的HTML來手動提交按鈕。這只是一個UI修復。一旦按鈕被提交,真正的檢查應該在服務器端完成(例如,用戶登錄,他的計算機上是否有一個識別他爲管理員的cookie,他是否設置了會話cookie等)。

在隨機地方調用JS,例如,在標題中可能會有意想不到的後果。

在調用任何JS函數之前,最好等待頁面被完全加載。你可以很容易地通過jQuery來做到這一點,但要確保在你的頭文件like so中包含jQuery庫。

之後,您可以調用任何JS的頁面是將其下面的塊中加載之後:在PHP

$(function(){ 
    // Place your JS calls here, e.g. call to Enable() 
}); 

字符串連接用的圓點.和字符串可以多

您使用的這段代碼只是簡單的錯誤

echo '<script type="text/javascript">' 
, 'Enable();' 
, '</script>'; 

你應該使用類似:

echo '<script type="text/javascript">' 
    .'Enable();' 
    . '</script>'; 

或更好:

echo '<script type="text/javascript"> 
     Enable(); 
     </script>'; 
+0

尼斯答案.. +1 – Dropout

+0

偉大的回答感謝您對清理一對夫婦領域但這仍然沒有工作我已經改變了代碼的主要部分在回答上面還有什麼我會需要做的是讓它在我以後關注的站點的安全性方面起作用。 @Wordpress開發人員 – WhySoSerious

2

PHP不使用,登錄加入。使用.

但除此之外它應該工作,除了你應該在使用它之前定義SubmitButton

<?php 
    echo "<script type='text/javascript'>"; 
     // if the id of your element is "submitButton" 
     echo "var submitButton = document.getElementById('submitButton');"; 
     echo " function disable(){ submitButton.disabled=true; }"; 
    echo "</script>"; 
?> 

之後,像你一樣,你可以使用它..

<script type='text/javascript'> 
    disable(); 
</script> 

只是被告知,僅僅否認與JavaScript的網頁訪問某些元素/功能是不是一個好的做法 - JavaScript是在用戶的計算機上本地執行,因此用戶可以對其進行修改以獲得優勢。

+0

我與tryed它。而不是它,它打破了頁面,我得到了一個白色的屏幕,所以我不知道我是否做錯了我的代碼現在是'if($ _ SESSION [「access」] ==「Consumer」) { echo '」; } if($ _ SESSION [「access」] ==「Administrator」) { echo''; } ?>' – WhySoSerious

+2

級聯通常在PHP中使用'.'完成,但是'echo'不同 - 它是一種語言結構而不是函數 - 並且會接受一個以逗號分隔的列表。 http://stackoverflow.com/a/8109326/1913784 – knoight

+0

很難說這裏的問題究竟是什麼。你有任何錯誤?控制檯登錄瀏覽器的內容是什麼? – Dropout

0

那麼,問題可能是你試圖在HTML準備好(或最終呈現)之前調用javascript函數,所以瀏覽器在執行函數時沒有找到該按鈕。

你可以解決這個問題把你的JavaScript代碼在你的頁面的結束,或者使用jQuery和做:

$(document).ready(function() { 
<%php if ($_SESSION['access'] == 'xxxxx') {%> 
    Enable(); 
<%php } else { %> 
    Disable(); 
<%php } %> 
}); 

總之,經常檢查服務器端的用戶權限,因爲有人可能會使用啓用按鈕螢火蟲還是其他什麼東西......

+0

我將如何或將它放到$ _SESSION if語句我稱之爲啓用()函數將我叫此代碼的.ready部分之後的函數()? – WhySoSerious

+0

代碼編輯使用測試會話值 –