PHP 小试牛刀

以S2的BBS论坛项目作为整个基础课程的案例。

1.连接数据库和执行第一个SQL语句:
  1)PHP提供了连接数据库的函数--mysqli_connect(agrs0,agrs1,agrs3),我们直接使用就可以了。
    此函数包括三个必要的参数,分别为:localhost,数据库用户名,数据源。
     以bbs论坛连接MySQL数据库为例:
      连接数据库:
        $db = mysqli_connect('localhost','root','bbs');
      执行SQL语句:
        $sql="set names utf8";  <!--插入数据时的统一编码格式命令。-->
        mysqli_query('$db',$sql); <!--SQL执行-->

  2)由于IE巨大的容错能力和PHP的无错误提示,导致我们在执行SQL语句出错时不会像JSP一样明确的提示我们,为了我们的工作进展更顺利,这时我们就需要手动的让我们的错误抛出来,具体处理方式很有以下几种:
     a. 在执行的SQL语句后面紧跟其后添加一句:echo $sql;  "$sql" 就是我们所写的SQL语句。
2.MYSQL数据库乱码处理
  1) 在创建表时注意在最后加入一句命令就可以了:charset 编码格式   eg: charset utf8
  2) 在PHP代码里(插入数据时的先执行这句代码): mysql_query("SET NAMES utf8");  <!--插入数据的统一编码格式命令。-->

3.标签的原理就是将我们的PHP脚本代码替代成我们熟悉的正则表达式。

4.在PHP里执行SQL语句时的注意事项:
  1) 当一个代码块需要当做一个整体来执行时,我们需要对其进行处理,也就是将其用大括号括起来:eg: {$user['uPass']}
  2) 在PHP里的 SQL语句不会像jsp 里一样会通过 setString()来自动识别变量是否为字符串,由于PHP是弱语言,我们需要将字符串实际的表达出来,就是将其用单引号括起来。

eg: '{$user['uName']}'
  3) PHP里的函数需要用到PHP里定义的全局变量时需要在引用的函数里用global声明一下。eg: global $db;

以BBS论坛为例,以上问题具体处理如下:

<?php
<!-- 导入数据库连接 lib_db.php 文件-->
include('lib_db.php');

<!-- 添加用户函数 -->
function addUser($user) <!--$user 是一个数组-->
{
 global $db;
 $sql="insert into user values(null,'{$user['uName']}','{$user['uPass']}','{$user['head']}',now(),'{$user['gender']}')"; <!--问题1,2所在-->
 return mysqli_query($db,$sql); 
}

<!-- 用户登录验证函数 -->
function userValidate($uName,$uPass)
{
 global $db; <!--问题3所在-->
 $sql="select * from user where uname='$uName' and upass='$uPass'";
 $res=mysqli_query($db,$sql);
 if($rd=mysqli_fetch_array($res,MYSQLI_ASSOC))
 {
  return $rd;
 }else
 {
  return null;
 }
}
?>

5.include 静态包含
  1) 实例: include('includes/lib_user.php'); 第4点中的例子有用到过。
  2) 同样也可能会出现包含出错的现象和被迫被包含的问题,所以我就需要一个定义一个全局常量来对其进行操作。通过这个全局常量来识别是不是需要我们进行包含的PHP脚本,从而避免出现包含粗错等问题。

6. session 保存用户状态
  1) PHP里保存用户状态和JSP里一样也是通过session来维持和保存用户的状态的,由于在PHP里session 的状态时是需要启动的,这是和JSP不同,在使用session对象时PHP页面

里需要通过 session_start(); 函数来启动 session 会话对象。而且在其他使用 session 会话对象的页面都需要使用这个函数来启动一次。
  2) 使用session对象来储存数据
        session_start();
 $_SESSION['user']=$user;
 header("Location:index.php");
  3) 取得session里的值和对象
        session_start();
        @$user=$_SESSION['user'];  <!--加上@符号是为了避免错误码的。-->
  4) 销毁
     在jsp里我们都是通过销毁方法 session.invalidate(); 来实现的,在PHP里我们不这么做,而是根据session的特性(数组)将原来的session赋值为空,
      eg: $_SESSION['user'] = array(); 把一个新的数组赋给它,原来的它就变成了一个空。

7.cookie 保存用户状态
  1) cookie 是以键值对的形式来存储数据的,而且自能存储字符串。
  2) eg:  setcookie('uName',$uName,time()+30*60);
     说明:其中第一个参数是键,第二个参数是值,第三个参数是cookie的生命期周期,通常我们是给其设置为30分钟。
  3) 销毁cookie 在jsp里我们都是通过销毁方法来实现的,在PHP里我们不这么做,而是根据cookie的特性(键值对)将原来的cookie赋值为空,将其时间也设置为立马失效。
      setcookie('uName','',time()-30*60);

8.问号传递参数
  1) 在PHP里的问号传参和给JSP里是大致相同的,我们需要注意以下几点:
     a. 在处理特殊字符时,我们需要对我们的URL进行 URL格式编码。具体操作:$url = '?uname='.urlencode(value);
     b. 有编码,必然有解码: $uname = urldecode($_REQUEST('uname'));
     b. 我们必须采用get方式提交请求

9.网络编程语言的思想是:一般情况下:需要什么,就发送什么请求,我就给什么响应。所以我们的每一步操作都是通过发送HTTP请求来完成的。所以我们的信息都是依靠HTTP协议来传输的,这就必然需要我们去了解HTTP协议的规则和核心技术。

10.在PHP脚本语言里同样可以实现MVC模式的构造,这需要我们自己去实现。同样也有一些框架技术来支持我们的PHP脚本语句的布局。

11. PHP网络编程语言是一门很好的编程语言,我就将今天所学的一些基础知识总结一下,方便我自己学习和提高。其中肯定有这样那样的问题,请各位批评指正,一起进步。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值