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如果没上传文件时出现这样的错误,有文件上传就没出错,怎么解决? 按照你说的出现这样的错误
Notice: Undefined variable: imgname in D:\Webserver\up.php on line 40 这个错误是因为服务器把warnings的报告打开了的。 你只要先定义一次这个变量然后再使用就行了。
谢谢阿飞,你给的信息才是做关键的,定义变量问题没了 只是我想在问下你因为我原来的php是运行在Apache2 Web Server v2.0.45 下面没有任何问题的,运行在整合了php的iis里页面出现这样的问题 是不是在iis下运行php一定要首先定义变量然后再使用呢? 谢谢。。
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了
当$imgname = 0, $imgname = "", $imgname 不存在的时候.
$name = 2
按照你说的出现这样的错误
<?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));?>
{
$name = 2;
}
用来上传文件的,我想定义如果$imgname为空值
------------------------$imgname 不可能为空,起码有个“.”
用来上传文件的,我想定义如果$imgname为空值
那么$name = 2
请问具体怎么写这段代码?
用来做下判断,然后存入数据库的,name表示不上传文件者具有的权限字段
帮忙啊,我给分~~~~~~~~~~~~~~~~~~~~`
怎么定义啊?
-----------------------------------------
思路有问题。难道是先让他上传,等传不上去时再对他说,“老兄,你还不够格呢”。
我认为应该是先权限判断,再让他上传,即,先通知他:“老大你没有权限,就不要再浪费力气了吧。”然后有权限再上传。if ($auth==1)
{
//上传
}
else
{
//走人
}
这个错误是因为服务器把warnings的报告打开了的。
你只要先定义一次这个变量然后再使用就行了。
只是我想在问下你因为我原来的php是运行在Apache2 Web Server v2.0.45
下面没有任何问题的,运行在整合了php的iis里页面出现这样的问题
是不是在iis下运行php一定要首先定义变量然后再使用呢?
谢谢。。
把$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了
全局变量和局部变量之分。在采用一个变量前,你一定要想好
这个变量有多少地方要用,养成好习惯。。
下面没有任何问题的,运行在整合了php的iis里页面出现这样的问题
是不是在iis下运行php一定要首先定义变量然后再使用呢?这只是php的一个设置问题:
读读php.ini里的这一段.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
把error_reporting = E_ALL;改为error_reporting = E_ERROR;就行了。
可以不让检查变量是否定义,这肯定不是最佳方案。有时你根本就不能进行修改。若出错显示被关掉了,那就只有白屏了。先用isset函数检查变量是否定义
if(isset($imgname))
if (!$imgname)
...
这样就保险了。你的$imgname = date("ymdHis").".".$file_name_last;
当$file_name_last=""时
$imgname是形如031124164200.的串,不可能为空。