运行后 卡在 ‘请上传合法文件 ’ 麻烦老师帮忙看看

运行后 卡在 ‘请上传合法文件 ’ 麻烦老师帮忙看看

 <?php
date_default_timezone_set('PRC');
header('content-type:text/html;charset=utf-8');
include_once './lib/fun.php';
session_start();
if(!isset($_SESSION['user'])||empty($_SESSION['user'])) {
    msg(2, '请登入', ';login.php');
}
$user=$_SESSION['user'];

//表单进行提交处理
if(!empty($_POST['name'])){
    $con=mysqlInit('127.0.0.1','root','root','imooc_mall');

    $name= mysql_real_escape_string(trim($_POST['name']));

    $price=intval(($_POST['price']));//价格

    $des=mysql_real_escape_string(trim($_POST['des']));

    $content=mysql_real_escape_string(trim($_POST['content']));

    $nameLength=mb_strlen($name,'utf-8');
    if($nameLength<=0||$nameLength>30){
        msg(2,'画品名应在1-30字符之间');
    }

    if(empty($price)){
        msg(2,'价格不能为空');
    }

    $desLength=mb_strlen($des,'utf-8');
    if($desLength<=0||$desLength>=200){
        msg(2,'简介应在1-200字符之间');
    }

    $contentLength=mb_strlen($content,'utf-8');
    if($contentLength<=0||$contentLength>=9999999){
        msg(2,'简介应在1-9999999字符之间');
    }

    $userId=$user['id'];

    $now=$_SERVER['REQUEST_TIME'];

    $pic=imgUpload($_FILES['$file']);

    //查询是否有重复ID
    $sql="SELECT COUNT(  `id` ) as 'total' FROM  `im_goods` WHERE  `name` =  '{$name}'";
    $obj=mysql_query($sql);
    $result=mysql_fetch_assoc($obj);


    if(isset($result['total'])&&$result['total']>0){
        msg(2,'商品名已存在,请重新输入');
    }
    unset($sql,$obj,$result);

    $sql="INSERT `im_goods`(`name`,`price`,`des`,`content`,`pic`,`user_id`,`create_time`,`update_time`,`view`)
    value('$name','$price','$des','$content','$pic','$userId','$now','$now',0})";
    $obj=mysql_query($sql);
    if($obj){
        msg(1,'操作成功','login.php');
    }else{
        msg(2,mysql_errno());exit;
    }
}

?>


fun

 <?php
/**
 * 数据库连接
 * @param $host
 * @param $username
 * @param $password
 * @param $dbname
 * @return bool|resource
 */
function mysqlInit($host,$username,$password,$dbname){
    $con=mysql_connect($host,$username,$password);
        if(!$con){
            return false;
        }
    mysql_select_db($dbname);
    mysql_set_charset('utf8');
    return $con;
}

/**
 * 密码加密
 * @param $password
 * @return bool|string
 */
function createPassword($password){
    if(!$password){
        return false;
    }
    return md5(md5($password).'IMOOC');
}

/**
 * 资源调用
 * @param $type
 * @param null $msg
 * @param null $url
 */
function msg($type,$msg=null,$url=null){
    //header('Location:msg.php?type={$type}&msg=($msg)&url=($url)')
    $toUrl="Location:msg.php?type={$type}";
    $toUrl.=$msg?"&msg=($msg)":'';
    $toUrl.=$url?"&msg=($url)":'';
    header($toUrl);
    exit;
}

function imgUpload($file){
    //检测上传文件是否合法
    if(!is_uploaded_file($file['tmp_name'])){
        msg(2,'请上传合法文件');
    }
    //图像类型验证
    $type=$file['type'];
    if(!in_array($type,array("image/png","image/gif","image/jpeg"))){
        msg(2,'请上传png,gif,jpg格式图像');
    }
    //上传目录
    $uploadPath='./static/file/';
    //上传目录访问URL
    $uploadUrl='/static/file/';
    //上传文件夹
    $fileDir=date('Y/md',$_SERVER['REQUEST_TIME']);

    //检测上传目录是否存在
    if(!is_dir($uploadPath.$fileDir)){
        mkdir($uploadPath.$fileDir,0755,true);//递归创建目录
    }

    //文件名加密
    //获取文件扩展名
    $ext=strtolower(pathinfo($file['name'],PATHINFO_EXTENSION));

    //上传文件名称
    $img=uniqid().mt_rand(1000,9999).'.'.$ext;

    //物理地址
    $imgPath=$uploadPath.$fileDir.$img;
    //url地址
    $imgUrl='http://127.0.0.1/mall'.$uploadPath.$fileDir.$img;

    //操作失败 查看上传目录权限
    if(!move_uploaded_file($file['tmp_name'],$imgPath)){
        msg(2,'服务器繁忙,请稍后再试');
    }
    return $imgUrl;
}


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

你好,上传的文件不合法,通过检查看到上面的文件中有$pic=imgUpload($_FILES['$file']);这里的$file不应该加单引号,否则文件名称就变成$file这个字符串了,$file在这里应该是一个变量,代表文件名称,应为imgUpload($_FILES[$file]),如果修改完后还有问题,建议从这里开始一步一步向上查找,打印相关内容,看看哪里是不是还有类似的问题。

如果解决了你的问题,请采纳,祝学习愉快~

  • 一切依旧静 提问者 #1
    还是显示非法文件
    2018-04-19 15:16:11
  • imooc_澈 回复 提问者 一切依旧静 #2
    怎么提示的?看下卡在了哪一步,逐步打印内容核对,如果你上传的文件本身没问题,肯定是在这个过程中的哪一步有问题,你第一个页面中的$file在哪里定义的,小慕没有在你的代码中找到,确定一下他是你传过来的文件名吗,也打印看看,如果问题依然得不到解决,把你的所有代码贴上来方便小慕调试。
    2018-04-19 16:24:38
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师