PHP学习笔记3-php提高
来源:互联网 发布:淘宝销售数据统计 编辑:程序博客网 时间:2024/06/03 17:04
1. PHP变量作用域
2. PHP魔术常量
3. PHP超级全局变量4. PHP表单操作
5. PHPcookie操作6. PHPsession操作
一:PHP 变量作用域
变量的作用域是脚本中变量可被引用或使用的区域。PHP 有四种不同的变量作用域:
local(本地/局部)global(全局)static(静态)parameter(参数);
A)局部和全局作用域
<?php
$x=5;//全局变量,在当前页面中的任何位置都可以使用
functionmyTest(){
$y=10;//局部变量 只能在当前方法中使用echo"<p>方法中输出的值:<p>";
//当我们调用myTest()函数并输出两个变量的值,//函数将会输出局部变量$y的值,但是不能输出$x的值,
//因为$x变量在函数外定义,无法在函数内直接使用,//如果要在一个函数中访问一个全局变量,需要使用global关键字。//在方法中调用全局变量
global$x;
echo"变量x为: $x";
echo"<br>";
echo"变量y为: $y";
echo"<br>-----------------------";
}myTest();
echo"<p>方法外输出的值:<p>";echo"变量x为: $x";
echo"<br>";
echo"变量y为: $y";
echo"<br>-----------------------";
B)静态作用域
** 方法的运行机制,当方法执行完成后,方法中定义的变量默认会从内存中清除,当再次调用时会重新初始化。
<?php
functiontest(){
$x= 0;
echo$x;
$x++;}
echo"第一调用test()方法:",test(),"<br>";echo"第二调用test()方法:",test(),"<br>";echo"第三调用test()方法:",test(),"<br>";echo"第四调用test()方法:",test(),"<br>";
echo"<hr>";
functiontest2(){
//对方法中的 变量声明static关键字,使其成为静态变量,//当方法执行完成后,该变量不会被销毁,会一直存在与内存中,//当再次调用该方式时,不会重新声明会直接获取该变量static$x= 0;
echo$x;
$x++;
}
echo"第一调用test2()方法:",test2(),"<br>";echo"第二调用test2()方法:",test2(),"<br>";echo"第三调用test2()方法:",test2(),"<br>";echo"第四调用test2()方法:",test2(),"<br>";
C)参数作用域
参数是通过调用代码将值传递给函数的局部变量,参数是在参数列表中声明的,作为函数声明的一部分存在。
<?php
functionshow($i){
echo"$i";}
show(10);
二:PHP 魔术常量
PHP 向它运行的任何脚本提供了大量的预定义魔术常量,但多数魔术常量是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现。
PHP中存在八个魔术常量它们的值随着它们在代码中的位置改变而改变
1、__LINE__
2、__FILE__
3、__DIR__
4、__FUNCTION__ 当前函数的名称(PHP5.0)
【在PHP4.3时添加,在PHP4时总返回小写方法名】
5、__CLASS__ 返回类的名字(不做介绍)6、__TRAIT__ 用于类继承的代码复用(不做介绍)7、__METHOD__ 返回类方法名(不做介绍)8、__NAMESPACE__ 返回命名空间名(不做介绍)
<?php
echo"当前代码为:第",__LINE__,"行<br>";
echo"当前文件路径和文件名为:",__FILE__,"<br>";echo"当前文件路径为:",__DIR__,"<br>";
functionshow(){
echo"执行的方法名为:",__FUNCTION__;
}
文件中的当前行号文件的路径和文件名
文件路径
show();
三:PHP 超级全局变量
PHP 定义了九个超级全局变量,在一个PHP脚本的所有作用域中都可以直接使用,不需要特殊声明。PHP九大超级全局变量包括(数组):
1、$GLOBALS 全局变量组
2、$_SERVER
3、$_ENV
4、$_REQUEST
5、$_POST
6、$_GET
7、$_FILES
8、$_COOKIE
9、$_SESSION 回话组(单独讲解)
服务器配置项服务器配置项(被动接受,因服务器不同会发生变化)
请求参数组 (单独讲解)POST请求参数组(单独讲解)
GET请求参数组(单独讲解)文件组(单独讲解)
浏览器cookie组(单独讲解)
<?php
$x= 10;
$y= 20;
functionshow1(){global$x,$y;
echo"通过全局参数关键字global访问x变量:$x<br>";
echo"通过全局参数关键字global访问y变量:$y<br>";}
show1();
echo"<hr>";
echo"<pre>";
echo"打印全局参数组:<br>";
//$GLOBALS包含全部的全局参数,
//其中包含$_GET $_POST $_COOKIE $_FILES四个超全局参数print_r($GLOBALS);
echo"</pre>";
echo"<hr>";
functionshow2(){
echo"通过超级全局变量访问x变量:",$GLOBALS['x'],"<br>";
echo"通过超级全局变量访问x变量:",$GLOBALS['y'],"<br>";//除了访问全局变量外,也可以进行全局变量的设置
$temp="aaaa";
$GLOBALS['str'] = $temp;
}show2();
echo"<pre>";
echo"打印全局参数组:<br>";
print_r($GLOBALS);
echo"</pre>";
echo"通过变量名方式输出:$str";
echo"<pre>";echo"_SERVER组:";print_r($_SERVER);
echo"<hr>";
echo"_ENV组:";
//如果输出为空,
//可修改php.ini文件中variables_order = "GPCS"为variables_order = "EGPCS"print_r($_ENV);
echo"</pre>";
四:表单操作
A) $_GET 变量 ,该变量用于从get方式提交的请求中获取数据。
<!DOCTYPE html><html>
<head>
<metacharset="utf-8">
<metahttp-equiv="X-UA-Compatible"content="IE=edge"><title></title>
<linkrel="stylesheet"href="">
</head><body>
<formaction="01.php">
用户名:<inputtype="text"name="name">密码:<inputtype="password"name="password"/>性别:<inputtype="radio"name="sex"value="男">男<inputtype="radio"name="sex"value="女">女
<!--
-->
爱好:<input type="checkbox" name="hobbies" value="吃饭">吃饭<input type="checkbox" name="hobbies" value="睡觉">睡觉<input type="checkbox" name="hobbies" value="打豆豆">打豆豆
<!--在页面的复选框按钮中,定义名称时需要使用[]结尾,在PHP后台才能正常获取值-->爱好:<inputtype="checkbox"name="hobbies[]"value="吃饭">吃饭
<inputtype="checkbox"name="hobbies[]"value="睡觉">睡觉
<inputtype="checkbox"name="hobbies[]"value="打豆豆">打豆豆
学历:<selectname="edu">
<optionvalue="大专">大专</option><optionvalue="本科">本科</option><optionvalue="研究生">研究生</option>
</select>
个人简介:<textareaname="info"></textarea><inputtype="hidden"name="hie"value="aa">
<inputtype="submit"value="提交"></form>
</body></html>
<?php
$name=$_GET["name"];$pwd=$_GET["password"];$sex=$_GET["sex"];$hobbies=$_GET["hobbies"];$edu=$_GET["edu"];
$info=$_GET["info"];$hie=$_GET["hie"];
echo"姓名为:$name<br>";
echo"密码为:$pwd<br>";
echo"性别为:$sex<br>";
//只能获取复选框的最后一个值,//解决方式,需要在页面定义标签名称时 使用特殊名称定义方式echo"爱好为:$hobbies<br>";
print_r($hobbies);
echo"<br>";
echo"学历为:$edu<br>";echo"简介为:$info<br>";echo"隐藏域为:$hie<br>";
B) $_POST 变量 ,该变量用于从post方式提交的请求中获取数据。
<!DOCTYPE html><html>
<head>
<metacharset="utf-8">
<metahttp-equiv="X-UA-Compatible"content="IE=edge"><title></title>
<linkrel="stylesheet"href="">
</head><body>
<formaction="02.php"method="post">
用户名:<inputtype="text"name="name">
密码:<inputtype="password"name="password"/>
性别:<inputtype="radio"name="sex"value="男">男
<inputtype="radio"name="sex"value="女">女
爱好:<inputtype="checkbox"name="hobbies[]"value="吃饭">吃饭<inputtype="checkbox"name="hobbies[]"value="睡觉">睡觉<inputtype="checkbox"name="hobbies[]"value="打豆豆">打豆豆学历:<selectname="edu">
<optionvalue="大专">大专</option><optionvalue="本科">本科</option><optionvalue="研究生">研究生</option>
</select>
个人简介:<textareaname="info"></textarea><inputtype="hidden"name="hie"value="aa">
<inputtype="submit"value="提交"></form>
</body></html>
<?php
$name=$_POST["name"];$pwd=$_POST["password"];$sex=$_POST["sex"];$hobbies=$_POST["hobbies"];$edu=$_POST["edu"];
$info=$_POST["info"];$hie=$_POST["hie"];
echo"姓名为:$name<br>";
echo"密码为:$pwd<br>";
echo"性别为:$sex<br>";
//只能获取复选框的最后一个值,//解决方式,需要在页面定义标签名称时 使用特殊名称定义方式echo"爱好为:$hobbies<br>";
print_r($hobbies);
echo"<br>";
echo"学历为:$edu<br>";echo"简介为:$info<br>";echo"隐藏域为:$hie<br>";
*** 如果无法确定前台页面提交的方式
<!DOCTYPE html><html>
<head>
<metacharset="utf-8">
<metahttp-equiv="X-UA-Compatible"content="IE=edge"><title></title>
<linkrel="stylesheet"href="">
</head><body>
<!-- <form action="03.php" method="post"> -->
<formaction="03.php"method="get">
用户名:<inputtype="text"name="name">
密码:<inputtype="password"name="password"/>
性别:<inputtype="radio"name="sex"value="男">男
<inputtype="radio"name="sex"value="女">女
爱好:<inputtype="checkbox"name="hobbies[]"value="吃饭">吃饭<inputtype="checkbox"name="hobbies[]"value="睡觉">睡觉<inputtype="checkbox"name="hobbies[]"value="打豆豆">打豆豆
学历:<selectname="edu">
<optionvalue="大专">大专</option><optionvalue="本科">本科</option><optionvalue="研究生">研究生</option>
</select>
个人简介:<textareaname="info"></textarea><inputtype="hidden"name="hie"value="aa">
<inputtype="submit"value="提交"></form>
</body></html>
<?php
//通过超全局变量$_SERVER可以获取请求的方式$method= $_SERVER["REQUEST_METHOD"];
echo"<pre>";
print_r($_SERVER);
echo"</pre>";
echo"$method<br>";
echo"<hr>";
//先声明变量
$name= $pwd= $sex= $hobbies= $edu= $info= $hie= "";
if($method=="GET") {
$name= $_GET["name"];
$pwd= $_GET["password"];$sex= $_GET["sex"];$hobbies= $_GET["hobbies"];$edu= $_GET["edu"];
$info= $_GET["info"];
$hie= $_GET["hie"];
}
if($method=="POST") {
$name = $_POST["name"]; $pwd = $_POST["password"]; $sex = $_POST["sex"]; $hobbies = $_POST["hobbies"]; $edu = $_POST["edu"]; $info = $_POST["info"]; $hie = $_POST["hie"];
}
echo"姓名为:$name<br>";
echo"密码为:$pwd<br>";
echo"性别为:$sex<br>";
//只能获取复选框的最后一个值,//解决方式,需要在页面定义标签名称时 使用特殊名称定义方式echo"爱好为:$hobbies<br>";
print_r($hobbies);
echo"<br>";
echo"学历为:$edu<br>";
echo"简介为:$info<br>";
echo"隐藏域为:$hie<br>";
B) $_REQUEST 变量 ,该变量用于从get|post方式提交的请求中获取数据。
<?php
echo"<pre>";
print_r($_REQUEST);echo"</pre>";
$name=$_REQUEST["name"];$pwd=$_REQUEST["password"];$sex=$_REQUEST["sex"];$hobbies=$_REQUEST["hobbies"];$edu=$_REQUEST["edu"];
$info=$_REQUEST["info"];$hie=$_REQUEST["hie"];
echo"姓名为:$name<br>";
echo"密码为:$pwd<br>";
echo"性别为:$sex<br>";
//只能获取复选框的最后一个值,//解决方式,需要在页面定义标签名称时 使用特殊名称定义方式echo"爱好为:$hobbies<br>";
print_r($hobbies);
echo"<br>";
echo"学历为:$edu<br>";echo"简介为:$info<br>";echo"隐藏域为:$hie<br>";
*** 使用foreach 循环 遍历 请求中的参数
<?php
//三个请求超级全局变量都是数组类型,可以使用foreach获取值echo"<pre>";
print_r($_GET);
print_r($_POST);
print_r($_REQUEST);echo"</pre>";
echo"<hr>";
foreach($_REQUESTas$key=> $value) {
echo"$key=$value<br>";}
echo"<hr>";
foreach($_REQUESTas$key=> $value) {
//is_array()用于判断变量是否为数组if(is_array($value)){
foreach($valueas$v) {echo"$key=$v<br>";
}}else{
echo"$key=$value<br>";}
}
*** 当PHP 中无指定 name 的 值时如何判断
<?php
$a= $_REQUEST["a"];
echo"$a<br>";
//isset用于判断 变量是否被设置var_dump(isset($a));
//unset用于删除变量unset($a);var_dump(isset($a));
*** PHP表单验证常用方法
> 空判断 empty> 正则表达式判断
<!DOCTYPE html><html>
<head>
<metacharset="utf-8">
<metahttp-equiv="X-UA-Compatible"content="IE=edge"><title></title>
<linkrel="stylesheet"href="">
<styletype="text/css">
span {
color: red;
}</style>
</head><body>
<?php
$errorMsg= "";
$str= $_REQUEST["str"];//非空判断if(isset($str)&&empty($str)){
$errorMsg= "不能为空";}
//正则判断
//preg_match(reg,str)用于正则匹配判断$falg= preg_match("/^[a-zA-Z]*$/",$str);if(isset($str)&&!$falg){
$errorMsg= "不能出现非字母字符";}
?>
<!-- action不指定 表示提交到本地--><formaction=""method="post">
<!--数据回显--><inputtype="text"name="str"value="<?php echo $str ?>"><span><?phpecho $errorMsg ?></span>
<inputtype="submit"value="提交"></form>
</body></html>
五:cookie操作
1、cookie 的创建 和有效期设置
方法 setcookie(name,value,expire,path,domain,secure)
该方法有返回值 设置成功返回true 设置失败返回false
参数
描述
name
必需。规定 cookie 的名称。
value
必需。规定 cookie 的值。
expire
可选。规定 cookie 的有效期。
path
可选。规定 cookie 的服务器路径。
domain
可选。规定 cookie 的域名。
secure
可选。规定是否通过安全的 HTTPS 连接来传输 cookie。
<?php
//设置cookie(在PHP设置cookie时 不需要人工编码,PHP底层会进行自动的编码)setcookie("name","tom");
//PHP中的cookie的设置时间是以1970年1月1日0时0分0秒 开始累加计算的
//设置3600标识 从1970年1月1日0时0分0秒 开始计算,
//则过期时间为1970年1月2日1时0分0秒
// time()函数用于获取 当前时间 和1970年1月1日0时0分0秒 之间的秒差//setcookie("pwd","123",3600);setcookie("pwd","123",time()+3600);
2、cookie 的获取
<?php
//获取cookie值(在PHP获取cookie时 不需要人工解码,PHP底层会进行自动的解码)//通过超级全局变量$_COOKIE进行获取
echo$_COOKIE["name"],"<br>";
echo$_COOKIE["pwd"],"<br>";
//$_COOKIE本身为数组,所以可以循环foreach($_COOKIEas$key=> $value) {
echo"$key=$value<br>";}
4、cookie 的修改
<?php
//cookie的修改setcookie("name","jack");echo$_COOKIE["name"],"<br>";
5、cookie 的删除
<?php
//cookie的删除setcookie("name","",time());
六:session操作
1、session 的创建 、设置数据、数据获取、删除数据
PHP 中 要想使用session 首先必须先开启session会话,且session会话的开启是页面级的
<?php
//session回话开启前,输出超级全局变量session返回为""print_r($_SESSION);
var_dump($_SESSION=="");
echo"<br>";
//开启session会话,开启session回话后 输出超级全局变量session返回为数组对象session_start();
print_r($_SESSION);
//在session中存储数据
$_SESSION["user"] = array("name"=>"tom");echo"<pre>";
print_r($_SESSION);
echo"</pre>";
<?php
//该页面用与测试session变量的存储特性session_start();
echo"<hr>";
print_r($_SESSION);
echo"<hr>";
<?php
session_start();
//通过unset方法指定删除 需要清除的数据unset($_SESSION["user"]);
2、session 的销毁
<?php
session_start();session_destroy();
- PHP学习笔记3-php提高
- php 学习笔记3
- PHP学习笔记-PHP语言基础3
- php学习笔记8-- 提高php编程效率的53个小知识点
- php学习笔记 3 函数
- 学习笔记PHP(3)
- PHP学习笔记3-表单
- php学习笔记--php基础
- PHP学习笔记 -- 初识PHP
- PHP学习笔记(一)
- php学习笔记:NULL
- PHP学习笔记
- Php 学习笔记
- php学习笔记-02
- php学习笔记-03
- php学习笔记-04
- PHP学习笔记-05
- PHP学习笔记
- html+css面试题
- 关于小程序声明周期
- Linux设备树语法详解
- matplotlib的plot函数说明
- 记一道CTF题babyphp之学习代码注入
- PHP学习笔记3-php提高
- Hdu 2586 How far away ?
- oracle数据类型
- web前段学习2017.6.15
- css中margin值为负的理解
- HDU 6139 Galaxy at War(2017 Multi-University Training Contest 8)
- 关于pendingitent
- C程序设计基础——最大公约数和最小公倍数
- USACO Section 1.5 Superprime Rib