php5中public,private,protected 三种类属性的区别
public: 公有属性或方法
在子类中可以通过self::var 或self::method 来调用 ,可以通过parent::method来调用父类中的方法,但不能调用公有属性.
在实例中可以通过$obj->var或self::method 来调用
protected: 受保护类型
在子类中可以通过self::var 或self::method调用, 可以通过parent::method来调用父类中的方法
在实例中不能通过$obj->var 来调用 protected类型的方法或属性
private: 私有类型
该类型的属性或方法只能在该类中使用,在该类的实例、子类中、子类的实例中都不能调用私有类型的属性和方法
2.self 和 parent 的区别
a).在子类中常用到这两个对象。他们的主要区别在于self可以调用父类中的公有或受保护的属性,但parent不可以调用
b).self:: 它表示当前类的静态成员(方法和属性) 与 $this 不同,$this是指当前对象
例
代码如下 | 复制代码 |
<?php class BaseClass { public $public = 'public'; private $private = 'private'; function __construct(){ function print_var(){
// public $public = 'public2'; $obj1 = new BaseClass(); echo "<hr />"; $obj2 = new Subclass(); ?> |
总结
public 表示全局,类内部外部子类都可以访问;
private表示私有的,只有本类内部可以使用;
protected表示受保护的,只有本类或子类或父类中可以访问;
如何使用session
凡是与session有关的,之前必须调用函数session_start();
为session付值很简单,如:
程序代码
代码如下 | 复制代码 |
<?php |
在php4.2之后,可以为session直接付值:
程序代码
代码如下 | 复制代码 |
<?PHP |
取消session可以这样:
程序代码
代码如下 | 复制代码 |
<?php |
取消某个session变量在php4.2以上还有BUG.
读取 session
PHP 内置的 $_SESSION 变量可以很方便的访问设置的 session 变量。
例子:
代码如下 | 复制代码 |
<?php session_start(); echo "登记的用户名为:".$_SESSION["username"]; //输出 登记的用户名为:nostop ?> |
检查变量是否被登记为会话变量
session_is_registered
语法:boobean session_is_registered(string name);
这个函数可检查当前的session之中是否已有指定的变量注册,参数name就是要检查的变量名。成功则返回逻辑值true。
例子:
代码如下 | 复制代码 |
<?php session_start(); if(!session_is_registered("gender")){ //判断当前会话变量是否注册 session_register("gender"); //注册变量 } $gender="女"; echo $_SESSION['gender']; //女 ?> |
存取当前会话名称
session_name
语法:boolean session_name(string [name]);
这个函数可取得或重新设置当前session的名称。若无参数name则表示获取当前session名称,加上参数则表示将session名称设为参数name。
例子:
代码如下 | 复制代码 |
<?php $sessionName = session_name(); //取得当前 Session 名,默认为 PHPSESSID |
存取当前会话标识号
session_id
语法:boolean session_id(string [id]);
这个函数可取得或重新设置当前存放session的标识号。若无参数id则表示只获取当前session的标识号,加上参数则表示将session的标识号设成新指定的id。
设置 Session 的生存期
代码如下 | 复制代码 |
setcookie:向客户端发送一个 HTTP cookie。 |
session_set_cookie_params:设置 Session 的生存期的,该函数必须在 session_start() 函数调用之前调用。
如果客户端使用 IE 6.0 , session_set_cookie_params(); 函数设置 Cookie 会有些问题,所以我们还是手动调用 setcookie 函数来创建 cookie。
代码如下 | 复制代码 |
// 保存一天 |
设置 Session 文件的保存路径
session_save_path() :必须在 session_start() 函数调用之前调用。
代码如下 | 复制代码 |
<?php <?php $_SESSION['age']=23; //声明一个名为age的变量,并赋值 session_unregister('username'); //注销Session变量 unset($_SESSION['age']); //注销Session变量 |
注意:
1:在调用Session_Start()之前不能有任何输出.例如下面是错误的.
1行
2行 <?PHP
3行 Session_Start();//之前在第一行已经有输出
4行 .....
5行 ?>
==========================================
提示1:
凡是出现"........headers already sent..........",就是Session_Start()之前向浏览器输出信息.
去掉输出就正常,(COOKIE也会出现这种错误,错误原因一样)
提示2:
如果你的Session_Start()放在循环语句里,并且很难确定之前哪里向浏览器输出信息,可以用下面这种方法:
1行 <?PHP Ob_Start(); ?>
........这里是你的程序......
2:这是什么错误
Warning: session_start(): open(/tmpsess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) failed:....
因为你没有指定session文件的存放路径.
解决方法:
(1)在c盘建立文件夹tmp
(2)打开php.ini,找到session.save_path,修改为session.save_path= "c:/tmp"
先来按书上测试一下php连接mysql
代码如下 | 复制代码 |
<?php |
运行代码出现:
Call to undefined function 'mysql_connect()'…
错误了失败
百度找到结果是PHP+MYSQL 环境没配置好, php5 的默认 mysql 是关闭的
将php_mysql.dll和libmysql.dll文件拷贝至c:/winnt/system32中(我漏了libmysql.dll)
找到php.ini中的;extension=php_mysql,去掉前面的";"
这两天做的工作使用到了curl
当要请求的url和自己不在一台server上面,不能直接访问
这种情况下使用curl是最好不过了,模拟post请求做一些事,简单方便
下面记录一下在使用过程中的积累
代码如下 | 复制代码 |
/* function getCurlData($url) { |
总结一下使用curl方法:
先初始化curl
使用curl_setopt设置目标url,和其他选项
curl_exec,执行curl
执行后,关闭curl
最后一步就是输出
curl()效率挺高的,支持多线程,不过需要开启下curl扩展。下面是curl扩展开启的步骤:
1、将PHP文件夹下的三个文件php_curl.dll,libeay32.dll,ssleay32.dll复制到system32下;
2、将php.ini(c:WINDOWS目录下)中的;extension=php_curl.dll中的分号去掉;
3、重启apache或者IIS
在php中 cURL函数有一组相关函数,它是一个非常不错的函数了,我们经常用它来模仿各种登录与采集工作,下面我来给各位介绍CURL函数入门吧。cURL简介
cURL是一个利用URL语法规定来传输数据和文件的工具,支持很多种协议如HTTP、FTP、TELNET等。PHP也支持 cURL 库。
假如我们要获取某个网页的内容,我们可能会使用下面这几种方法:
代码如下 | 复制代码 |
// 把整个文件读入一个数组中 // 读入一个文件并写入到输出缓冲
|
这几种做法相当简单,但缺乏灵活性和有效的错误处理。而且他们无法完成一些高难度动作,比如处理coockies、验证、表单提交、文件上传等等。
cURL简例
下面给出一段简单的代码,从其中你可以学习到使用cURL的大概步骤,php cURL入门教程。
代码如下 | 复制代码 |
<?php // 1. 初始化 // 2. 设置选项 // 3. 执行并获取返回的内容 // 4. 错误判断,注意这里是布尔值,而不是空输出,所以是3个等号 // 5. 释放curl资源 // 输出获得的源代码 |
关于第二步的 curl_setopt() 是最为重要的,有一长串cURL参数可供设置,它们能指定URL请求的各个细节。
获取信息
这是另一个可选的设置项,能够在cURL执行后获取这一请求的有关信息:
代码如下 | 复制代码 |
<?php // 1. 初始化 // 2. 设置选项 // 3. 执行并获取HTML文档内容 // 4. 错误判断,注意这里是布尔值,而不是空输出,所以是3个等号 // 获取 cURL 信息 并输出 // 5. 释放curl句柄 |
返回的数组中包括了以下信息:
"url" // 资源网络地址
"content_type" // 内容类型和编码
"http_code" // HTTP状态码
"header_size" // header的大小
"request_size" // 请求的大小
"filetime" // 文件创建时间
"ssl_verify_result" // SSL验证结果
"redirect_count" // 跳转技术
"total_time" // 总耗时
"namelookup_time" // DNS查询耗时
"connect_time" // 等待连接耗时
"pretransfer_time" // 传输前准备耗时
"size_upload" // 上传数据的大小
"size_download" // 下载数据的大小
"speed_download" // 下载速度
"speed_upload" // 上传速度
"download_content_length" // 下载内容的长度
"upload_content_length" // 上传内容的长度
"starttransfer_time" // 开始传输的时间
"redirect_time" // 重定向耗时
用POST方法发送数据
新建 from.php
代码如下 | 复制代码 |
// 待 post 的数据 // 1. 初始化 // 2. 设置选项 // 3. 执行并获取返回内容 // 4. 错误判断,注意这里是布尔值,而不是空输出,所以是3个等号 // 5. 释放curl句柄 // 输出内容
|
新建 to.php
代码如下 | 复制代码 |
echo "从 from.php POST数据到 to.php 成功!以下为 to.php 返回的数据:<br><br>";
|
文件上传
上传文件和前面的POST十分相似,因为所有的文件上传表单都是通过POST方法提交的。
新建 from.php
代码如下 | 复制代码 |
// 待 post 的数据 // 1. 初始化 // 2. 设置选项 // 3. 执行并获取返回内容 // 4. 错误判断,注意这里是布尔值,而不是空输出,所以是3个等号 // 5. 释放curl资源 // 输出内容
|
新建 to.php:
代码如下 | 复制代码 |
print_r($_FILES); |
如果你需要上传一个文件,只需要把文件路径像一个post变量一样传过去,不过记得在前面加上@符号。
另一些有用的cURL范例
HTTP认证
如果某个URL请求需要基于 HTTP 的身份验证,你可以使用下面的代码:
代码如下 | 复制代码 |
<?php // 1. 初始化 // 2. 设置选项 // 3. 执行并获取返回内容 // 4. 错误判断,注意这里是布尔值,而不是空输出,所以是3个等号 // 5. 释放curl句柄 |
FTP上传
PHP 自带有 FTP 类库,但你也能用 cURL,也可以参考这篇文章:php使用cURL来实现ftp上传
代码如下 | 复制代码 |
<?php // 开一个文件指针 // 1. 初始化 // 2. 设置选项 // 3. 执行并获取返回内容 // 4. 错误判断,注意这里是布尔值,而不是空输出,所以是3个等号 // 5. 释放curl句柄
|
你可以用代理发起cURL请求:
代码如下 | 复制代码 |
<?php // 1. 初始化 // 2. 设置选项 // 3. 执行并获取返回内容 // 4. 错误判断,注意这里是布尔值,而不是空输出,所以是3个等号 // 5. 释放curl句柄
|
回调函数
可以在一个URL请求过程中,让cURL调用某指定的回调函数。例如,在内容或者响应下载的过程中立刻开始利用数据,而不用等到完全下载完。
代码如下 | 复制代码 |
<?php // 1. 初始化 // 2. 设置选项 // 3. 执行并获取返回内容 // 4. 错误判断,注意这里是布尔值,而不是空输出,所以是3个等号 // 5. 释放curl句柄 // 回调函数
|
这个回调函数必须返回字串的长度,不然此功能将无法正常使用,在URL响应接收的过程中,只要收到一个数据包,这个函数就会被调用。
讲到了半天我们再来一个高级实用点的功能cURL来实现ftp上传
web服务器的上传限制:
php的默认上传限制为2M,如果你要上传超过2M的文件的话,你必须修改你的PHP配置 或者 用下面的代码建立一个 .htaceess文件。
代码如下 | 复制代码 |
php_value upload_max_filesize 16M |
这里设置最大的文件上传限制为16M,post_max_size 的值为20M,因为可能在上传文件的同时,我们还需要POST表单里的其他表单项的值。
建立的 .htaccess 要放在你的上传脚本同一个目录下。
使用 cURL 进行文件上传
cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多种协议,如HTTP、FTP、TELNET等。它能完成很多高难度任务——如处理coockies、验证、表单提交、文件上传、ftp上传等等。
这里,我们准备通过使用web表单来上传一个文件到ftp空间上,这里的ftp空间是有密码保护的。
代码如下 | 复制代码 |
<form action="curlupload.php" method="post" enctype="multipart/form-data"> |
这个表单页面比较简单,仅仅是拥有一个文件上传的功能。
然后我们需要下面的php代码来接收上传过来的文件,使用 cURL 打开一个文件流并传送到远程ftp服务器上去。
代码如下 | 复制代码 |
|
当用户选择了并上传了一个文件,文件先保存在web服务器上,我们使用 fopen 打开这个临时文件并初始一个cURL会话,在发送的url中,把ftp的账号和密码填上,然后再设置cURL的其他必备参数,即可。如果返回的错误数量为0,那么文件就上传成功了。
小结
今天我们一起学习了cURL库的强大功能和灵活的扩展性 原文整理自:3a教程网
相关文章
mysql_connect与mysql_pconnect的区别详解
在mysql中我们会看到有两种常用的数据库连接模式,一种是长久连接,另一各是页面访问完之后就断了连接,下面我来分别介绍mysql_connect与mysql_pconnect的区别,有需要了解...2016-11-25- 这篇文章主要介绍了C# 字段和属性的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下...2020-11-03
- js修改input的type属性有些限制。当input元素还未插入文档流之前,是可以修改它的值的,在ie和ff下都没问题。但如果input已经存在于页面,其type属性在ie下就成了只读属性了,不可以修改。...2013-10-19
- 这篇文章主要介绍了C#中out与ref的区别实例解析,对C#初学者有不错的学习借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要为大家介绍了Vue的计算属性,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助...2021-11-16
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04谈谈Jquery中的children find 的区别有哪些
精华:find方法能找子孙,children方法只能找儿子一、Jquery中children 语法.children(selector) 说明expr是表达式,可选参数,所有选择器中的表达式都可以用在这,比如按标签名"div",按类名".class",按序号":first"等等,如果表...2015-10-21- 在PS中像素大小、文档大小有什么区别呢,这个估计很多初学者不清楚,下面我来给大家讲解一下,希望对你有帮助。 1、像素大小 通常用于显示屏显示的图片大小的调整。菜...2016-09-14
C# Dynamic关键字之:调用属性、方法、字段的实现方法
本篇文章是对C#中调用属性、方法、字段的实现方法进行了详细的分析介绍,需要的朋友参考下...2020-06-25- 这篇文章主要介绍了jquery的方法属性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2021-11-10
- 这篇文章主要介绍了C# 列表List的常用属性和方法介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
- 这篇文章主要介绍了关于vue属性使用和不使用冒号的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-22
- 这篇文章主要介绍了C#中sleep和wait的区别分析,有助于深入理解C#中线程的原理与使用技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了uniapp和vue的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-10-19
- //函数list while(list($id,$username,$password,$add_date,$mdn,$mobile,$channel,$last_date,$area,$nickname) = mysql_fetch_array($rs)){ ...2016-11-25
- 这篇文章主要介绍了在Vue中获取自定义属性方法:data-id的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-09
- 这篇文章主要介绍了input框中的name和id的区别介绍,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-11-22
- 这篇文章主要介绍了JavaScript中关联原型链属性特性的相关资料,需要的朋友可以参考下...2016-02-18
- 本篇文章主要是对C#类中属性与成员变量的使用进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助...2020-06-25
- 轻松学习C#的属性,对C#的属性感兴趣的朋友可以参考本篇文章,帮助大家更灵活的运用C#的属性。...2020-06-25