browser name in php? - php

How can we get Browser Name and Version information using php script?

<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>
As Palantir says, additionally have a look at the get_browser function, where you can check also capabilities enabled in the browser.

http://php.net/manual/en/function.get-browser.php

You will need to create function to translate user agent data into common names of browsers
For example, $_SERVER['HTTP_USER_AGENT'] could return
Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9* is firefox
or
Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.55 Safari/533.4 is Chrome
The details provide you with the rendering engine, code base, version, os, etc...
I'd suggest using preg_match and/or a list of known browsers is you want to do something like
echo browserCommonName($_SERVER['HTTP_USER_AGENT']);
to output "Google Chrome".
browserCommonName($userAgent) would need a list of known browsers.
edit: just noticed get_browser buit into php does this, my bad for not reading the thread.

See get_browser().
<?php
echo $_SERVER['HTTP_USER_AGENT'] . "\n\n";
$browser = get_browser(null, true);
print_r($browser);
?>

All in all, you can't. You can certainly try to get it, and you're almost certainly guaranteed to get something that looks like what you want; but there is absolutely no way of checking wether or not the information is correct. When you receive a user agent string, the browser on the other end could be truthful, or it could be lying. When dealing with users, always assume that it is, in fact, lying.
There is no "best way" to deal with this, but what you most likely want to do is test your site with a wide variety of browsers, use portable HTML and CSS techniques, and if you absolutely must, fill the holes with JavaScript.
Choosing what data to send to a browser based on what browser you think it is, is a Bad Idea™.

You could always take a look at the php function get_browser http://php.net/manual/en/function.get-browser.php. You will need $_SERVER['HTTP_USER_AGENT'] for this.
You may also want to take a look at Chris Schuld Browser Detection Class. http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php.html

Related

Issue with & in URL using simplexml_load_file

simplexml_load_file() does not load XML file when the URL includes an ampersand symbol. I have tried two examples with and without ampersand:
$source1 = simplexml_load_file("http://www.isws.illinois.edu/warm/data/outgoing/nbska/datastream.aspx?id=ncu");
print_r($source1); //works
$source2 = simplexml_load_file("http://forecast.weather.gov/MapClick.php?lat=38.8893&lon=-77.0494&unit=0&lg=english&FcstType=dwml");
print_r($source2); //no output
First example works well as it does not includes ampersand, but the second example does not work as it include ampersand.
I have referenced
simplexml_load_file with & (ampersand) in url with Solr and simplexml_load_file ampersand in url but it did not work.
The issue is not the ampersand in the URL. The issue, instead, is that weather.gov appears to be blocking these types of requests. They will not allow users that do not have a useragent set.
The fastest way to get around this is to set a UserAgent within PHP, which you can do by putting this code above your xml call:
ini_set('user_agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0) Gecko/20100101 Firefox/9.0');
However, I would recommend using CURL instead of simplexml_load_file, as simplexml_load_file is often restricted by server configuration. If you were to do this with curl, you'd want to do something like the first answer here:
SimpleXML user agent
I have tested this locally and got it working just by specifying a user agent.
EDIT: Also, welcome to SO! Be sure to vote often ;D

PHP Unable to determine user's browser information

I want to determine which user uses which browser when they visit to my website.
For this process i'am using $_SERVER['HTTP_USER_AGENT'] but when i try to print it while i'am using chrome i get this result(on localhost):
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
What can i do to fix that ? Any help would be appriciated
$_SERVER['HTTP_USER_AGENT']
This gives the information of the browser as you said.
Always keep in mind that HTTP_USER_AGENT can be easily spoofed by the user.
get_browser() gives the browser's capability.
you can also use the php class provided by Wolfcast
use like:
$browser = new BrowserDetection();
echo 'You are using ', $browser->getBrowser(), ' version ', $browser->getVersion();
if you really want to differentiate the browsers from the client-side you could use the javascript to find the browser and apply the changes through that based on different browser.
this is a code that i obtained from internet that exactly differentiate the browsers.
var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
var isFirefox = typeof InstallTrigger !== 'undefined'; // Firefox 1.0+
var isChrome = !!window.chrome && !isOpera; // Chrome 1+
if(isFirefox){
//do the change
} else if (isChrome){
//do the change
}

Reliable way to detect Chrome on Mac in PHP?

As the title says, is there a reliable way to detect whether a user is visiting my page using Chrome on Mac using PHP?
I have a bug that only displays when using Chrome on Mac, and until I get it sorted out I would like to have a popup to recommend the users to use a different browser.
Use $_SERVER['HTTP_USER_AGENT'] to find the users' user agent and a function to check if this is within the string.
//The following will find out whether the user is using a Mac, obviously you can change this by echoing the user agent to find out what you need to search for.
$browser = strpos($_SERVER['HTTP_USER_AGENT'], "Chrome");
$os = strpos($_SERVER['HTTP_USER_AGENT'], "Macintosh; Intel Mac OS X");
if($browser !== false && $os !== false) {
//do stuff if on a mac with Chrome
}
This will work with any type of Mac OS X software and any version of Chrome. If you want to narrow your results down further, you can just use:
if($_SERVER['HTTP_USER_AGENT'] == "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11" ) {
//do stuff here
}
It would be better if you posted the code you're having issues with rather than creating a hacky fix.
However, you can use $_SERVER['HTTP_USER_AGENT'] to check the users browser/OS.
To aid, you would expect something like Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11 from a Mac user on Chrome.
Note
The user agent isn't always set so use isset first to avoid notices appearing.
I know you're looking for the PHP solution to find the browser, but since the problems you are most likely to encounter with a specific browser are client-side, there should be no need to detect it from the server-side.
So here's a solution with javascript, and if you get the match you expect, you can hide the body, or display a popup, or send it to your server, set a cookie, or whatever you see appropriate to "fix" your problem (although you should be looking into really fixing the problem...)
Look here for the source:
function that_is_called_on_load() {
if (BrowserDetect.browser == "Chrome" && BrowserDetect.OS == "Mac") {
alert("You are using mac, sorry.");
window.location = "mac_chrome.php";
}
}
This is a very "dirty" solution, and it might be slightly more accurate/reliable than the server-side one.

How to detect dolphin browser in php?

How to detect dolphin browser in php? Unfortunatly I don't have android, so I can't check the dolphin browser's user agent.
thanks in advance,
The user agent contains "Dolfin/2.0".
On my version of Dolphin, 8.8.2 - running on a Samsung Galaxy Note, there is no particular user agent and 'desktop' is set. The user-agent is set by tapping on More -> Settings -> User Agent. I am then able to change the user agent to any of the following:
Android
Desktop, which identifies as: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16
iPhone
iPad
Custom (I guess you could set a custom user-agent such as 'dolfin' if you want).
So if you're trying to deliver content specific to the Dolphin browser in PHP you could test if 'mobi' or 'Android' is present in the user agent. If you're trying to detect that the exact browser being used is Dolphin then that will be tricky unless your client device's custom user-agent is set.
You can check the User Agent
if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'dolphin') !== false) {
echo 'Your UA is Dolphin';
}
You can do a more accurate check if you know the exact User Agent, but I assumed that if it contains the word dolphin is accurate enough.

Detect on which browser current web application is running

I wanted to know in PHP, how to detect on which browser my web application is running.
e.g.
If current browser is chrome then alert("Chrome browser processing") otherwise alert("rest browser processing");
echo $_SERVER['HTTP_USER_AGENT'];
Below output I am getting If i execute above code :
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.21 Safari/532.0
Please suggest your pointers to detect exact browser name.
Thanks,
-Pravin
This has some useful code.
Basically, in your case, you can just look for the string "Chrome". In general, it might take a bit more logic, since, for example, the string "Safari" is found in the user-agents provided by other browsers than Safari (including Chrome). PHP provides the 'browser' element for this.
Personally, I'd use Javascript for this one.
if(navigator.userAgent.match(/Chrome/i)) {
alert("You're using Chrome!");
}
else {
alert("You're using something other than Chrome!");
}
... but if you really wanted to, you could accomplish the same thing in PHP:
if (preg_match("/Chrome/i", $_SERVER['HTTP_USER_AGENT']) == 0) {
// zero matches
echo "<script>alert('You're not using Chrome!')</script>";
} else {
echo "<script>alert('You're using Chrome!')</script>";
}

Categories