if (!$imgname)
{
    $name = 2
}

解决方案 »

  1.   

    就是楼上写的。
    当$imgname = 0, $imgname = "", $imgname 不存在的时候.
    $name = 2
      

  2.   

    Notice: Undefined variable: imgname in D:\Webserver\up.php on line 40Warning: Cannot modify header information - headers already sent by (output started at D:\Webserver\up.php:40) in D:\Webserver\up.php on line 72如果没上传文件时出现这样的错误,有文件上传就没出错,怎么解决?
    按照你说的出现这样的错误
      

  3.   

    up.php代码如下
    <?php require_once('Connections/person.php'); ?>
    <?php
    //上传文件开始
    $updir = "doc";//指定目录名称if(!is_dir($updir)){
    mkdir($updir, 0777);  //若不存在,则创建目录
    }
    if (!is_writeable($updir)){
    echo "$updir目錄不可寫!"; exit;
    }
    /**
    |+-----------------------------------------------
    | 上传图片
    |+-----------------------------------------------
    **/
    $up_pic = $_FILES['pic'];
    $pic_name = $up_pic['name'];
    if (!empty($pic_name)) {
    if (!is_uploaded_file($up_pic['tmp_name'])){
    echo "不能上傳 $pic_name";
    exit();
    }
    $file_name=substr($pic_name, -3);  //获取上存文件小点后的的文件名
    $file_name_last=strtolower($file_name);  //将文件名改成小写
    if($file_name_last!="zip"){
    echo "请输入zip格式的文件!";
    //if($file_name_last!="zip"&&$file_name_last!="rar"&&$file_name_last!="doc"){
    //echo "请输入zip,rar,doc格式的文件!";
    exit();
    }
    //文件名:把时间和文件名的md5值组合,加上后缀得到文件名。
        $imgname = date("ymdHis").".".$file_name_last;
    $up_url=$updir."/".$imgname;
    if (!move_uploaded_file($up_pic['tmp_name'], $up_url)){ //上传样图
    echo "上傳文件失敗";
    }
    }
    //上传文件结束
    if (!$imgname)
    {
        $name = "2";
    }
    else 
    {
    $name= date("ymdHis")."."."zip";
    }
    $xm=  $HTTP_POST_VARS['xm'];
    $xb=  $HTTP_POST_VARS['xb'];
    $xy=  $HTTP_POST_VARS['xm'];
    $zy=  $HTTP_POST_VARS['zy'];
    $nj=  $HTTP_POST_VARS['nj'];
    $bbs=  $HTTP_POST_VARS['bbs'];
    $ss=  $HTTP_POST_VARS['ss'];
    $dh=  $HTTP_POST_VARS['dh'];
    $ff=  $HTTP_POST_VARS['ff'];
    $xq=  $HTTP_POST_VARS['xq'];
    $lb=  $HTTP_POST_VARS['lb'];
    $jy=  $HTTP_POST_VARS['jy'];
    $jh=  $HTTP_POST_VARS['jh'];  $insertSQL = "INSERT INTO person (xm, xb, xy, zy, nj, bbs, ss, dh, ff, xq, lb, jy, jh, sc) VALUES ('$xm','$xb','$xy','$zy','$nj','$bbs','$ss','$dh','$ff','$xq','$lb','$jy','$jh','$name')";  mysql_select_db($database_person, $person);
      $Result1 = mysql_query($insertSQL, $person) or die(mysql_error());  $insertGoTo = "success.php";
      if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
        $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
        $insertGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
      }
      header(sprintf("Location: %s", $insertGoTo));?>
      

  4.   

    $_FILES['pic']['name']另外HEADER不能在有其他输出之后使用
      

  5.   

    if (!$imgname)
    {
        $name = 2;
    }
      

  6.   

    有个值$imgname = date("ymdHis").".".$file_name_last;
    用来上传文件的,我想定义如果$imgname为空值
    ------------------------$imgname 不可能为空,起码有个“.”
      

  7.   

    有个值$imgname = date("ymdHis").".".$file_name_last;
    用来上传文件的,我想定义如果$imgname为空值
    那么$name = 2
    请问具体怎么写这段代码?
    用来做下判断,然后存入数据库的,name表示不上传文件者具有的权限字段
    帮忙啊,我给分~~~~~~~~~~~~~~~~~~~~`
    怎么定义啊?
    -----------------------------------------
    思路有问题。难道是先让他上传,等传不上去时再对他说,“老兄,你还不够格呢”。
    我认为应该是先权限判断,再让他上传,即,先通知他:“老大你没有权限,就不要再浪费力气了吧。”然后有权限再上传。if ($auth==1)
    {
        //上传
    }
    else
    {
        //走人
    }
      

  8.   

    Notice: Undefined variable: imgname in D:\Webserver\up.php on line 40
    这个错误是因为服务器把warnings的报告打开了的。
    你只要先定义一次这个变量然后再使用就行了。
      

  9.   

    谢谢阿飞,你给的信息才是做关键的,定义变量问题没了
    只是我想在问下你因为我原来的php是运行在Apache2 Web Server v2.0.45
    下面没有任何问题的,运行在整合了php的iis里页面出现这样的问题
    是不是在iis下运行php一定要首先定义变量然后再使用呢?
    谢谢。。
      

  10.   

    1,
    把$imgname定义为全局变量,紧挨着
    $updir = "doc";//指定目录名称
    定义 $imgname="";
    否则你现在的$imgname只是局部变量2,Warning: Cannot modify header information - headers already sent by (output started at D:\Webserver\up.php:40) in D:\Webserver\up.php on line 72
    你把所有的echo, print都comment掉,就不会再出现warning了
      

  11.   

    -- 是不是在iis下运行php一定要首先定义变量然后再使用呢?php和很多语音不同,它不用定义任何变量,可不等於没有
    全局变量和局部变量之分。在采用一个变量前,你一定要想好
    这个变量有多少地方要用,养成好习惯。。
      

  12.   

    To papayo(papayo),太客气了.只是我想在问下你因为我原来的php是运行在Apache2 Web Server v2.0.45
    下面没有任何问题的,运行在整合了php的iis里页面出现这样的问题
    是不是在iis下运行php一定要首先定义变量然后再使用呢?这只是php的一个设置问题:
    读读php.ini里的这一段.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Error handling and logging ;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    把error_reporting  = E_ALL;改为error_reporting  = E_ERROR;就行了。
      

  13.   

    ------------------------------麻烦大家看一下http://expert.csdn.net/Expert/TopicView1.asp?id=2489499
      

  14.   

    修改开关error_reporting = E_ALL & ~E_NOTICE
    可以不让检查变量是否定义,这肯定不是最佳方案。有时你根本就不能进行修改。若出错显示被关掉了,那就只有白屏了。先用isset函数检查变量是否定义
    if(isset($imgname))
      if (!$imgname)
        ...
    这样就保险了。你的$imgname = date("ymdHis").".".$file_name_last;
    当$file_name_last=""时
    $imgname是形如031124164200.的串,不可能为空。
      

  15.   

    ^_^,xuzuning(唠叨)大哥说得对。