php总结

从开始接触php至现在大概有一年时间了,但真正有进步,或者说稍微了解php一点,也只不过是这两个月而已(真不知道以前自己在做些什么)。最近又在学习java web,但总觉得没有跟php来一个彻底的了断,原来是少了一个系统的总结过程。
以下总结均为个人学习感受。知识点的总结也以开发项目TODOlist为例。

  1. php是什么。Php是一种脚本语言(那什么是脚本语言呢?),一种用来开发动态网站的语言。何为动态网站,即用户与页面(或者说后台数据库)进行交互,在交互过程中,页面中有些内容可以发生改变。Php与其他技术相结合,可以开发出更加完美的动态网站,如数据库mysql等。就像java web,也是一种与其他技术相结合开发动态网站的语言。
  2. 标志与位置
    1) 标志<?php ?>
    2) 位置
    (1)嵌入到html语言中,且可以在任何位置
    (2)独立以一个文件形式出现
    3.数据类型
    1)常量:用define()函数
  Define(’name’,value)
如在链接数据库的时候,我是这样写的
<?php
DEFINE('DB_USER','root');
DEFINE('DB_PASSWORD','123456');
DEFINE('DB_HOST','127.0.0.1');
DEFINE('DB_NAME','cars');
$dbc = @mysqli_connect(DB_HOST,DB_USER, DB_PASSWORD,DB_NAME) ;//返回对应于打开的资源链接
if(!$dbc){
           trigger_error('could not connect to MYSQL: ' . mysqli_connect_error());
}else{
    mysqli_set_charset($dbc,'utf8');
}

打印常量不能用引号包含,包括单引号和双引号。
2)变量
命名规则
(1)整型
(2)浮点型
(3)字符串
(4)数组
3)超全局变量:这些变量总是存在的,并且它们的值对所有脚本也都是可用的。每一个超全局变量其实都是其他变量的一个数组。
$_GET包含了通过get方法提供给一个脚本的任何变量
$_POST包含了通过post方法提供给一个脚本的任何变量
$_POST['username']
$_SESSION包含了在一个会话中当前注册的任何变量
$_SESSION['user_id']
$_REQUSET 包含了通过get,post或session输入机制提供给一个脚本的任何变量
$_SERVER['REQUEST_METHOD']
字符串和数组包含内容非常多,我会在以后分开介绍。
4.包含外部文件函数:inclue(),include_once(),require(),require_once()
括号内是包含的文件的路径,可以使绝对路径,也可以是相对路径
我目前使用过include(),require()

require('D:\Dev Apps\xampp\htdocs\sunyan2015\mysqli_connecttodolist.php');

目前我还未感受到这四个函数之间的差异。以下内容摘自参考书籍,留待以后感受
Include()和require()在正确工作时完全一样,只是在失败时表现的完全不同。前者失败时,就像浏览器打印一个警告,但余下脚本会继续进行。后者在失败时,会打印一个错误,且脚本会终止进行
二两者的_once 版本,他们保证吃力的文件只会被包含一次,而不管脚本试图包含几次。
5验证表单数据函数
1)isset(),测试一个变量是否具有值,包括0,false,或者一个空字符串,但不能是null。
由此可见,isset不适合验证表单中的文本输入和文本框。
2)empty(),用于检验表单中的文本输入和文本框的内容,即变量是否具有空值,包括0,false,null和空字符串。
6.cookie和会话
原本觉得这两个概念特别难。后来总算懂了一点,但其实也只限在最基础的用法上,难度大的还没有深入了解。
Cookie和会话(session),是一种追踪和记录用户行为的方法,他可以把若干个页面在用户信息方面统一联系起来。举个例子,当你在逛天猫的时候,如果已经登录,你就可以查看你的收藏夹和购买记录,而且每次你新打开一个页面,这个页面上呈现的某些用户信息仍然是关于你的。
Cookie和会话之间的区别主要在信息存储位置上,cookie将信息数据存储在浏览器上,而会话将信息数据存储在服务器上(突然不明白服务器到底是什么),会话一般比cookie安全
我用的是会话:
1)调用session_start()函数,设置会话变量,
如在Login.php中,我是这样设置的

<?php
           session_start();
            $dbc=@mysqli_connect('127.0.0.1', 'root','123456','todolist') 
            or die('could not connect to mysql');
            mysqli_set_charset($dbc,'utf8');
            $error=array();
            if($_SERVER['REQUEST_METHOD']=='POST'){
            if(!empty($_POST['username'])){
                $username=$_POST['username'];
            }else{
                $error[]="请输入用户名";
            }
            if(!empty($_POST['password'])){
                $password=$_POST['password'];
            }else{
                $error[]="请输入密码";
            }
            if(empty($error)){
                $q="select user_id from usermessage where name='$username' ";
                $r=mysqli_query($dbc,$q);
                $q1="select user_id from usermessage where password='$password' ";
                 $r1=mysqli_query($dbc,$q1);
                if(mysqli_num_rows($r)==0){
                    echo'对不起,此用户名并未注册。请先<a href="register.php">注册</a>';
                }else{
                    while($row=mysqli_fetch_array($r,MYSQLI_ASSOC)){
                        $user_id=$row['user_id'];
                        
                    }
                    
                    if(mysqli_num_rows($r1)==0){
                        echo"密码错误,请重新输入";
                    }else{
                    $_SESSION['username']=$username;
                    $_SESSION['user_id']=$user_id;
}
2访问会话变量
    <?php
        session_start();
        $dbc=@mysqli_connect('127.0.0.1', 'root','123456','todolist') 
      or die('could not connect to mysql');
        mysqli_set_charset($dbc,'utf8');
        if(!isset($_SESSION['username'])){
                echo"请登录后在更改密码";
        }
         if($_SERVER['REQUEST_METHOD']=='POST'){
            $newpassword=$_POST['newpassword'];//{$_POST['newpassword']}
            $q="update usermessage set password='$newpassword' where user_id={$_SESSION['user_id']}";
            $r=mysqli_query($dbc,$q);
            if($r){
                echo"您的密码已更改成功";
            }else{
                echo"请重新更改密码";
                echo mysqli_error($dbc);
            }   
         }
        ?>

3删除会话变量

<?php
        session_start();
        if(empty($_SESSION['username'])){
            header("http://127.0.0.1/sunyan2015/013/login.php");
        }else{
            $_SESSION=array();把$_SESSION变量重置为一个新数组,从而清除现有值
            session_destroy();从服务器中删除数据
            setcookie('phpsessid','',time()-3600);
        }
        echo'你已经注销成功';
        ?>

7.使用mysql 数据库
1)链接数据库

    $dbc=@mysqli_connect('127.0.0.1', 'root','123456','todolist') 
or die('could not connect to mysql');
四个参数分别为主机名,用户名,密码,数据库名称。@是错误控制符,可以防止在浏览器中显示php错误,代替显示的是 or die()中的内容。如果成功连接到数据库,mysqli_connect()函数将返回对应于打开链接的资源链接。
  1. mysqli_query():执行select ,insert,update,delete四种查询语句的函数,通常把查询结果赋给另外一个变量
    result=mysqli_query($dbc,查询语句)如
$q="select user_id from usermessage where name='$username' ";
$r=mysqli_query($dbc,$q);
$q="insert into usermessage(name,password)values(\"$username\",\"$password\")";
$r=mysqli_query($dbc,$q);
$q="update usermessage set password='$newpassword' where user_id={$_SESSION['user_id']}";
  $r=mysqli_query($dbc,$q);
  1. 查询结果
    (1) 对于insert,update,delete,这样的操作相对简单,返回结果不是具体的数据库内容。若操作成功,则返回true,否则返回false
    Mysqli_affected_rows(),可以返回受insert,update,delete操作影响的行数,
$num= Mysqli_affected_rows($dbc)

(2)对于select,若操作成功,则返回一个指向查询结果的资源链接,若操作失败,则返回false。
Mysqli_num_rows,(),返回受select操作影响的行数。
$num= Mysqli_num_rows($r)
Mysqli_fetch_array(),将结果以数组形式呈现,一次返回一行结果。
$r=mysqli_fetch_array($r,数组类型)
数组类型及返回结果的数组类型,有MYSQLI_ASSOC,MYSQLI_NUM,MYSQLI_BOTH,
我用到了第一种,如

while($row=mysqli_fetch_array($r,MYSQLI_ASSOC)){
$user_id=$row['user_id'];

8.正则表达式
通过我的初步学习,正则表达式内容是比较枯燥的,而且知识点也都比较小。
正则表达式是一种规则,用来验证一些信息是否符合设计者想要的形式。以下内容摘自以往总结。
http://www.jianshu.com/p/48822af43b35
9.预防sql注入攻击。
所谓sql注入攻击,是指将一些不怀好意的代码插入到站点的SQL查询中,旨在报错的信息当中获取关于脚本或者数据库的某些信息。使用预处理语句即可预防。
以下内容摘自以往总结。
http://www.jianshu.com/p/621a35615d22
10.pdo数据库抽象层
http://www.jianshu.com/p/d4c511ad7c86
11.smarty模板引擎
http://www.jianshu.com/p/49ca58a27dcc
http://www.jianshu.com/p/664cb2957f51
http://www.jianshu.com/p/454435a608e8
http://www.jianshu.com/p/57542a8729fb
12.Thinkphp框架
http://www.jianshu.com/p/bd46ff75f709

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • php.ini设置,上传大文件: post_max_size = 128Mupload_max_filesize ...
    bycall阅读 6,736评论 3 64
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • 1、instanceof 用于确定一个 PHP 变量是否属于某一类class的实例; 2、数组最后一个元素的$va...
    刚_dbac阅读 201评论 0 0
  • Php:脚本语言,网站建设,服务器端运行 PHP定义:一种服务器端的HTML脚本/编程语言,是一种简单的、面向对象...
    廖马儿阅读 2,116评论 2 38
  • sqlmap用户手册 说明:本文为转载,对原文中一些明显的拼写错误进行修正,并标注对自己有用的信息。 ======...
    wind_飘阅读 2,033评论 0 5