首页 > Web开发 > 详细

PHP学习

时间:2020-03-05 09:42:34      阅读:60      评论:0      收藏:0      [点我收藏+]

PHP学习

第4部分 函数--略

  1. 可变函数

    <?php
    function display(){
        echo 'hello world';
    }
    $var = 'display';
    $var(); //调用方法
    
    function show(){
        echo __FUNCTION__;
    }
    function getShow($func){
        $func();
    }
    getShow('show');

第5部分 文件包含

1.1文件包含

  1. 向上包含
    1. 当前文件A没有需要使用的函数B:那么在文件A中使用语句,包含定义函数B的文件C
  2. 向下包含
    1. 当前文件A没有需要使用的函数B:那么在定义函数B的文件C中,使用语句包含文件A

文件包含函数区别:

  1. include和require :包含的文件不存在的时候,Include只是报错;require报告致命错误,中断程序
  2. include和include_once:include_once会查看是否已经包含过文件,有且仅仅执行一次,include不同

1.2路径问题

  1. 绝对路径

    • 本地绝对路径

    • 互联网绝对路径

  2. 相对路径

    • ./同级目录
    • ../上级目录

第6部分 文件夹与文件操作

1.1 文件编程

1.2 文件夹操作

  • 增删改查

  • mkdir

  • rmdir

  • rename

  • opendir 打开资源 循环导入 == 打开文件指针

  • readdir 函数返回目录中下一个文件的文件名

  • closedir 关闭资源 和opendir匹配 ==关闭文件指针

  • scandir 查询资源 - 一次性导入

  • getcwd() 获取当前目录名称

  • is_dir() 判断参数是否为目录

  • chdir() 改变当前工作路径

    <?php
    //创建文件夹
    mkdir('./test'); //当前目录中创建
    mkdir('../test'); //上级目录中创建
    
    //删除文件夹
    rmdir('./test');
    
    //重命名文件夹
    rename('./test','date');
    
    //遍历文件夹,读取文件名称
    $res=scandir('.');
    foreach ($res as $file){
        echo $file.'<br>';
    }
    
    //使用资源方式读取文件名
    //使用完成后,关闭资源
    $res = opendir('.');
    $file = '';
    while ($file = readdir($res)) {
        echo $file.'<br>';
    }
    closedir(); 
    
    //判断路径是否有效函数
    /* is_dir() 判断当前目录是否有效
     * getcwd() 获取当前工作路劲
     * rewinddir() 将opendir打开的资源指针重新回到第一位
     * chdir(目录) 修改当前的工作路径:不用修改访问的文件的真实路径,让文件中可以得到新的工作路径
     * */
    $dir = getcwd();
    is_dir($dir .'/wev') or die('目录不存在');
    echo $dir . '<br>';
    chdir('./date');
    echo getcwd();
    

1.3 文件操作

  1. 新增文件

    1. fopen(函数)

      技术分享图片

<?php
$fp = @fopen('ta.txt','wb');
fclose($fp);
touch('test3.html'); //touch函数也能创建文件
  1. 删除文件

    1. unlink 删除文件

      @unlink('ta.txt');
  2. 修改文件

    1. fwrite

      $fp = @fopen('ta.txt','wb');
      $res = fwrite($fp,'<html><body></body>></html>');
      fclose($fp);//关闭资源
  3. 读取文件

    1. fread

      $f = fopen('t21.php','r');
      fread($f,1024);
      echo $f;
      fclose($f);
  4. 读取文件-推荐

    1. file_get_contents
    2. file_put_contents
<?php
//读取文件内容
$file = file_get_contents('t1.php');

//读取URL
$web = file_get_contents('https://www.baidu.com/');

// 新建文件
touch('hey.html');

//写入内容
file_put_contents('hey.html', $file);

//追加内容 - FILE_APPEND
file_put_contents('hey.html', 'hello world', FILE_APPEND);

第7部分 表单传值

1.1 表单传值意义

1.2 表单传值方式

  1. HEAD
  2. GET
  3. PUT
  4. POST
  5. DELETE
  6. OPTIONS

1.3 GET和POST方式(略)

- form标签

1.4 PHP接收数据

  1. 接收数据的方式如下
    1. $_POST : 接收用户GET方式提交的数据
    2. $_GET : 接收用户POST方式提交的数据
    3. $_REQUEST : 接收用户GET和POST提交的数据
  • $_POST 接收用户使用GET和POST方式提交的数据。如果GET和POST提交的是同名数据,那么POST数据将会覆盖GET数据。

    • 实例php文件如下

      <?php
      echo $_POST['keywords'].'<br>';
      echo $_POST['type'].'<br>';
      
      echo $_GET['keywords'].'<br>';
      echo $_GET['type'].'<br>';
      //
      echo $_REQUEST['keywords'].'<br>';
      echo $_REQUEST['type'].'<br>';
      ?>
    • 实例html文件如下

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>Title</title>
      </head>
      <body>
      <form action="index.php?keywords=音乐" method="post">
          <input type="text" name="keywords" value=""/> //输入 电视
          <input type="text" name="type" value=""/> //输入美术
          <input type="submit" value="检索">
      </form>
      </body>
      </html>
    1. ? 当使用POST方式提交后,按照覆盖规则,

      1. 第一项echo $_POST[‘keywors‘]; 应当输出 电视

      2. 第二项echo $_POST[‘type‘];输出美术

      3. 第三项echo $_GET[‘keywors‘];使用了action的GET操作 - 缺省值音乐

      4. 第四项得到有效的GET-type 输入 无输出

      5. 第5项echo $_REQUEST[‘keywors‘];keywords,此时遵循POST覆盖GET参数,输出 电视

      6. 第6项echo $_REQUEST[‘type‘];输出type,输出美术

        结果如下

技术分享图片

PS:中途犯了了个智障错误,我用火狐hackbar插件发送POST请求包和使用submit按键结果是一样的(难道GET和POST方式结果相同),后来抓包,才发现前端HTML文件会把信息自动转换成POST请求包。form决定了请求的方式

复选框 略过

1.6 文件上传 - 重头戏

  1. html 文件内容

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="t26.php" method="POST" enctype="multipart/form-data">
        <input type="file" name="file" value="">
        <input type="submit" name="submit" value="上传">
    </form>
    </body>
    </html>
  2. 接收文件的内容

    <?php
    //接收文件
    var_dump($_POST);
    var_dump($_FILES);
  3. 文件上传后,PHP端保存的文件信息

    • name 文件在本地客户端的文件名字

    • type 文件的类型

    • tmp_name 文件在服务器端系统接收惠普保存的临时文件名字

    • error 错误代码

    • size 文件大小

  4. 使用函数 move_loaded_File(临时目录,目标目录),目标存储位置需要重命名(默认临时文件名称为tmp)

$file = $_FILES['file'];
if ($file['error'] == 0) {
    //成功
    move_uploaded_file($file['tmp_name'], 'upload/'. $file['name']);
}

完整文件上传

<?php

function fileupload($file, $path, &$error, $type = array(), $size = 200000)
{   //判定上传的是否为文件
    if (!isset($file['error'])) {
        $error = '文件无效';
        return false;
    }
    //有效路径判定
    if (!is_dir($path)) {
        $error = '存储路径无效';
        return false;
    }
    //文件错误
    switch ($file['error']) {
        case 1:
        case 2:
            $error = '文件过大';
            return false;
        case 3:
            $error = '文件只有部分成功';
            return false;
        case 4:
            $error = '用户没有选择上传文件';
            return false;
        case 6:
        case 7:
            $error = '服务器失败';
            return false;
    }

    if (!empty($type) && !in_array($file['type'], $type)) {
        $error = '当前上传的文件不符合';
        return false;
    }

    //大小判定
    if ($file['size'] > $size) {
        $error = '文件大小超过当前允许范围,当前允许的大小为';
    }
    //文件转存
    $newfilename = getNewName($file['name']);
    if (move_uploaded_file($file['tmp_name'], $path . '' . $newfilename)) {
        return $newfilename;
    } else {
        $error = '文件上传失败';
        return false;

    }
}

function getNewName($filename, $rand = 6)
{
    //1.时间
    $newname = date('YmdHis');
    //增加随机成分
    $old = array_merge(range('a', 'z'), range('A', 'Z'));
    shuffle($old);
    for ($i = 0; $i < $rand; $i++) {
        $newname .= $old[$i];
    }
    return $newname . strstr($filename, '.');
}

PHP学习

原文:https://www.cnblogs.com/LtWf/p/12417716.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!