PHP判断浏览器类型程序代码详解
PHP如何判断浏览器类型及浏览器语言因为浏览器在和服务器连接时候都会先发送一些包含自己信息的内容(浏览器类型、语言)。
这里我们主要分析的是_SERVER["HTTP_USER_AGENT"](浏览器类型)和_SERVER["HTTP_ACCEPT_LANGUAGE"](浏览器语言)。
我们所要做的就是把这些内容读出来,然后用strpos或者preg_match函数来对比就可以了。
判断浏览器类型:
代码如下 | 复制代码 |
<?php echo $_SERVER["HTTP_USER_AGENT"];?> |
先给出PHP代码部分,有些不是很全,需要的朋友自己依葫芦画瓢自行添加去。(下面这个代码有个小错误,请将文章看完并自行修改)
代码如下 | 复制代码 |
<?php |
打开opera浏览器,可以看到它的页面请求头信息如下:
Opera/9.80 (Windows NT 5.1; U; Edition IBIS; zh-cn) Presto/2.10.229 Version/11.61
但是 strpos($_SERVER["HTTP_USER_AGENT"],"Opera") 返回的值始终是“0”
解决方法比较也比较简单,
代码如下 | 复制代码 |
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Opera")) 替换成 else if(strpos($_SERVER["HTTP_USER_AGENT"],"pera")) |
下面再补一个更强的可判断是浏览器用户还是seo/seo.html" target="_blank">搜索引擎
代码如下 | 复制代码 |
|
具体如下
为了让 PHP 执行上面的语句,我们必须使用 mysql_query() 函数。此函数用于向 MySQL 连接发送查询或命令。
例子
在下面的例子中,我们创建了一个名为 “my_db” 的数据库:
代码如下 | 复制代码 |
<?php |
创建表
CREATE TABLE 用于在 MySQL 中创建数据库表。
例子
下面的例子展示了如何创建一个名为 “Persons” 的表,此表有三列。列名是 “FirstName”, “LastName” 以及 “Age”:
代码如下 | 复制代码 |
<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } // Create database if (mysql_query("CREATE DATABASE my_db",$con)) { echo "Database created"; } else { echo "Error creating database: " . mysql_error(); } // Create table in my_db database mysql_select_db("my_db", $con); $sql = "CREATE TABLE Persons ( FirstName varchar(15), LastName varchar(15), Age int )"; mysql_query($sql,$con); mysql_close($con); ?> |
向数据库表插入数据
您还可以规定希望在其中插入数据的列:
INSERT INTO table_name (column1, column2,...)
VALUES (value1, value2,....)
例子
在前面的章节,我们创建了一个名为 “Persons” 的表,有三个列:”Firstname”, “Lastname” 以及 “Age”。我们将在本例中使用同样的表。下面的例子向 “Persons” 表添加了两个新记录:
代码如下 | 复制代码 |
<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); mysql_query("INSERT INTO Persons (FirstName, LastName, Age) VALUES ('Peter', 'Griffin', '35')"); mysql_query("INSERT INTO Persons (FirstName, LastName, Age) VALUES ('Glenn', 'Quagmire', '33')"); mysql_close($con); ?> |
--------------------------------------------------------------------------------
把来自表单的数据插入数据库
代码如下 | 复制代码 |
<html> |
当用户点击上例中 HTML 表单中的提交按钮时,表单数据被发送到 “insert.php”。”insert.php” 文件连接数据库,并通过 $_POST 变量从表单取回值。然后,mysql_query() 函数执行 INSERT INTO 语句,一条新的记录会添加到数据库表中。
下面是 “insert.php” 页面的代码:
代码如下 | 复制代码 |
<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); $sql="INSERT INTO Persons (FirstName, LastName, Age) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')"; if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } echo "1 record added"; mysql_close($con) ?> |
php输出变量加大括号,这是什么写法?看下面一段代码:
代码如下 | 复制代码 |
<?php header("Content-Type:text/html; charset=utf-8"); $test="1变量1"; //echo "前面有字符串aa ".$test." bb后面字符串"; echo "前面有字符串aa {$test} bb后面字符串"; ?> |
可以看出php输出变量加大括号同使用.运算符输出变量字符串效果是一样,总结出下面3点以帮助理解php输出变量加大括号{}的作用:
1. 表示{}里面的是一个变量 ,执行时按照变量来处理;
2. 在字符串中引用变量使用的特殊包括方式,这样就可以不使用.运算符,从而减少代码的输入量了;
3. 防止变量名和后面的字符串连在一起。
附:
字符串变量中大括号{}的作用:
PHP 变量后面加上一个大括号{},里面填上数字,就是指 PHP 变量相应序号对应的字符。
例如:
代码如下 | 复制代码 |
$str = 'hello'; |
如果要检查某个字符串是否满足多少长度,可以考虑用这种大括号{} 加 isset 的方式替代 strlen 函数,因为 isset 是语言结构,strlen 是函数,所以使用 isset 比使用 strlen 效率更高。
比如判断一个字符串的长度是否小于 5:
代码如下 | 复制代码 |
if ( !isset ( $str{5} ) ) 就比 if ( strlen ( $str ) < 5 ) 好。 |
修改php.ini这个选项,网上有很多的教程,可以随便搜。
1、先用root账号,登录到nobody的账户。
2、然后用whereis php命令查看,php.ini所在的位置,修改这个php.ini的文件就可以了。
3、最后重启apache,就可以生效了。
这里的nobody账户就是apache使用的账户,权限很低。
这里主要注意的问题就是你修改的配置文件必须是nobody所使用的配置文件。
一般情况下,修改了配置但是没有生效,可以考虑一下机器上是不是有多份配置。
配置与文件上传有关的参数
所有这些参数都在php.ini中配置。
1.file_uploads
设为On,允许通过HTTP上传文件
2.upload_tmp_dir
文件上传至服务器时用于临时存储的目录,如果没指定,系统会使用默认的临时文件夹(我的机器是/tmp)。
3.upload_max_filesize
允许上传文件大小的最大值,默认为2M。
4.post_max_size
Php可接收的post数据的最大值(包括表单里的所有值的总合),默认为8M。
5.memory_limit
每个php所最占的最大内存数,这个值要大于允许上传的文件大小。
6.max_execution_time
每个php运行的最长时间(秒),默认30秒。
7.max_input_time
Php解析POST/GET数据的最长时间(秒),默认60秒。
具体方法详解
举例:假设在 index.php 中需要调用 inc.php?para=3 ,
inc.php
代码如下 | 复制代码 |
<?php echo $_GET['para']; ?> |
下面的写法是无法得到正确结果的:
index.php
代码如下 | 复制代码 |
<?php include dirname(__FILE__).'/inc.php?para=3'; ?> |
稍微变通一下,把$_GET变量在include之前定义,则可以正常运行:
index.php
代码如下 | 复制代码 |
<?php $_GET['para'] = 3 include dirname(__FILE__).'/inc.php; ?> |
如果php.ini中开启了allow_url_include功能,则可以使用include url的方式:
index.php
代码如下 | 复制代码 |
<?php include 'http://www.yoururl.com/inc.php?para=3'; ?> |
设置方法:php.ini中,找到如下行,改为On:
; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
allow_url_include = On
不过为了保证安全性,大部分的服务器都将allow_url_include 功能关闭,那样就只能视情况而定了。
相关文章
- 本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
- 这篇文章主要介绍了js如何实现浏览器打印功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-15
- 其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
js代码判断浏览器种类IE、FF、Opera、Safari、chrome及版本
第一种,只区分浏览器,不考虑版本 复制代码 代码如下:function myBrowser(){ var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var isOpera = userAgent.indexOf("Opera") > -1; if (isOp...2014-05-31- 这篇文章主要介绍了详解Vue Cli浏览器兼容性实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-09
- 这篇文章主要介绍了如何使用 JavaScript 操作浏览器历史记录 API,帮助大家更好的理解和使用JavaScript,感兴趣的朋友可以了解下...2020-11-24
- 这篇文章主要介绍了Python获取浏览器窗口句柄过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-26
- 这篇文章主要给大家介绍了关于vue如何调用浏览器分享的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-20
- 在网站前端开发中,浏览器兼容性问题本已让我们手忙脚乱,Chrome的出世不知道又要给我们添多少乱子。浏览器兼容性是前端开发框架要解决的第一个问题,要解决兼容性问题就得首先准确判断出浏览器的类型及其版本。 JavaScrip...2014-05-31
- 这篇文章主要介绍了JAVA读取文件流,设置浏览器下载或直接预览操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-09
- 由于国内好几个浏览器都是双核浏览器(蛋痛,做一个浏览器壳就说国产,而且使用率高),有时打开网页会出现不兼容模式,在极速模式下是好的,现在我们来用代码实现网页自动调用国内...2016-09-20
- 这篇文章主要介绍了C# 模拟浏览器并自动操作的实例代码,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-11-03
- 这篇文章主要介绍了vue项目中禁用浏览器缓存配置案例,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...2021-09-12
- 这篇文章主要介绍了JS跨浏览器解析XML应用过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-10-16
- 这篇文章主要介绍了Python爬虫之Selenium实现关闭浏览器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-04
- 在jquery.1.9以前的版本,可以使用$.browser很轻松的判断浏览器的类型和版本,但是在1.9中和以后的版本中,$.browser已经被删除,下面就介绍一下如何实现此功能,希望能够给需要的朋友带来帮助...2016-01-14
- 小编推荐的这篇文章介绍了两种Ajax打开新窗口被浏览器拦截的解决方法,有需要的同学可以参考一下 最近在做支付时发现打开支付窗口时被浏览器拦截了,百度了一下才...2017-01-22
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
这篇文章主要介绍了js根据手机客户端浏览器类型,判断跳转官网手机网站多个实例代码,需要的朋友可以参考下...2016-05-04- 本文章来为各位一篇关于echarts使图标能自适应浏览器窗口变化,及经纬度转换的例子,希望文章能够帮助到各位同学哦。 1、echarts使图标能自适应浏览器窗口变化 wind...2016-09-20
- 这篇文章主要给大家介绍了关于angular浏览器兼容性问题的解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者使用angular具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-07-26