PHP学习笔记3-php提高

03-PHP提高

1. PHP变量作用域

2. PHP魔术常量
3. PHP超级全局变量4. PHP表单操作
5. PHPcookie操作6. PHPsession操作

一:PHP 变量作用域

变量的作用域是脚本中变量可被引用或使用的区域。PHP 有四种不同的变量作用域:

local(本地/局部)global(全局)static(静态)parameter(参数);

A)局部和全局作用域

page1image5424 page1image5584 page1image5744 page1image5904

<?php
$x=5; // 全局变量,在当前页面中的任何位置都可以使用

function myTest(){

$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
function test(){

page1image12920 page1image13080 page1image13240 page1image13400 page1image13560 page1image13720 page1image13880 page1image14040

$x = 0;

echo $x;

$x++;}

echo "第一调用test()方法:",test(),"<br>";echo "第二调用test()方法:",test(),"<br>";echo "第三调用test()方法:",test(),"<br>";echo "第四调用test()方法:",test(),"<br>";

echo "<hr>";

function test2(){
//对方法中的 变量声明 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
function show($i){

echo "$i";}

show(10);

二:PHP 魔术常量

PHP 向它运行的任何脚本提供了大量的预定义魔术常量,但多数魔术常量是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现。

PHP中存在八个魔术常量它们的值随着它们在代码中的位置改变而改变

page2image8040 page2image8200 page2image8360 page2image8520 page2image8680 page2image8840 page2image9000 page2image9160 page2image9320 page2image9480 page2image9640 page2image9800

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>";

function show(){
echo "执行的方法名为:",__FUNCTION__;

}

文件中的当前行号文件的路径和文件名

文件路径

page2image14568 page2image14728 page2image14888 page2image15048

show();

page3image1224 page3image1384 page3image1544 page3image1704

三: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组(单独讲解)

page3image6736 page3image6896 page3image7056 page3image7216

<?php
$x = 10;

$y = 20;

function show1(){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>";

function show2(){
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>

<meta charset="utf-8">
<
meta http-equiv="X-UA-Compatible" content="IE=edge"><title></title>
<
link rel="stylesheet" href="">

</head><body>

<form action="01.php">
用户名:<input type="text" name="name">密码:<input type="password" name="password" />性别:<input type="radio" name="sex" value=""><input type="radio" name="sex" value="">

page4image6120 page4image6280 page4image6440 page4image6600 page4image6760 page4image6920 page4image7080 page4image7240

<!--

-->

爱好:<input type="checkbox" name="hobbies" value="吃饭">吃饭<input type="checkbox" name="hobbies" value="睡觉">睡觉<input type="checkbox" name="hobbies" value="打豆豆">打豆豆

<!-- 在页面的复选框按钮中,定义名称时需要使用[]结尾,在PHP后台才能正常获取值 -->爱好:<input type="checkbox" name="hobbies[]" value="吃饭">吃饭
<input type="checkbox" name="hobbies[]" value="睡觉">睡觉
<input type="checkbox" name="hobbies[]" value="打豆豆">打豆豆

学历:<select name="edu">
<
option value="大专">大专</option><option value="本科">本科</option><option value="研究生">研究生</option>

</select>
个人简介:<textarea name="info"></textarea><input type="hidden" name="hie" value="aa">

<input type="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>";

page4image16760 page4image16920 page4image17080 page4image17240 page4image17400 page4image17560 page4image17720 page4image17880

B) $_POST 变量 ,该变量用于从post方式提交的请求中获取数据。

page4image18608 page4image18768 page4image18928 page4image19088

<!DOCTYPE html><html>
<
head>

<meta charset="utf-8">
<
meta http-equiv="X-UA-Compatible" content="IE=edge"><title></title>
<
link rel="stylesheet" href="">

</head><body>

<form action="02.php" method="post">
用户名:<input type="text" name="name">
密码:<input type="password" name="password" />
性别:<input type="radio" name="sex" value="">
<input type="radio" name="sex" value="">
爱好:
<input type="checkbox" name="hobbies[]" value="吃饭">吃饭<input type="checkbox" name="hobbies[]" value="睡觉">睡觉<input type="checkbox" name="hobbies[]" value="打豆豆">打豆豆学历:<select name="edu">

<option value="大专">大专</option><option value="本科">本科</option><option value="研究生">研究生</option>

</select>
个人简介:<textarea name="info"></textarea><input type="hidden" name="hie" value="aa">

<input type="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>

<meta charset="utf-8">
<
meta http-equiv="X-UA-Compatible" content="IE=edge"><title></title>
<
link rel="stylesheet" href="">

</head><body>

<!-- <form action="03.php" method="post"> -->

<form action="03.php" method="get">
用户名:<input type="text" name="name">
密码:<input type="password" name="password" />
性别:<input type="radio" name="sex" value="">
<input type="radio" name="sex" value="">
爱好:
<input type="checkbox" name="hobbies[]" value="吃饭">吃饭<input type="checkbox" name="hobbies[]" value="睡觉">睡觉<input type="checkbox" name="hobbies[]" value="打豆豆">打豆豆

page5image15824 page5image15984 page5image16144 page5image16304 page5image16464 page5image16624 page5image16784 page5image16944 page5image17104 page5image17264 page5image17424 page5image17584

学历:<select name="edu">
<
option value="大专">大专</option><option value="本科">本科</option><option value="研究生">研究生</option>

</select>
个人简介:<textarea name="info"></textarea><input type="hidden" name="hie" value="aa">

<input type="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>";

page6image19184 page6image19344 page6image19504 page6image59024 page6image59184 page6image59344 page6image59504 page6image59664 page6image59824 page6image59984 page6image60144
page7image1016 page7image1176

*** 使用foreach 循环 遍历 请求中的参数

page7image2104 page7image2264 page7image2424 page7image2584

<?php

//三个请求超级全局变量都是数组类型,可以使用foreach 获取值echo "<pre>";
print_r(
$_GET);
print_r(
$_POST);

print_r($_REQUEST);echo "</pre>";

echo "<hr>";
foreach ($_REQUEST as $key => $value) {

echo "$key=$value<br>";}

echo "<hr>";
foreach ($_REQUEST as $key => $value) {

//is_array() 用于判断变量是否为数组if(is_array($value)){

foreach ($value as $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>

<meta charset="utf-8">
<
meta http-equiv="X-UA-Compatible" content="IE=edge"><title></title>
<
link rel="stylesheet" href="">
<
style type="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 不指定 表示提交到本地 --><form action="" method="post">

<!-- 数据回显 --><inputtype="text"name="str"value="<?php echo $str ?>"><span><?phpecho $errorMsg ?></span>

page7image18752 page7image18912 page7image19072 page7image19232 page7image19392 page7image19552 page7image19712 page7image19872 page7image20032 page7image20192 page7image20352 page7image20512 page7image20672 page7image20832 page7image20992 page7image21152 page7image21312

<input type="submit" value="提交"></form>

</body></html>

五:cookie操作

1、cookie 的创建 和有效期设置
方法 setcookie(name,value,expire,path,domain,secure)

该方法有返回值 设置成功返回true 设置失败返回false

page8image3168 page8image3328 page8image3488 page8image3648

参数

描述

name

必需。规定 cookie 的名称。

value

必需。规定 cookie 的值。

expire

可选。规定 cookie 的有效期。

path

可选。规定 cookie 的服务器路径。

domain

可选。规定 cookie 的域名。

secure

可选。规定是否通过安全的 HTTPS 连接来传输 cookie。

page8image23328 page8image23488 page8image23648 page8image23808

<?php

//设置cookie(在PHP 设置cookie时 不需要人工编码,PHP底层会进行自动的编码)setcookie("name","tom");
//PHP中的 cookie 的设置时间是以 197011000秒 开始累加计算的
// 设置3600 标识 从197011000秒 开始计算,

// 则过期时间为 197012100
// time() 函数用于获取 当前时间 和 197011000秒 之间的秒差//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 ($_COOKIE as $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);

page8image34064 page8image34224 page8image34384 page8image34544 page8image34704 page8image34864 page8image35024 page8image35184 page8image35344 page8image35504 page8image35664 page8image35824 page8image35984 page8image36144 page8image36304 page8image36464 page8image36624 page8image36784 page8image36944 page8image37104 page8image37264 page8image37424 page8image37584 page8image37744 page8image37904 page8image38064 page8image38224 page8image38384 page8image38544 page8image38704 page8image38864 page8image39024

//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();

page9image5000 page9image5160 page9image5320 page9image5480 page9image5640 page9image5800 page9image5960 page9image6120 page9image6280 page9image6440 page9image6600 page9image6760 page9image6920 page9image7080 page9image7240 page9image7400

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值