2010-04-02 40 views
2

我有一系列PHP語句,我只想在啓用了javaScript的情況下運行。我可以用PHP創建一個PHP可識別的變量嗎?

if($js_enabled == 'yes') { 
    //Run a series of PHP statements 
} 

我的問題是,我想用javaScript創建$ js_enabled變量。因此,如果啓用了javaScript,則會創建該變量並運行PHP語句,但如果未啓用javaScript,則該變量將永遠不會創建,並且PHP語句將不會運行。

如何使用PHP創建一個PHP可識別的變量?

+2

爲什麼不只是發出兩個輸出並使用'

+3

呃我不確定你有PHP和Javascript的正確思想。閱讀此:http://stackoverflow.com/questions/2034501/how-does-php-work – 2010-04-02 08:39:41

+0

@KennyTM - 因爲任何PHP我放在noscript標記仍然運行時啓用JavaScript。它不會跳過那個PHP,只是因爲它們在noscript標籤內。 – zeckdude 2010-04-02 09:20:38

回答

6

你可以做

$browser = get_browser(); 
if ($browser['javascript'] == 1) { 
    // your code here 
} 

請閱讀documentation for get_browser的注意事項,尤其是

注:爲了使這一工作,在php.ini必須p您browscap配置oint到系統上browscap.ini文件的正確位置。 browscap.ini不與PHP捆綁在一起,但您可以在這裏找到最新的»php_browscap.ini文件。 雖然browscap.ini包含許多瀏覽器的信息,但它依賴於用戶更新來保持數據庫最新。該文件的格式是相當不言自明的。

而且簽在評論中給出的鏈接get_browser:


編輯正如你正確地在評論中指出,上述不會告訴你如果JavaScript是啓用但只是瀏覽器是的能力運行它。從服務器端查找客戶端是不可能的,因爲服務器端先運行。如果有的話,在之後通知服務器端已經提供了頁面,例如,就像@ mck89建議的那樣,或者簡單地設置一個你可以在每個後續請求中讀取的cookie。但是一般來說,如果您的網站需要啓用JavaScript,您應該簡單地添加一條消息來通知用戶這個需求,例如,:

<noscript>This page requires JavaScript to run properly</noscript> 

換句話說,不要從PHP中檢查。只需設置瀏覽器可能使用的每個變量,如果啓用了JavaScript並考慮使用graceful degradation or progressive enhancement

+0

從我在他們的文檔中看到的內容來看,這隻會告訴我他們的瀏覽器是否支持JavaScript,而不是他們是否禁用JavaScript。 – zeckdude 2010-04-02 10:38:46

0

這是無法完成的。 PHP是服務器端,而JavaScript解釋後只有 PHP解釋已經完成,代碼已經在用戶的瀏覽器中。嘗試使用ajax的解決方法。如果javascript_enabled - >用ajax調用一些php頁面。

1

您可以將該值存儲在隱藏字段中。並在服務器端檢查它。

2

爲什麼你不簡單地ajax請求?如果禁用javascript,則不能執行ajax請求,因此PHP腳本不會執行,如果啓用javascript,則ajax請求將啓動PHP腳本的執行。

1

如果我需要它那麼糟糕,我會使用JavaScript設置頁面前的表單變量(可以隱藏),然後在處理表單時檢查它。否則,我會讓我的頁面無JS工作...

相關問題