php学习笔记(二)--php常量和变量之外部变量

本文详细介绍了PHP中的外部变量$_GET、$_POST和$_REQUEST的使用,强调了它们作为超全局变量的角色。同时,讨论了环境变量$_SERVER和$_ENV,指出$_ENV在新版本中逐渐废弃。接着,文章阐述了PHP中的变量引用概念,并通过实例解释了自加自减、算术、赋值和比较运算符。最后,探讨了逻辑运算、位运算和流程控制结构如if语句、switch语句及循环的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、外部变量
PHP的外部变量是PHP 在使用过程中规定好的一些变量。这个变量的规定是这样规定的,就这样使用。

我们先讲解几个最常用的例子,我们将下面的表单命名为user.html:

<html>
   <head>
   </head>

   <body>
       <form action="reg.php" method="get">
           <input type="text" name="username" />
           <input type="password" name="pwd" />
           <input type="submit" value="提交" />
       </form>
   </body>
</html>

上现是很基础的一段HTML代码,在这段代码的主要意思是把用户和密码,采用get方法,将数据发送给reg.php(在上面代码的第6行规定的)。reg.php想办法接收用户传过来的username和pwd这两个值。
我们得出我们的第一个外部变量:$_GET。
$_GET 的主要作用是将得到get传值的数据。

我们写一个reg.php,用$_GET来接收值试试:

<?php
//$_GET后面加上中括号,将username作为字符串放在中括号里面,就得到了表单里面的<input type="text" name="username" /> 的值
$u = $_GET['username'];
echo $u.'<br />';

//$_GET['pwd'] 得到表单<input type="text" name="username" /> 的值
$passwd = $_GET['pwd'];
echo $passwd.'<br />';
?>



根据上图,观察特点:
reg.php后面跟了一个?(问号)
表单里面的username变在了地址栏里面
表单面username的值输入的是root,在username后面跟了个=(等号)输入的值
username(名字)=Linuxprobe(值) 后面的密码是password(名字)=Linuxprobe(值),中间有&(and符)分开
密码是可见的,那怎么样保证安全呢。让我在注册的过程当中,密码不在地址栏里面被人看到呢?
这个时候我们需要使用到post传值,post传值是在地址栏中不可见的。

同样上面例子的代码我们进行修改,html代码如下:

<html>
   <head>
   </head>

   <body>
       <!-- 这一行method 对应的值改为了post -->
       <form action="reg.php" method="post">
           <input type="text" name="username" />
           <input type="password" name="pwd" />
           <input type="submit" value="提交" />
       </form>
   </body>
</html>

PHP的代码里面的$_GET全改为了$_POST:

<?php
//$_POST后面加上中括号,将username作为字符串放在中括号里面,就得到了表单里面的<input type="text" name="username" /> 的值
$u = $_POST['username'];
echo $u.'<br />';

//$_POST['pwd'] 得到表单<input type="text" name="username" /> 的值
$passwd = $_POST['pwd'];
echo $passwd.'<br />';
?>

观察特点:
index.php后的?(问号)不见了。后面的username和password也不见了。那他怎么传递数据的呢?
他是通过我们看不见的浏览器的请求头文件传递的数据。所以在URL(网址)栏不可见。
注:附录中有如何通过火狐浏览器的firebug查看传递结果的演示过程。这一块都是HTTP协议规定的传送方式。
除此之外,我们还有$_REQUEST来接收数据。现在我们这样处理:

将php代码段中的$_POST全改为$_REQUEST,代码如下:

<?php
$u = $_REQUEST['username'];
echo $u.'<br />';

$passwd = $_REQUEST['pwd'];
echo $passwd.'<br />';
?>

把网页user.html里面的这一行中的method,改为get执行一次,再改为Post再运行一次,看看结果:

<form action="reg.php" method="post">

通过上面的实验你会发现$_REQUEST即可以接收get传值也可以接收post传值。

另外,我们总结一些外部变量,要求知识点的学习级别:了解含义,默写这个单词的写法和作用。


请再记一句话:以上这些变量全是超全局的。(以后讲解超全局的含义)。

注:
1.我们认为从用户输入过来的所有数据都不是可信的。本书的下半部份会专门讲解限制和过滤
2.在提交数据的时候,我们常用的方法有get和post。可以这样理解,get传值在url中可见,而post传值在url中不可见。

而post传值在url中不可见,是通过浏览器的header头部份将数据发送给指定服务器的。需要通过专门的工具才能看到Post发送的值为什么。你可以下载火狐浏览器(firefox)的插件(firebug)来查看。

若真是使用get传密码,密码在地址栏里面显示过后。浏览器的历史记录会自动记录访问过的地址。恶意用户会,可以通过查看你的浏览器的历史记录,得到你曾经输入的密码。因此,不能使用get方式来作密码的传输方式。

二、PHP常量和变量之环境变量

环境变量我们主要用的有$_SERVER和$_ENV两个环境变量。
不过,$_ENV逐渐被PHP的新版本给废弃了。
【重点】知道在哪儿查看环境变量的名字(key)和值(value),记住并默写几个常用的环境变量。

查看环境变量,我们在学习PHP的第一天就学习过:

<?php

phpinfo();

?>
其实环境变量不是不用背的,我了解在哪儿能够找到环境变量的key(键)和值即可。
我们学了phpinfo();打印出来了一批乱乱的东西,我们今天来学习其中的环境变量部份。

你在执行phpinfo();的这个网址中,将网页向下拉动翻页,看看能不能找到截图中的部份:

_SERVER['中间的值'],是需要我们了解意思的。

如果我们需要显示我们当前访问的这个phpinfo();页面文件放在哪儿,就可以执行:

<?php
//我在上图左侧找到的一项,在前面加上了一个$(美元符),就显示出来了当前文件的路径
echo $_SERVER['SCRIPT_FILENAME'];

?>

我们来了解一些常用的环境变量的键名和值对应的意思:

URI 和URL都是网址,但是URL带有了主机地址部份,而URI不带主机地址部份,例如:
http://www.php.cn/abc.php?username=php 上面是一个URL(统一资源定位符),而URI是不带主机和(http://)

三、php常量和变量之变量引用

变量引用
变量引用很多老师喜欢来用C语言的指针来去讲解。我们作为有这么多年开发和教学经验的人来说——大多数学习PHP的人来说根本不了解C语言。
使用C语言一指针来讲解变量引用,我们觉得画蛇填足。并且,不利于没有C语基础的朋友们学习。
关于变量引用的知识点,请以我们的讲解为理解的基准!

我们来对比两段代码的执行结果:

第一段代码,没有任何区别。跟我们原有的PHP代码一模一样:

<?php

$fo = 5;
//$fo的值为5,将5赋值
$bar = $fo;
//$bar的值原来为5,现在将值改为6
$bar = 6;
//$bar的结果为6
echo $bar.'<br />';
//$fo的结果为5
echo $fo.'<br />';

?>

第二段代码:

<?php

$fo = 5;
//注意&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值