首页 > 编程语言 >PHP重要知识点

PHP重要知识点

时间:2023-04-29 15:55:54浏览次数:37  
标签:FILES 知识点 重要 name echo file PHP 变量

PHP表单和用户输入

PHP中的$_POST和$_GET变量用于检索表单中的信息,比如用户输入。
实例:

<html>
    <head>
        <meta charset="utf-8">
        <title>test</title>
    </head>
    <body>
        <form action="welcome.php" method="post">
            名字: <input type="text" name="fname">
            年龄: <input type="text" name="age">
            <input type="submit" value="提交">
        </form>
    </body>
</html>

当用户填写好上面的表单并点击提交按钮是,表单的数据会被送往名为"welcome.php"的PHP文件:welcome.php文件如下

欢迎<?php echo $_POST['fname'];?>!<br>
你的年龄是 <?php echo $_POST['age'];?>岁。

PHP获取下拉菜单的数据
表单使用GET方式获取数据,action属性值为空表示提交到当前脚本,我们可以通过select的name属性获取下来菜单的值
实例:

<?php
$q = isset($_GET['q'])?htmlspecialchars($_GET['q']):' ';
if($q){
    if($q=='BAIDU'){
        echo "百度一下<br>https://www.baidu.com";
    }else if($q=="GOOGLE"){
        echo "Google搜索<br>http://www.google.com";
    }else if($q=="TAOBAO"){
        echo "淘宝<br>http://www.taobo.com";
    }
}else{
?>
<form action="" method="get">
    <select name="q">
    <option value="">选择应该站点:</option>
    <option value="BAIDU">baidu</option>
    <option value="GOOGLE">Google</option>
    <option value="TAOBAO">Taobao</option>
    </select>
    <input type="submit" value="提交">
</form>
<?php
}
?>

PHP下拉菜单多选
如果下拉菜单多选(multiple="multiple"),我们可以通过将设置select name="q[]"以数组的方式获取,下面使用POST方式提交,代码如下:

<?php
$q =isset($_POST['q'])?$_POST['q']:"";
if(is_array($q)){
    $site = array(
        'taobao'=>'淘宝:http://www.taobo.com',
        'baidu'=>'百度一下:http://www.baidu.com',
        'google'=>'google搜索:http://www/google.com',
    );
    foreach($q as $var){
        echo $sites[$val]. PHP_EOL;
    }
}else{
?>
    <form action="" method="post">
        <select multiple="multiple" name="q[]">
        <option value="">请选择应该站点:</option>
        <option value="taobao">Taobao</option>
        <option value="google">Google</option>
        <option value="baidu">baidu</option>
        </select>
        <input type="submit" value="提交">
    </form>
<?php
}
?>

单选按钮表单

<?php
$q = isset($_GET['q'])?htmlspecialchars($_GET['q']):"";
if($q){
    if($q=='taobao'){
        echo '你要钱吗?就知道买买买';
    }else if($q='google'){
        echo '我才是世界上最好的搜索引擎'
    }else if($q=='baidu'){
        echo '我是百度,大家都懂';
    }
}else{
    ?>
    <form  action="" method="get">
        <input type="radio" name="q" value="taobao"/>taobao
        <input type="radio" name="q" value="google"/>google
        <input type="radio" name="q" valu="baidu"/>baidu
        <input type="sumbit" value="提交">
    </form>
<?php
}
?>

PHP checkbox复选框可以选择多个值

<?php
$q = isset($_POST['q'])?$_POST['q']:'';
if ($q){
    if(is_array($q)){
        $site= array(
            'taobao'=>'https://www.baidu.com',
            'google'=>'https://www.google.com',
            'baidu'=>'https://www.baidu.com',
        );
        foreach($q as $val){
            echo $site[$val] . PHP_EOL;
        }
    }
} else{
    ?><form action="" method="post">
        <input type="checkbox" name="q[]" value="taobao">taobao</br>
        <input type="checkbox" name="q[]" value="google">google</br>
        <input type="checkbox" name="q[]" value="baidu">baidu</br>
        <input type="submit" value="提交">
        </form>
<?php
}
?>

$_SERVER['PHP_SELF']返回当前正在执行脚本的文件名。
什么是htmlspecialchars()方法
htmlspecialchars()函数把一些预定义的字符串转换为HTML实体。
预定义的字符是:

  • &(和号)成为&amp;
  • " (双引号)成为&quot;
  • '(单引号)成为&#039;
  • <(小于)成为&lt;
  • >(大于)成为&gt;

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

关联二维数组:

<?php
$sites = array
(
    "runoob"=>array
    (
        "菜鸟教程",
        "http://www.runoob.com"
    ),
    "google"=>array
    (
        "Google搜索",
        "http://www.google.com"
    ),
    "taobao"=>array
    (
        "淘宝",
        "http://www.taobao.com"
    )
);
print_r($lsites);
?>

输出:
img

PHP包含文件

  • require生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
  • include生成一个警告(E_WARNING),在错误发生后脚本会继续执行。

PHP文件处理
fopen()函数用于在PHP中打开文件,此函数的第一个参数含有要打开的文件名称,第二个参数规定了使用哪一种模式来打开文件。
fclose()函数用于关闭打开的文件。
feof()函数检测是否达到文件末尾(EOF)。
fgets()函数用于从文件中逐行读取文件。
fgetc()函数用于从文件中逐字节低读取文件。

PHP文件上传

  1. 创建一个文件上传表单
<html>
    <head>
        <meta charset="utf-8">
        <title>upload</title>
    </head>
    <body>
        <form action="upload_file.php" method="post" enctype="multipart/form-data">
            <label for="file">文件名:</label>
            <input type="file" name="file" id="file"><br>
            <input type="submit" name="submit" value="提交">
        </form>
    </body>
</html>

创建上传脚本

<?php
if($_FILES['file']['error'] > 0)
{
    echo "错误:". $_FILES['file']['error'] . "<br>";
}else{
    echo "上传文件名:" . $_FILES['file']['name'] . "<br>";
    echo "文件类型:" .$_FILES['file']['type'] . "<br>";
    echo "文件大小:" .$_FILES['file']['size'] . "<br>";
    echo "文件临时存储位置:".$_FILE['file']['tmp_name'];
}
?>

通过使用PHP的全局数组$_FILES,你可以从客户计算机向远程服务器上传文件。
第一个参数是表单的input name,第二个下标可以是"name"、"type"、"size"、"tmp_name"或者"error"。

  • $_FILES['file']['name']:上传文件的名称
  • $_FILES['file']['type']:上传文件的类型
  • $_FILES['file']['size']:上传文件的大小,以字节为单位
  • $_FILES['file']['tmp_name']:存储在服务器的文件的临时副本的名称

上传限制
规定用户只能上传.gif、.gif、.jpeg、.jpg、.png 文件,文件大小必须小于 200 kB:

<?php
// 允许上传的图片后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);        // 获取文件后缀名
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800)    // 小于 200 kb
&& in_array($extension, $allowedExts))
{
    if ($_FILES["file"]["error"] > 0)
    {
        echo "错误:: " . $_FILES["file"]["error"] . "<br>";
    }
    else
    {
        echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
        echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
        echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
        echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
    }
}
else
{
    echo "非法的文件格式";
}
?>

in_array()函数搜索数组中是否存在指定的值
实例:

<?php
$sites= array("Google","Runoob","Taobao","facebook");

if(in_array("Taobao",$sites))
{
    echo "找到匹配项!";
}else{
    echo "没有找到匹配项!";
?>

explode()函数使用一个字符串分隔另一个字符串,并返回由字符串组成的数组
实例:

<?php
$str = "www.runoob.com";
print_r (explode(".",$str));
//输出
// Array
// (
//     [0] => www
//     [1] => runoob
//     [2] => com
// )
?>

end()函数将内部指针指向数组中的最后一个元素,并输出。

保存被上传的文件

<?php
// 允许上传的图片后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
echo $_FILES["file"]["size"];
$extension = end($temp);     // 获取文件后缀名
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800)   // 小于 200 kb
&& in_array($extension, $allowedExts))
{
    if ($_FILES["file"]["error"] > 0)
    {
        echo "错误:: " . $_FILES["file"]["error"] . "<br>";
    }
    else
    {
        echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
        echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
        echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
        echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";
        
        // 判断当前目录下的 upload 目录是否存在该文件
        // 如果没有 upload 目录,你需要创建它,upload 目录权限为 777
        if (file_exists("upload/" . $_FILES["file"]["name"]))
        {
            echo $_FILES["file"]["name"] . " 文件已经存在。 ";
        }
        else
        {
            // 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
            move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
            echo "文件存储在: " . "upload/" . $_FILES["file"]["name"];
        }
    }
}
else
{
    echo "非法的文件格式";
}
?>

PHP cookie
cookie常用于识别用户。cookie是一种服务器留在用户计算机上的小文件,每次同一台计算机通过浏览器请求页面时,这台计算机将会发生cookie,通过PHP,能创建并取回cookie的值。
使用setcookie():函数设置cookie
语法:
setcookie(name,value,expire,path,domain);
实例1:创建一个名为"user"的cookie,并为它赋值"test",规定一小时后过期

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

PHP的$_COOKIE变量用于取回cookie的值。

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

  1. 开始PHP Session
    在你把用户信息存储到PHP session中之前,首先必须启动会话。使用session_start()函数开启会话
  2. 存储Session变量
    使用$_SESSION变量存储和取回session变量
    实例:
<?php
session_start();
// 存储 session 数据
$_SESSION['views']=1;
?>
 
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
 
<?php
// 检索 session 数据
echo "浏览量:". $_SESSION['views'];
?>
 
</body>
</html>

使用unset()函数用于释放指定的session变量:

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

//或者通过调用session_destroy()函数彻底销毁sesion
session_destroy();
//session_destroy()将重置session,你将失去已存储的session数据
?>

PHP过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入。
外部数据:

  • 来自表单的输入数据
  • cookie
  • Web service data
  • 服务器变量
  • 数据库查询结果
    过滤变量
  • filter_var():通过一个指定的过滤器来过滤单一的变量
  • filter_var_array():通过相同的或者不同的过滤器来过滤多个变量
  • filter_input:获取一个输入变量,并对她进行过滤
  • filter_input_array:获取多个输入变量,并通过相同的或者不同的过滤器对它们进行过滤
    实例:使用filter_var()函数验证一个整数:
$int = 123

if(!filter_var($int,FILTER_VALIDTE_INT))
{
    echo "不是一个合法的整数";
}
else
{
    echo "是一个整数";
}
?>

有两种过滤器:
Validating过滤器:

  • 用于验证用户输入
  • 严格的格式规则(比如URL或者E-Mail验证)
  • 如果成功则返回预期的类型,如果失败则返回FALSE
    Sanitizing过滤器:
  • 用于允许或者禁止字符串中指定的字符
  • 无数据格式规则
  • 始终返回字符串
    选项和标志用于向指定的过滤器添加额外的过滤选项。
    实例:
<?php
$var = 300;

$int_options = array(
    "options"=>array
    (
        "min_range"=>0,
        "max_range"=>256
    )
);

if(!filter_var($var,FILTER_VALIDATE_INT,$int_options))
{
    echo "不是一个合法的整数";
}
else
{
    echo "是一个合法的整数";
}
?>

验证输入
通过一个"GET"方法传送输入变量(email)

  1. 检测是否存在"GET"类型的"email"输入变量
  2. 如果存在输入变量,检测她是否为有效的e-mail地址
<?php
if(!filter_has_var(INPUT_GET,"email"))
{
    echo "没有email参数";
}
else{
    if(!filter_input(INPUT_GET,"email",FILTER_VALIDATE_EMAIL))
    {
        echo "不是一个合法的E-Mail";
    }
    else
    {
        echo "是一个合法的e-mail";
    }
}
?>

实例2:
通过"GET"方法传送的输入变量(url):

  1. 检测是否存在"GET"类型的"url"输入变量
  2. 如果存在此输入变量,对其进行净化(删除非法字符),并将其存储在$url变量中
if(!filter_has_var(INPUT_GET,"url"))
{
    echo "没有url参数";
}
else
{
    $url = filter_input(INPUT_GET,"url",FILTER_SANITIZE_URL);
    echo $url;
}
?>

过滤多个输入
通过"GET"方法传送三个变量(name、age、Email)

  1. 设置一个数组,其中包含了输入变量的名称和用于指定的输入变量的过滤器
  2. 调用filter_input_array()函数,参数包含GET输入变量以及刚才设置的数组
  3. 检测$result变量中的"age"和"email"变量是否有非法的输入
$filter = array
(
    "name" => array
    (
        "filter"=>FILTER_SANITIZE_STRING
    ),
    "age" = > array
    (
        "filter"=>FILTER_VALIDATE_INT,
        "options"=>array
        (
            "min_range"=>1,
            "max_range"=>120
        )
    )
    "email"=>FILTER_VALIDATE_EMAIL
);

$result = filter_input_array(INPUT_GET,$filters);

if(!$result['age'])
{
    echo "年龄必须在1到120之间。<br>";
}
elseif (!$result["email"])
{
    echo "E-Mail不合法<br>";
}
else{
    echo "OK!";
}
?>

使用FILTER_CALLBACK过滤器,可以调用自定义的函数,把它作为一个过滤器来使用。
实例:使用自定义函数把所有"_"转换为"."

function converstSpace($string)
{
    return str_replace("_",".",$string);
}
$string = "www_test_com";

echo filter_var($string,FILTER_CALLBACK,array("options"=>"converSpace"));
?>

PHP Json

  • json_encode:对变量进行JSON编码
  • json_decode:对JSON格式的字符串进行解码,转换为PHP变量
// 将PHP数组转换为JSON格式的数据
<?php
$arr =array('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
// 输出结果:{"a":1,"b":2,"c":3,"d":4,"e":5}

// 将PHP对象转换为JSON格式数据
class Emp{
    public $name = "";
    public $hobbies = "";
    public $birthdate = "";
}
$e = new Emp();
$e->name = "xiaoxi";
$e->hobbies = "game";
$e->birthdate = date('m/d/Y h:i:s:a'strtotime("29/4/2023 15:27:23"));

echo json_encode($e);

// 输出: {"name":"xiaoxi","hobbies":"game","birthdate":"29\/04\/2023 15:27:23"}
?>

标签:FILES,知识点,重要,name,echo,file,PHP,变量
From: https://www.cnblogs.com/kalixcn/p/17364068.html

相关文章

  • CSS知识点总结
    CSS知识点总结文章内容可能较多且杂乱,可以查看页面右方的目录,以及使用Ctrl+F搜索页面内容进行内容定位。常用属性推荐搭配文档使用,可以复制属性名,到文档查看该属性对应的可选值。......
  • 《牛津英语》七年级易错知识点汇总.
    《牛津英语》七年级易错知识点汇总.  单词拼写短语搭配句型语法U6pleasantconvenientswim-swam-swumexcitingoppositefinancialbalconykindergartenpleasant-plea-sure-pleased tellsb.aboutsth.onthemapoftakeabustotake......
  • PHP计算两个经纬度之间的据离
    直接上代码/***@param$lat1*@param$lng1*@param$lat2*@param$lng2*@returnint*/functiongetDistance($lat1,$lng1,$lat2,$lng2){//将角度转为狐度$radLat1=deg2rad($lat1);//deg2rad()函数将角度转换为弧度$radLat2=deg2rad......
  • 如何避免跨越红线?——安全管理的重要性
    在现代社会中,安全管理已经成为了一个非常重要的话题。尤其是在一些危险行业中,如建筑、化工等领域,安全管理更是至关重要。然而,很多人并不知道如何有效地避免跨越红线,从而导致了许多不必要的安全事故。因此,如何避免跨越红线成为了每个人都应该关注的问题。首先,要明确什么是“红线”。......
  • session.save_path is correct (/var/lib/php/session) in Unknown on line 0
    session.save_pathiscorrect(/var/lib/php/session)inUnknownonline0 解决办法:方法1、注释掉/etc/php.ini中session.save_path=“/var/lib/php/session”方法2、查看apache用户和组,然后将该用户加到session文件夹所处的组中。方法3,在session_start()前不要有任何输出!......
  • 电容知识点小结
    1、钽电容过滤纹波效果非常好,但是钽电容容易爆,质量不好,过压、接反均会导致其爆掉。爆的过程有明火,在爆炸火灾等级要求高的场合尽量不适用钽电容。应注意固体钽电容在高阻电路中瞬时击穿可自愈,使用时回路中应串联电阻器,阻值按照3欧姆每福特为宜。2、铝电解电容,一般最高电压就做......
  • 安装wordpress 6.2(php 7.4.2)
    一,得到安装包的下载地址:1,官网地址:https://cn.wordpress.org/ 如图:点击获取WordPress按钮2,在下载WordPress6.2按钮上右键,选择: 复制链接地址,复制的链接如下:https://cn.wordpress.org/latest-zh_CN.zip说明:刘宏缔的架构森林是一个专注架构的博客,地址......
  • AVR单片机知识点
    1、 AVR单片机采用RISC架构,8051单片机采用CISC架构。前者速度为后者的2~4倍,为流水线操作指令2、 AVR单片机有32个通用寄存器(地址在RAM区从$0000开始到$001F),其中有6个(最后6个)合并为3个16位的X,Y,Z寄存器,用来存放地址指针,Z寄存器还可以寻址程序存储器3、 哈佛结构,131条......
  • php批量更新
    /****批量更新*@paramstring$table表名*@paramarray$values更新字段(二维数组)*@paramstring$indexkey值(主键)*@paramarray$wherewhere条件[['user_sn','=',2010000760],['nick','=',&#......
  • phpstudy配置nginx跨域请问
    add_headerAccess-Control-Allow-Origin*; add_headerAccess-Control-Allow-Methods'GET,POST,OPTIONS'; add_headerAccess-Control-Allow-Headers'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Cont......