views:

111

answers:

5

I have a series of PHP statements that I only want to run if javaScript is enabled.

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

My problem is that I want to create that $js_enabled variable with javaScript. Therefore, if javaScript is enabled, the variable will be created and the PHP statements will be run, but if javaScript is not enabled, the variable will never be created and the PHP statements will not run.

How can I create a variable with JavaScript that PHP can recognize?

A: 

This can't be done. PHP is server side while javascript is interpreted only after the php interpretation has already been done and the code already sits in the user's browser. Try a workaround using ajax. if javascript_enabled -> call with ajax some php page.

nc3b
+1  A: 

You can store that value in a hidden field. and check it on server side.

thelost
+1  A: 

Why don't you simply an ajax request? If javascript is disabled the ajax request can't be done so the PHP script will not be executed, if javascript is enabled the ajax request starts the execution of the PHP script.

mck89
+1  A: 

If i would need it that badly I would use JavaScript to set a form variable (prefferably hidden) on page before and then check it when processing form.. Otherwise i would make my pages work without JS...

kviksilver
+5  A: 

You can do

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

Please read the documentation for get_browser for caveats, especially

Note: In order for this to work, your browscap configuration setting in php.ini must point to the correct location of the browscap.ini file on your system. browscap.ini is not bundled with PHP, but you may find an up-to-date » php_browscap.ini file here. While browscap.ini contains information on many browsers, it relies on user updates to keep the database current. The format of the file is fairly self-explanatory.

Also checkout the link given in the comments to get_browser:


EDIT As you correctly point out in the comments, the above will not tell you if JavaScript is enabled but just whether the browser is capable of running it. Finding out about the clientside from the serverside is impossible, because the serverside runs first. If anything, inform the serverside after a page has been served, e.g. like @mck89 suggested or simply set a cookie you can read on each subsequent request.

But generally speaking, if your site requires JavaScript enabled, you should simply add a message to inform the user about this requirement, e.g.:

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

In other words, don't check from PHP. Just set every variables the browser might use, if JavaScript is enabled and consider using graceful degradation or progressive enhancement.

Gordon
From what I read in their documentation, this will only tell me if their browser supports JavaScript, not if they have it disabled.
zeckdude