求解这个PHP上传文件的代码
为什么一开始这里是一个if。。。else的判断关系,还有代码段第二行的这个empty($_GET[submit])这里的submit是指哪个提交?<?phpif(empt...
为什么一开始这里是一个if。。。else的判断关系,还有代码段第二行的这个empty($_GET[submit])这里的submit是指哪个提交?
<?php
if(empty($_GET[submit]))
{
?><style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style>
<form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF']?>?submit=1" method="post">
选择图片: <input name="filename" type="file">
<input type="submit" value="确定上传">
</form>
<?php
}else{
$path="../upload/"; //上传路径
//echo $_FILES["filename"]["type"];
if(!file_exists($path))
{
//检查是否有该文件夹,如果没有就创建,并给予最高权限
mkdir("$path", 0700);
}//END IF
//允许上传的文件格式
$tp = array('image/gif','image/jpeg','image/png');
//检查上传文件是否在允许上传的类型
if(!in_array($_FILES["filename"]["type"],$tp))
//in_array — 检查数组中是否存在某个值,在变量$tp中搜索$_FILES["filename"]["type"]这个值,即文件类型。
//如果是非 上传文件的类型的类型 则执行下面这个弹窗并输出 '请注意上传文件的格式!'
{
echo "<script>";
echo "alert('请注意上传文件的格式!');";
echo "location.href='up.php';";
echo "</script>";
exit;
}//exit代表直接退出,不再执行下面的代码了
if($_FILES["filename"]["name"])
{
$file1=$_FILES["filename"]["name"];
$exten=pathinfo($_FILES["filename"]["name"]);
//pathinfo — 返回文件路径的信息
$exten=$exten["extension"];
//等到上传文件的类型
$file2 = $path.time().'.'.$exten;
$flag=1;//这个变量的作用仅仅是为了让代码继续执行下去而已
}//END IF
if($flag) $result=move_uploaded_file($_FILES["filename"]["tmp_name"],$file2);
//move_uploaded_file — 将上传的文件移动到新位置,在这里就是将被上传的文件的位置移动到变量$file2里的设置的位置
//特别注意这里传递给move_uploaded_file的 第一个参数为上传到服务器上的
//临时文件的地址,第二个参数是你要存放的地址,也就是upload文件夹
if($result)
{
$file2=str_replace("../","",$file2);
//str_replace是将$file2这个变量里的值中的 ../ 替换成 空格
//echo "上传成功!".$file2;
echo "<script language='javascript'>";
echo "alert(\"上传成功!\");";
echo "parent.form10.pic.value='$file2'";
echo "</script>";
}//END IF
}
//此页面里有很多的if其实并不是判断的意思,仅仅只是想要程序继续往下执行下去而已
//比如flag = 1 和if(flag) 注:flag为1,1就是真,在if条件里 真 就是执行if语句的内容的意思
?> 展开
<?php
if(empty($_GET[submit]))
{
?><style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style>
<form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF']?>?submit=1" method="post">
选择图片: <input name="filename" type="file">
<input type="submit" value="确定上传">
</form>
<?php
}else{
$path="../upload/"; //上传路径
//echo $_FILES["filename"]["type"];
if(!file_exists($path))
{
//检查是否有该文件夹,如果没有就创建,并给予最高权限
mkdir("$path", 0700);
}//END IF
//允许上传的文件格式
$tp = array('image/gif','image/jpeg','image/png');
//检查上传文件是否在允许上传的类型
if(!in_array($_FILES["filename"]["type"],$tp))
//in_array — 检查数组中是否存在某个值,在变量$tp中搜索$_FILES["filename"]["type"]这个值,即文件类型。
//如果是非 上传文件的类型的类型 则执行下面这个弹窗并输出 '请注意上传文件的格式!'
{
echo "<script>";
echo "alert('请注意上传文件的格式!');";
echo "location.href='up.php';";
echo "</script>";
exit;
}//exit代表直接退出,不再执行下面的代码了
if($_FILES["filename"]["name"])
{
$file1=$_FILES["filename"]["name"];
$exten=pathinfo($_FILES["filename"]["name"]);
//pathinfo — 返回文件路径的信息
$exten=$exten["extension"];
//等到上传文件的类型
$file2 = $path.time().'.'.$exten;
$flag=1;//这个变量的作用仅仅是为了让代码继续执行下去而已
}//END IF
if($flag) $result=move_uploaded_file($_FILES["filename"]["tmp_name"],$file2);
//move_uploaded_file — 将上传的文件移动到新位置,在这里就是将被上传的文件的位置移动到变量$file2里的设置的位置
//特别注意这里传递给move_uploaded_file的 第一个参数为上传到服务器上的
//临时文件的地址,第二个参数是你要存放的地址,也就是upload文件夹
if($result)
{
$file2=str_replace("../","",$file2);
//str_replace是将$file2这个变量里的值中的 ../ 替换成 空格
//echo "上传成功!".$file2;
echo "<script language='javascript'>";
echo "alert(\"上传成功!\");";
echo "parent.form10.pic.value='$file2'";
echo "</script>";
}//END IF
}
//此页面里有很多的if其实并不是判断的意思,仅仅只是想要程序继续往下执行下去而已
//比如flag = 1 和if(flag) 注:flag为1,1就是真,在if条件里 真 就是执行if语句的内容的意思
?> 展开
1个回答
展开全部
代码的意思是:
页面执行后,if判断如果提交的action url中 submit值为空则显示上传表单,否则处理提交上传的处理过程。
其实if(empty($_GET[submit])) 这个写法是错误的,应该写成 if(empty($_GET["submit"]))
第二行的这个empty($_GET[submit])这里的submit 仅指的是表单提交的action url中的参数。
页面执行后,if判断如果提交的action url中 submit值为空则显示上传表单,否则处理提交上传的处理过程。
其实if(empty($_GET[submit])) 这个写法是错误的,应该写成 if(empty($_GET["submit"]))
第二行的这个empty($_GET[submit])这里的submit 仅指的是表单提交的action url中的参数。
追问
你好,我还想问下上传表单里的这个是将表单提交到什么位置?
action="?submit=1"
里的$_SERVER['PHP_SELF']是什么意思?还有后面的 ?submit=1 是条件吗?
追答
这个是获取当前脚本本身,即当前页面本身。其中的submit=1 可以看成是条件,就是判断当提交的url 获取submit参数为1时去执行特定的控制过程。你的代码仅是判断是否含有submit参数而没有判断这个参数是否等于1.
假设你的当前代码页面是 test.php 那么?submit=1 获取到的action就是 action="/test.php?submit=1" 表示提交到这个地址
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询