可变函数
<?php
function display(){
echo 'hello world';
}
$var = 'display';
$var(); //调用方法
function show(){
echo __FUNCTION__;
}
function getShow($func){
$func();
}
getShow('show');
文件包含函数区别:
绝对路径
本地绝对路径
互联网绝对路径
相对路径
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();
新增文件
fopen(函数)
<?php
$fp = @fopen('ta.txt','wb');
fclose($fp);
touch('test3.html'); //touch函数也能创建文件
删除文件
unlink 删除文件
@unlink('ta.txt');
修改文件
fwrite
$fp = @fopen('ta.txt','wb');
$res = fwrite($fp,'<html><body></body>></html>');
fclose($fp);//关闭资源
读取文件
fread
$f = fopen('t21.php','r');
fread($f,1024);
echo $f;
fclose($f);
读取文件-推荐
<?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);
1.1 表单传值意义
1.2 表单传值方式
1.3 GET和POST方式(略)
- form标签
1.4 PHP接收数据
$_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>
? 当使用POST方式提交后,按照覆盖规则,
第一项echo $_POST[‘keywors‘]; 应当输出 电视
第二项echo $_POST[‘type‘];输出美术
第三项echo $_GET[‘keywors‘];使用了action的GET操作 - 缺省值音乐
第四项得到有效的GET-type 输入 无输出
第5项echo $_REQUEST[‘keywors‘];keywords,此时遵循POST覆盖GET参数,输出 电视
第6项echo $_REQUEST[‘type‘];输出type,输出美术
结果如下
PS:中途犯了了个智障错误,我用火狐hackbar插件发送POST请求包和使用submit按键结果是一样的(难道GET和POST方式结果相同),后来抓包,才发现前端HTML文件会把信息自动转换成POST请求包。form决定了请求的方式
复选框 略过
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>
接收文件的内容
<?php
//接收文件
var_dump($_POST);
var_dump($_FILES);
文件上传后,PHP端保存的文件信息
name 文件在本地客户端的文件名字
type 文件的类型
tmp_name 文件在服务器端系统接收惠普保存的临时文件名字
error 错误代码
size 文件大小
使用函数 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, '.');
}
原文:https://www.cnblogs.com/LtWf/p/12417716.html