PHP中的一些小细节

PHP中单引号和双引号的区别?
PHP中的单引号和双引号在很多时候都是互通的,但是也存在区别:
1、单引号
其中的内容不会经过解释(\n不会输出为换行,而是直接输出),即内容会与输入的内容一致,例如:

<?php
$a = 123;
echo 'a is $a';

其输出内容为:

a is $a

2、双引号
双引号中的内容将会被解释,即解析内容中的变量,例如:

<?php
$a = 123;
echo "a is $a";

其输出结果为:

a is 123

3、注意

  • 双引号中插入单引号,若单引号中存在变量,变量会被解释
  • 因为双引号的内容会被解释,所以双引号的效率会比单引号的效率低,所以,我们可以在PHP代码中尽量使用单引号,若包含变量需要进行解析时,则使用双引号

在这里插入图片描述

什么是 htmlspecialchars()方法?
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。
预定义的字符是:

在这里插入图片描述
什么是 $_SERVER[“PHP_SELF”] 变量?
$_SERVER[“PHP_SELF”]是超级全局变量,返回当前正在执行脚本的文件名,与 document root相关。
所以, $_SERVER[“PHP_SELF”] 会发送表单数据到当前页面,而不是跳转到不同的页面。

如何避免 $_SERVER[“PHP_SELF”] 被利用?
$_SERVER[“PHP_SELF”] 可以通过 htmlspecialchars() 函数来避免被利用。
form 代码如下所示:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

htmlspecialchars() 把一些预定义的字符转换为 HTML 实体。现在如果用户想利用 PHP_SELF 变量, 结果将输出如下所示:

<form method="post" action="test_form.php/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;">

当用户提交表单时,我们将做以下两件事情:

  • 使用 PHP trim() 函数去除用户输入数据中不必要的字符 (如:空格,tab,换行)。
  • 使用PHP stripslashes()函数去除用户输入数据中的反斜杠 ()

如何验证 names(名称), e-mails(邮件), 和 URLs。
使用到正则表达式:
preg_match — 进行正则表达式匹配。
语法:

int preg_match ( string $pattern , string $subject [, array $matches [, int $flags ]] )

以下代码将通过简单的方式来检测 name 字段是否包含字母和空格,如果 name 字段值不合法,将输出错误信息:

$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
  $nameErr = "只允许字母和空格"; 
}

include 和 require 语句之间的区别
在 PHP 中,您可以在服务器执行 PHP 文件之前在该文件中插入一个文件的内容。
include 和 require 语句用于在执行流中插入写在其他文件中的有用的代码。
include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:

  • require 一般放在 PHP 文件的最前面,程序在执行前就会先导入要引用的文件;
  • include 一般放在程序的流程控制中,当程序执行时碰到才会引用,简化程序的执行流程。
  • require 引入的文件有错误时,执行会中断,并返回一个致命错误;
  • include 引入的文件有错误时,会继续执行,并返回一个警告。

因此,如果您希望继续执行,并向用户输出结果,即使包含文件已丢失,那么请使用 include。否则,在框架、CMS 或者复杂的 PHP 应用程序编程中,请始终使用 require 向执行流引用关键文件。这有助于提高应用程序的安全性和完整性,在某个关键文件意外丢失的情况下。包含文件省去了大量的工作。这意味着您可以为所有网页创建标准页头、页脚或者菜单文件。然后,在页头需要更新时,您只需更新这个页头包含文件即可。

include 'filename';

或者

require 'filename';

Cookie 是什么?
cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。
如何创建 Cookie?
setcookie() 函数用于设置 cookie。

注释:setcookie() 函数必须位于 标签之前。

<?php
setcookie("user", "runoob", time()+3600);
?>

<html>
.....

PHP Session 变量

PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。
Session 的工作机制是:为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,或者通过 URL 进行传导。

开始 PHP Session
在您把用户信息存储到 PHP session 中之前,首先必须启动会话。
注释:session_start() 函数必须位于 标签之前:

<?php session_start(); ?>
 
<html>
<body>
 
</body>
</html>

存储 Session 变量
存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:

<?php
session_start();
// 存储 session 数据
$_SESSION['views']=1;
?>
 
<html>
<head>
<meta charset="utf-8">
<title>1111111</title>
</head>
<body>
 
<?php
// 检索 session 数据
echo "浏览量:". $_SESSION['views'];
?>
 
</body>
</html>

在下面的实例中,我们创建了一个简单的 page-view 计数器。isset() 函数检测是否已设置 “views” 变量。如果已设置 “views” 变量,我们累加计数器。如果 “views” 不存在,则创建 “views” 变量,并把它设置为 1:

<?php
session_start();
 
if(isset($_SESSION['views']))
{
    $_SESSION['views']=$_SESSION['views']+1;
}
else
{
    $_SESSION['views']=1;
}
echo "浏览量:". $_SESSION['views'];
?>

销毁 Session
如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。
unset() 函数用于释放指定的 session 变量:

<?php
session_start();
if(isset($_SESSION['views']))
{
    unset($_SESSION['views']);
}
?>

您也可以通过调用 session_destroy() 函数彻底销毁 session:

<?php
session_destroy();
?>

PHP 错误处理

  • 简单的 “die()” 语句
    基本的错误处理:使用 die() 函数
    第一个实例展示了一个打开文本文件的简单脚本:
<?php
if(!file_exists("welcome.txt"))
{
    die("文件不存在");
}
else
{
    $file=fopen("welcome.txt","r");
}
?>
			      		***帅气的远远呀***
发布了87 篇原创文章 · 获赞 79 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41585840/article/details/105135177