PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

图片 58

在重重时候,大家都要对有些Web
页面举办安全保险。标准的事例正是前台浏览页面与后台管理页面包车型大巴安全性。那也是
WEB 上用得最多的一种页面安全形式。在用PHP4
开辟贰个Mini的书籍管理类别中,我也越过了那几个安全主题材料。于是本身想开了PHP4
的新特点—-Session ..

贰个简便的PHP网址构造

务求指标:同一站点,无权顾客,平时授权顾客和精品顾客能观察和利用不一致的页面。

课前小知识分布:MSSQL和SQL
Server是同八个软件,叫法差别而已,MSSQL全称是Microsoft SQL
Server,MSSQL是简写,某人则钟爱一直叫SQL
Server,作者就相比赏识这种叫法,有风味、、、

鉴于事前学习过asp.net
mvc的网站开垦,由此,在新接触一门新的言语时,也会自然或不自然地参谋这种经历,然后做出网址。假使您也是刚早先接触php,并从最原始的秘技开首写网址,那么,你可以参照下边一种做法,它也是经过参照他事他说加以调查和探寻而变成的一种或许的PHP网址结构

贯彻方式:在要保证的页面 include 分化级其他平安全检核准摸板。

 

一种PHP网址布局

注意事项:

这段日子有客商在应用PHPWAMP的时候,向本人问问一个难点,便是有关PHP咋样连接MSSQL数据库。

图片 1

1 要防止客户浏览器不使用 cookie 而不可能浏览受保证的页面

 

里头,网址名即为品种文件夹,文件夹下分有css、js、images、includes、templates、up等等文件夹,其成效如下:

什么使用:

平常大家搭建网址经常是PHP+Mysql数据库,

目录及功能列表

1 在急需相近爱护的页面包车型客车代码最前面加上 include (secturity2.php卡塔尔(قطر‎; 就能够了

而是在类型中,大家不常必需求用到PHP+MSSQL数据库,那应该怎么做吧?

目录
功能
css
专门用来存放css文件,一般每个模块独立成一个css文件,如用户(user.css),产品(product.css)等
images
用来存放网站所需的图片,如网站logo,背景图处,增删查改的图标等
includes
存放业务逻辑的代码,每个模块独立成一个文件,如用户(users.php),产品(products.php)等,每个文件是各种业务逻辑的处理方法的集合,如增、删等
js
集中存放js代码,如提交前验证,改善用户体验等,每个模块自成一个文件,如用户(user.js)
templates
这个是模块,如每个网页均需要html头部和html尾部,可以写成header.php,footer.php,然后在每个页面上把头和尾包含(include或require)一次,即可统一网站风格
up 存放用户上传的图片,先按类别,再按时间分成多个文件,如/up/user/2012/2/12/xxxx.jpg

2 在急需特殊珍视的页面包车型客车代码最前边加上 include (secturity1.php卡塔尔; 和
include (secturity2.phpState of Qatar; 就能够了

本文案例采取的PHP集成情形是自己最新发表的版本PHPWAMP8.1.8.8,不管你用的是此外集成情形,依旧要好安装,操作方法都以一模二样的,不过本人恐怕建议大家利用自家的那款PHPWAMP,小编所集成的组件全部都以欧洲经济共同体版,完美无错省心省时,放在U盘随就算用(帮助自定义PHP版本,多版本同有的时候间运转)

根目录下,还应该有无数独自的php文件,那一个是展现给顾客的php文件,如客商注册(register.php卡塔尔(قطر‎,登录(login.php卡塔尔(قطر‎,首页(index.phpState of Qatar等文件。

程序代码及详细分解:

 

接下去,将更详尽地评释种种文件夹下功用的兑现形式:

security1.php 特殊客户页面珍贵摸板

实在早前笔者就有希图将MSSQL整个数据库也绿化到PHP集成意况之中,不用安装直接利用。

(1)css文件夹

security2.php 平日客商页面尊敬摸板

只是MSSQL数据库直面厂商是收取金钱的,所以自身不敢将其绿化,万一深究起来,小编就懵逼了。

图片 2

login2.php 客户登录页面

你们能够本人先安装好数据库后,依照本人的主意去老是就能够了,后边小编会详细演示整个工艺流程。

其一文件夹首假如把一个模块的装有css文件集中在一块儿,能够一处定义多处援用,那样当必要校正时,只必要改一处,相比方便改过和护卫。

大家先来看 login2.php 的代码:

 

如上所示,commom.css正是通用的Css属性,如链接的颜色,input成分去边框,统一明确网址文字大小,还只怕有大规模的clearfix或晶莹管理等代码,平时是会放在网址模板的尾部(/templates/header.php);home.css则根本用在首页上;jquery-ui-1.8.19.custom.css则是jquery的规范分界面文件

?phpsession_register(user);#增加用户名变数session_register(password); #增加密码变数session_register(tmLast); #增加时间变数if($user==){#判断是否是第一次登陆$error=Chooseyounameandinputthepasswordplease!;}$tmLast=date(U); #记录登陆时间if($user1)$user=trim($user1); #记录用户名$password=trim($password1); #记录密码if($user1$password1){if($password1==888){ #判断登陆密码是否是默认密码888结束 PHP 程式$sid=PHPSESSID=.session_id(); #保存当前session的ID号$warning=Yourpasswordisstillthedefaultpassword888,pleasechangeit.;header(Location:changePassword.php?$sidwarning=$warning); #传递警告参数warning到changePassword.php 页面exit(); #立刻结束 PHP 程式}if(strtolower($user)==root){ #判断登陆用户是否是超级用户,可以自行扩充用户$fileName=backend_index.php;}else{if(!$fileName) #判断进入登陆页面的是否是受保护页面$fileName=index.php;}$sid=PHPSESSID=.session_id(); #保存当前session的ID号header(Location:$fileName?$sid); #登陆成功进入指定页面,传递当前session的ID号,防止用户不使用 cookie 而读不到 session 值exit(); #立刻结束 PHP 程式}?htmltitle/titleheadlinkrel=stylesheethref=class/style.cssmeta;charset=gb2312/headh2LoginPage/h2?phpecho$error; #显示登陆提示?formaction=?phpecho$PHP_SELF;#提交到当前页?method=postPbName:/b?phpinclude(class/dbclass.inc); #调用dbclass.inc类,用法和 mysql.inc 类一样$q=newDB_Sql; #定义一个新的对象$q-connect($Host,$Database,$User,$Password); #连接 mysql数据库$query=selectchrUserName,chrFirstName,chrLastName.fromUser.wherechrFirstName!=.orderbychrFirstName;$q-query($query); #执行sql语句echoselectname=user1size=1;while($q-next_record()){ #从数据库中调出一般用户if($user==$q-f(0)) #判断是否是当前用户$select=selected; #是当前用户则设置为默认值else$select=;echooptionvalue=.$q-f(0).$select.ucfirst($q-f(1)).. #用户名首字大写ucfirst($q-f(2))./option;}echo/select;?/PPbPassword:/bINPUTname=password1type=password/PINPUTname=tmLasttype=hiddenvalue=?phpechodate(U)?INPUTname=fileNametype=hiddenvalue=?phpecho$fileName?PINPUTname=submittype=submitvalue=确认/P/formsecurity2.php :?phpsession_register(user); #说明同上session_register(password);session_register(tmLast);if($fileName==)$fileName=$PHP_SELF; #记录当前页面路径if($durtime==)$durtime=300; #设置 session 失效时间$currtime=date(U);if(($currtime-$tmLast)$durtime){ #判断 session是否失效//session_destroy();$error=urlencode(Seesionexpired.Loginagainplease!);header(Location:login2.php?fileName=$fileNameerror=$erroruser=$user); #跳到重新登陆页exit();}else{$tmLast=$currtime; # session 没失效则更新最后登陆时间}include(class/dbclass.inc);$q=newDB_Sql;$q-connect($Host,$Database,$User,$Password);$query=selectidUserfromUser.wherechrUserName=$user.andchrPasswd=$password;$q-query($query);if(!$q-num_rows()){ #判断是否找到密码匹配的用户$error=urlencode(PasswordiswrongorNoprivilegeuser.);header(Location:login2.php?fileName=$fileNameerror=$erroruser=$user); #跳到密码错误登陆页}else{$sid=PHPSESSID=.session_id();$q-next_record();$USERID=$q-f(idUser); #保存通过验证用户的ID号,方便以后使用}?

先来演示“本地质度量试时”常用的搭建立模型式,然后再演示网址在服务器上标准营业的搭建方式。

(2)images文件夹

security1.php :

实质上没啥区别,首要是以身作则常规用法以致站点管理个中的用法,让各位越发自如的使用罢了。

首假诺汇集存放网址会用到的片段图纸财富,如网址差别规格的logo,背景图片,增加和删除查改的图标,加载Logo等等

?phpsession_register(user); #说明同上$privilege=root,macro,jackie; #设置超级用户名单列表,用,隔开$pieces=explode(,,$privilege); #取得单个超级用户名单for($i=0;$icount($pieces);$i++){if(strtolower($user)==$pieces[$i]){ #判断是否是超级用户$hasPrivilege=1;break; #跳出判断循环}}if(!$hasPrivilege){if($fileName==)$fileName=$PHP_SELF;$error=urlencode(Youhavenoprivilegetoviewthispage!);header(Location:login2.php?fileName=$fileNameerror=$errorid=$id);exit(); #跳到无权用户登陆页面}?

 

图片 3

上述顺序由 Macro Zeng保留完好解释权。

先来给大家演示php5.3连接MSSQL数据库的具体做法吧(数据库是SQL Server
二零零六)

(3)includes文件夹

在PHPWAMP中,点这里默许运维的是php5.3,点击运转(别的PHP版本请自行切换)

重大是汇聚封存业务逻辑管理文件,每一种模块独立成三个文本,那些文件使用时,都亟待开展满含(include或require):

图片 4

图片 5

 

其中,

开发银行后,点击这里浏览网址

a)_logOn.php是登录状态栏,并有一点快速菜单,算是快捷通道板:

图片 6

图片 7

 

b)baseConfigus.php则是数据库配置消息,是局地常量,方便访谈数据库是联合代码,且不易错:

 

图片 8

在这里页面包车型客车最尾巴部分,点击“点击这里查看phpinfo文件”,查看尤其详细的条件内容。

c)commom.php是通用方法,如验证是不是登入,是或不是管理员,上传文件,呈现分页等

图片 9

d)users.php则用来管理与顾客有关的事体逻辑,如修正客户信息,登陆等

 

图片 10

 

(4)js文件夹

 

图片 11

过来phpinfo文件页面,看见此间的Thread Safety展现的是enabled,

作用布局与includes文件夹相通,此十分少述。

Thread
Safety是线程安全的意味,而enabled是运营的意思,表明当前是线程安全。

(5)templates文件夹

 

用来寄放网址模板,整个网址的风骨在这里联合:

一经Thread Safety展现的不是enabled,而是disabled,那么正是非线程安全。

图片 12

看图片很显明,方今是线程安全,何况是VC6

里头,header.php定义网页的头顶,每当中心页面开端都亟需富含它(include
/templates/header.php):

图片 13

图片 14

 

footer.php定义网页的尾部,种种宗旨页面包车型大巴末梢也急需包罗它:

PHP5.3以上的本子,连接MSSQL数据库不再是mssql.dll扩大,取代他的是sqlsrv.dll扩大。

图片 15

因为要筛选相应的驱动程序,所以要看清是非线程安全大概线程安全,微软集团提供了相关驱动,

中间能够蕴含回最上部,到底层的功力,也许增多网址流量总结代码,如51la

用于PHP援助MSSQL数据库。那么小编上面有那般多版本的驱动,应该选哪些吧

header_admin.php和footer_admin.php则是后台页面使用的模板,道理相仿。

(PHP各版本援救MSSQL数据库的驱动下载地址请在百度查寻这几个题目“PHP援救MSSQL数据库的驱动程序、驱动扶持全数PHP版本(最全)”)

(6)up文件夹

图片 16

以此文件夹保存客户上传的各类图片,如客商头像,成品头像等,各成四个文件夹:

 

图片 17

 

在客商文件夹下边,按年月日展锦州存。

刚才大家展开的PHP版本是5.3,然后又是线程安全,并且phpinfo页面展现是VC6

(7)根目录下的php文件

故此要选拔的是php_pdo_sqlsrv_53_ts_vc6.dll和php_sqlsrv_53_ts_vc6.dll这两个。

这么些文件,日常正是一面对向客户的,即表现给客商看的,纵然工作逻辑首要在includes文件夹中集聚封存,但页面中难免仍急需部分访问数据库的代码。这么些文件的协作特征是,必需带有网址模板,以联合风格:

图片 18

上边以客户登入(login.php)为例:

就此广大客商说连接败北,就是因为您选拔的驱动版本有标题,要对症用药才行。

a)头部

 

图片 19

 

b)尾部

 

图片 20

开发PHPWAMP版本文件所在目录。

c)中间

图片 21

图片 22

 

介怀,这里关键是html语言写成的客户分界面,供给一些重新组合:

 

css或js援引,form,提交前的灵光验证onsubmit=”return
validateLogin(卡塔尔;”,以至登陆出错开上下班时间保留客商以前输入的音信if($_SERVER[‘REQUEST_METHOD’]==’POST’){print
$_POST[‘name’];}等

 

d)登入提交(post情势)的拍卖,这里运用同贰个页面举办管理

到来对应的ext目录,把php_pdo_sqlsrv_53_ts_vc6.dll和php_sqlsrv_53_ts_vc6.dll复制进去

图片 23

那三个驱动文件三个是以pdo的主意连接,另二个则是以sqlsrv_connect的措施连接。

即提交时,仍跳转到当前页面,只是须求对交付形式开展判别(是get依旧post),然后做出差别的拍卖:

图片 24

中间Get方式时,若已经报到,则自动跳转到首页;假诺Post方式时,时展开登入验证,验证成功则跳转到首页,退步时滞留在时下页面。

 

(8).一些甩卖技能:

复制进去后如下图所示。

a)借鉴C#的String.Format方法(保存在/includes/commom.php中):

图片 25

图片 26

 

动用时,非常的低价,如打字与印刷从数据库中读出的数目时:

 

图片 27

 

b)由于以上一步a)的办法访谈时,关于引号(单引号和双引号的难点),有的时候难以实行转义或转义时即出错,因而,大概灵活应用jquery来进展事件绑定(而非html成分事件的章程),如剔除前的断定提醒:

好,接着下一步,展开对应版本的PHP配置文件

图片 28

图片 29

本文由bluesky原创,具备独自产权,如转发请申明出处。

 


 

 

在开垦的php.ini文件中

extension=php_sqlsrv_53_ts_vc6.dll

extension=php_pdo_sqlsrv_53_ts_vc6.dll

参加地点这两行,然后寻觅“mssql.secure_connection”这一段内容,

将“mssql.secure_connection = Off”改为“mssql.secure_connection = On”

图片 30

 

 

改过形成后,双击此处重启当前apache服务器就可以。

图片 31

 

 

重启后,在phpinfo页面假设能搜到sqlsrv,表达已经成功安插好了,如图所示。

图片 32图片 33

 

 

 

接下去我们来一而再再而三一下数据库,看是否寻常!

在测量试验数据库早前,大家先来查阅一下多少库端口号是不怎么,右键“新建查询”

图片 34

 

 

输入exec sys.sp_readerrorlog 0, 1, ‘listening’ 然后右键点击实施。

图片 35

 

意识端口号是暗许的1433,那样大家在连接数据库的时候就无需钦命端口号了,

因为是暗中认可端口,全部大家得以在PHP页面能够如此写。代码随意打打,注明能三番五遍上就能够了。

 

<?php

 try {
   $dbName = "sqlsrv:Server=127.0.0.1;Database=lccee";   //这里是服务器IP地址和数据库名,端口不是默认的话记得改一下
   $dbUser = "sa";    //用户名
   $dbPassword = "111111";    //登陆密码

   $db = new PDO($dbName, $dbUser, $dbPassword);   

   if ($db)   
  {       
     echo "恭喜你!数据库连接成功了!!<br />";   
   }


     }
        catch (Exception $e){ echo "数据库连接失败!!";   }

?>

 

 

只要不是暗中认可端口,借使是1688端口,那么地点这一行就应有改为。

$dbName = "sqlsrv:Server=127.0.0.1,1688;Database=lccee";

本来,纵然是暗中认可端口,你也能够增加暗许端口号,也是没错的,如下代码所示。

$dbName = "sqlsrv:Server=127.0.0.1,1433;Database=lccee";

易错点:这里的ip+端口,不是冒号!而是逗号,如若写成“127.0.0.1:1433”是荒诞的!

 

 

好,我们开荒此页面看看效果,运营代码指示连接成功,表达没难点。

图片 36

 

 

假若作者把连接里面包车型大巴数据库密码改一下,再看,就提醒退步了,如下图。

图片 37

 

 

 

 

前方大家不是在php配置里走入了五个DLL吗,分别是

php_pdo_sqlsrv_53_ts_vc6.dll和php_sqlsrv_53_ts_vc6.dll

这八个驱动文件多个是以pdo的措施连接,另叁个则是以sqlsrv_connect的格局连接。

 

 

而地点大家演示的连天格局是pdo,以往大家来用sqlsrv_connect的诀要连接。

那正是说代码能够如此写,创立二个sqlsrv_connect.php文件,里面写上如下代码

<?php

$serverName = "NEPTUNE-PC"; //serverNameinstanceName
$connectionInfo = array( "Database"=>"lccee", "UID"=>"sa", "PWD"=>"111111");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
 
if( $conn ) {
     echo "连接成功<br />";
}else{
     echo "连接失败<br />";
     
}

?>

 

接下来再测量试验看,也是延续成功了!

图片 38

 

 

一经本人把科学的密码111111改成了不当的密码888888,

(具体的数据库密码,看您本身的MSSQL数据库,笔者的密码是111111)

图片 39

 

那么就显得一连错误了,把科学密码改成错误今后,就突显一而再三翻五次失利了。

图片 40

 

 

 

上边大家再改一下代码,读取数据库表里的故事情节,那是自家成立的数据库,

数据库名叫Lccee,在此个数据Curry面有个表叫phpwamp。

图片 41

 

 

 

接下来笔者任由增多几行代码,用来读出数据表里面包车型地铁内容。

<?php

$serverName = "NEPTUNE-PC"; //serverNameinstanceName
$connectionInfo = array( "Database"=>"lccee", "UID"=>"sa", "PWD"=>"111111");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
 
if( $conn ) {
     echo "连接成功<br />";
}else{
     echo "连接失败<br />";
     
}

$query ="select * from phpwamp";
$result = sqlsrv_query($conn, $query);
while($row = sqlsrv_fetch_array($result)){
 
       print_r($row);
       echo "<br>";
}

?>

 

 

然后保留,这时大家再来看看,运行后就读出这一个数目表里的剧情了。

图片 42

 

 

 

 

聊到底大家再演示一下,在服务器上用站点管理创设的站点怎样连接MSSQL数据库。

 

始于大家的科目,第一步先把主分界面修改成80端口,如下图所示。

图片 43

图片 44

 

 

 

纠正端口后切换来跋扈处在apache2.4以下的PHP版本,php5.5、php5.6、php7都得以。

图片 45

 

 

 

下一场展开apache2.4站点管理,如下图所示。

图片 46

 

 

确立站点,如图所示(Apache2.4站点管理可建构无数站点,每一种站点可钦点差别的PHP版本,也足以自定义设置PHP版本,还足以八个分化PHP版本同时运行,右键功效充分)如图下所示,小编选的是php5.4这些本子,填写落成后点击“加多站点”

图片 47

 

 

加多后左侧站点列表里就可以现身了丰裕的站点,右键站点接受“生成此站hosts内容”

图片 48

 

 

然后点击这里的按键去运作站点,如下图深橙箭头所示。

图片 49

 

右键站点,选拔“域名浏览该网址”,就可以用域名浏览(在服务器上再开展域名拆解剖判就足以了)

设若不懂什么解析,能够看看自家那篇小说

图片 50

 

 

 

点击“域名浏览该网址”后,大家就足以看看这么些页面,如下图所示。

图片 51

 

 

 

鼠标推动滚动条往下看,在这间点击查看特别详实的phpinfo(卡塔尔(قطر‎消息。

图片 52

 

 

 

可以看看在phpinfo文件页面,这里的Thread Safety呈现的是enabled,

Thread Safety是线程安全,而enabled是运营,那么注脚当前是线程安全。

图片 53

 

 

当前的PHP版本是php5.4,所以大家应该接收的七个DLL文件是

php_pdo_sqlsrv_54_ts.dll 和 php_sqlsrv_54_nts.dll,如下图

图片 54

 

 

 

和前面同样把这五个DLL复制到对应PHP版本的ext文件夹里面。

图片 55

 

 

那会儿大家回来站点处理分界面,右键站点张开与之相应的php.ini配文件。

图片 56

 

 

在开荒的php.ini文件中

extension=php_sqlsrv_54_ts.dll

extension=php_pdo_sqlsrv_54_ts.dll

加盟地点这两行,然后搜索“mssql.secure_connection”这一段。

把“mssql.secure_connection = Off”改为“mssql.secure_connection = On”

图片 57

 

 

 

改过后保存,再度重启Apache服务,创制三个sqlsrv_connect.php文件,里面写上如下代码

<?php


$serverName = "NEPTUNE-PC"; //serverNameinstanceName
$connectionInfo = array( "Database"=>"lccee", "UID"=>"sa", "PWD"=>"111111");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
 
if( $conn ) {
     echo "连接成功<br />";
}else{
     echo "连接失败<br />";
     
}

$query ="select * from phpwamp";
$result = sqlsrv_query($conn, $query);
while($row = sqlsrv_fetch_array($result)){
 
       print_r($row);
       echo "<br>";
}

?>

 

 

然后浏览sqlsrv_connect.php文件,就会读出数据Curry面包车型地铁音讯了,如下图

图片 58

任何PHP版本也是同样的道理,依葫芦画瓢就能够,如有疑问能够联系本身。

 

自此若是时光允许,小编也会杜撰构建叁个Linux下的PHPWAMP,应网络朋友的渴求,Mac系统的也在伪造,可是对Mac系统不是特意领会,要求断如时期钻探探究,这段时间干活也挺忙的,壹人岁月少于,推测进程会超级慢。

前期小编会在PHPWAMP版本里布署好各版本PHP与MSSQL的总是,届期你们就不要自个儿配置了

 

 

PHP各版本扶植MSSQL数据库的驱动下载地址请在百度寻找这些标题“PHP帮助MSSQL数据库的驱动程序、驱动帮忙具备PHP版本(最全)”

 

 

 

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图