转载的关于PHP基础入门知识

以下总结为学习感受。知识点的总结以开发项目TODOlist为例。

php是什么。Php是一种脚本语言(那什么是脚本语言呢?),一种用来开发动态网站的语言。何为动态网站,即用户与页面(或者说后台数据库)进行交互,在交互过程中,页面中有些内容可以发生改变。Php与其他技术相结合,可以开发出更加完美的动态网站,如数据库mysql等。就像java web,也是一种与其他技术相结合开发动态网站的语言。
标志与位置
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'对不起,此用户名并未注册。请先 注册'; }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()函数将返回对应于打开链接的资源链接。
mysqli_query():执行select ,insert,update,delete四种查询语句的函数,通常把查询结果赋给另外一个变量
result=mysqli_query($dbc,查询语句)如
q = &quot; s e l e c t u s e r i d f r o m u s e r m e s s a g e w h e r e n a m e = ′ q=&quot;select user_id from usermessage where name=&#x27; q="selectuseridfromusermessagewherename=username’ “;
r = m y s q l i q u e r y ( r=mysqli_query( r=mysqliquery(dbc,$q);
KaTeX parse error: Can't use function '\"' in math mode at position 49: …assword)values(\̲"̲username”,"$password")";
r = m y s q l i q u e r y ( r=mysqli_query( r=mysqliquery(dbc,$q);
q = &quot; u p d a t e u s e r m e s s a g e s e t p a s s w o r d = ′ q=&quot;update usermessage set password=&#x27; q="updateusermessagesetpassword=newpassword’ where user_id={$_SESSION[‘user_id’]}";
r = m y s q l i q u e r y ( r=mysqli_query( r=mysqliquery(dbc,$q);
查询结果
(1) 对于insert,update,delete,这样的操作相对简单,返回结果不是具体的数据库内容。若操作成功,则返回true,否则返回false
Mysqli_affected_rows(),可以返回受insert,update,delete操作影响的行数,
n u m = M y s q l i a f f e c t e d r o w s ( num= Mysqli_affected_rows( num=Mysqliaffectedrows(dbc)
(2)对于select,若操作成功,则返回一个指向查询结果的资源链接,若操作失败,则返回false。
Mysqli_num_rows,(),返回受select操作影响的行数。
n u m = M y s q l i n u m r o w s ( num= Mysqli_num_rows( num=Mysqlinumrowsr)
Mysqli_fetch_array(),将结果以数组形式呈现,一次返回一行结果。
r = m y s q l i f e t c h a r r a y ( r=mysqli_fetch_array( r=mysqlifetcharray(r,数组类型)
数组类型及返回结果的数组类型,有MYSQLI_ASSOC,MYSQLI_NUM,MYSQLI_BOTH,
我用到了第一种,如

while( r o w = m y s q l i f e t c h a r r a y ( row=mysqli_fetch_array( row=mysqlifetcharray(r,MYSQLI_ASSOC)){
u s e r i d = user_id= userid=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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值