您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

抱歉!在问大神们一个问题不能获取到传过来的get值

2024/3/21 11:01:03发布25次查看
本帖最后由 eason_____________ 于 2013-07-25 16:41:04 编辑
数据库
//现在的问题是如果没有上传文件,只上传 文字。 就能获取到$_get的值。如果上传了文件 就不能获取。 具体代码请看下面。是json传值。
//html
x
添加图片
发布
从手机相册选择
拍照
取消

//index.php
imagestart(); $gettitle=$_get['title'];$getcontent=$_get['content'];if($_get['imgshows']=='none'){//如果没有文件 就执行这一句 $sql=insert into json_bbs values('','.$gettitle.','.$getcontent.','','.date().',''); mysql_query($sql);}else{ if($i->imagestauts == 1){//有文件 就执行这一句//就是这里获取不到值 $sql=insert into json_bbs values('','.$gettitle.','.$getcontent.','','.time().',''); mysql_query($sql); }}?>
回复讨论(解决方案)
//uploadimage.php
0 && !empty($destination)){
$this->filearray = $file;
$this->destination_folder = $destination;
$this->imagename = $name;
$this->imagepathtemp = $dbpath;
$this->updateimage = $update;
}else{
$this->imagestauts = '初始化失败';
}
}
/**
* 开始图片上传
*/
function imagestart(){
if($this->imagestauts === 1){
$this->imagecheck();
}
if($this->imagestauts === 1){
$this->dowork();
}
}
/**
*
* 图片的检查工作
*/
function imagecheck(){
$file = $this->filearray;
//print_r($file);
if(!is_uploaded_file($file['tmp_name']) && $this->imagestauts === 1){
$this->imagestauts = '图片不存在!';
}
if(uploadimage::max_file_size imagestauts === 1){
$this->imagestauts = '文件太大';
}
/*
//检查mime-type
if(!in_array(strtolower($file['type']), $this->uptypes) && $this->imagestauts === 1){
$this->imagestauts = '不支持 '.$file['type'].' 类型的文件';
}
*/
//防止在图片元数据的comment字段中加入了php代码
//通过二进制匹配检查
$fileinfo = pathinfo($this->filearray['name']);
$filetype = strtolower($fileinfo['extension']);
if(!in_array($filetype, $this->imagetype) && $this->imagestauts === 1){
$this->imagestauts = '不支持 '.$filetype.' 类型的文件';
}
if(!file_exists($this->destination_folder) && $this->imagestauts === 1){
mkdir($this->destination_folder,0777);//设置文件权限
}
}
/**
*
* 开始图片上传的工作
*/
function dowork(){
$filename = $this->filearray['tmp_name'];
$filesize = getimagesize($filename);
$fileinfo = pathinfo($this->filearray['name']);
$filetype = strtolower($fileinfo['extension']);
$n = !empty($this->imagename) ? $this->imagename : time();
$destination = $this->destination_folder.$n.'.'.$filetype;//图片本地路径
$this->imagepathtemp = $this->imagepathtemp.$n.'.'.$filetype;//将要保存在数据库的路径
//上传图片,若图片存在不更新已有图片
if(file_exists($destination) && $this->imagestauts === 1 && $this->updateimage == 0){
$this->imagestauts = '图片已存在';
}
//上传图片,若图片存在更新已有图片
if($this->imagestauts === 1 && $this->updateimage == 1){
$deleteimagedestination = $this->destination_folder.$n; //图片保存本地路径,包含文件名,但不包含图片后缀名
if($this->deleteimage($deleteimagedestination)){
}else{
$this->imagestauts = '删除已存在图片失败';
}
}
if(!move_uploaded_file($filename, $destination) && $this->imagestauts === 1){
$this->imagestauts = '传输错误';
}
if($this->imagestauts === 1){
$this->iamgepath = $this->imagepathtemp;
return $this->imagestauts;
}
}
/**
* 删除图片
* @param $path 图片在本地的保存路径
* @return 成功返回1 失败返回0
*/
function deleteimage($path){
if(!empty($path)){
foreach($this->imagetype as $type){
$_path = $path.'.'.$type;
if(file_exists($_path)){
//echo $_path;
if(!unlink($_path)){
$this->imagestauts = '删除已存在图片失败';
return 0;
}
}
}
return 1;
}else{
$this->imagestauts = '待删除图片路径不能为空';
return 0;
}
}
}
?>
还是那个问题?
怎么改的图片不能上传了?
还是那个问题?
怎么改的图片不能上传了?
现在图片能上传了,也能写入数据库了。 就是 如果有文件和图片一起上传的话。
就获取不到$_get的值
还是那个问题?
怎么改的图片不能上传了?
是类有问题吗?
现在的过程是:
如果值上传文字的话, 就直接插入数据库。
如果上传了有文字图片的话,等图片上传完成然后在执行插入数据库的操作。
if($i->imagestauts == 1) 这个是判断图片是否上传完成的
先确认代码是否走到了这个if块中,如果都没到这个块中,你怎么知道get的值没取到呢?
if($i->imagestauts == 1){
echo aaaaaa;
}
还有,你的代码跟之前的不大一样的。
$i->dowork();
$i->imagecheck();
这些逻辑不要了?
先确认代码是否走到了这个if块中,如果都没到这个块中,你怎么知道get的值没取到呢?
if($i->imagestauts == 1){
echo aaaaaa;
}
还有,你的代码跟之前的不大一样的。
$i->dowork();
$i->imagecheck();
这些逻辑不要了?
$i->imagestart();
替代了:
$i->dowork();
$i->imagecheck();
if($i->imagestauts == 1)
能走
都能插入数据库。
图片地址,都能插入数据库,就是get获取的值 不能插入到数据库,
一个低级错误
if($i-> imagestauts == 1)
是status
public $imagestauts = 1;
我类里面也是这样写的
一个低级错误
if($i-> imagestauts == 1)
是status
public $imagestauts = 1;
我类里面也是这样写的
一个低级错误
if($i-> imagestauts == 1)
是status
就是找不到原因,如果上传图片 始终都获取不到get的值 不上传图片就行。。。。。
一个低级错误
if($i-> imagestauts == 1)
是status
public $imagestauts = 1;
我类里面也是这样写的
...是看走眼了。。
一个低级错误
if($i-> imagestauts == 1)
是status
如果不加这个判断 if($i->imagestauts == 1) 就能得到get值
加上调试:
else{
echo to else;
if($i->imagestauts == 1){
echo to status;
$sql=insert into json_bbs values('','.$gettitle.','.$getcontent.','','.time().','');
mysql_query($sql);
}
}
然后看看是哪块的问题。
一个低级错误
if($i-> imagestauts == 1)
是status
如果不加这个判断 if($i->imagestauts == 1) 就能得到get值
那不是没得到值,而是imagestauts不等于1,根本就没有走到这个代码块。
一个低级错误
if($i-> imagestauts == 1)
是status
如果不加这个判断 if($i->imagestauts == 1) 就能得到get值
那不是没得到值,而是imagestauts不等于1,根本就没有走到这个代码块。
但是我把 $sql=insert into json_bbs values('',' .$gettitle.',' .$getcontent.','','.time().',''); 加红的地方换成 随便什么字符 就能插入到数据库
if($i->imagestauts == 1) 这一步是通过了的。
这个是取消了get值 随便输入的字符:
这个是取的get值
一个低级错误
if($i-> imagestauts == 1)
是status
如果不加这个判断 if($i->imagestauts == 1) 就能得到get值
那不是没得到值,而是imagestauts不等于1,根本就没有走到这个代码块。
但是我把 $sql=insert into json_bbs values('',' .$gettitle.',' .$getcontent.','','.time().',''); 加红的地方换成 随便什么字符 就能插入到数据库
先把调试代码加上,sql也echo出来,看看结果。
先把调试代码加上,sql也echo出来,看看结果。
结果在上面。
就是说图片还是可以上传的了,对吧?
你的文字和图片是分别上传的,所以你的接收程序被执行了两次
一次是只有 get 过来的文字数据
一次是只有 upload 过来的图片
你需要做到的是:能识别这两次数据是来自同一浏览器的同一次提交(看代码图片是在提交的时候选择的,对吧?)
嗯,你的 uexuploadermgr.createuploader(1,uploadhttp); 放错位置了,原来是对的
为了识别是来自同一浏览器,你可以使用 cookie 最好是 session 方便记录状态
为了识别是来自同一次提交,你可以在 url 上附加序号
大致是这个样子 var uploadhttp = http://localhost/json/bbs/index.php;var num = 0;function upload(){ var url = uploadhttp + '?t=' + num; if($$(fb-title).value!='' && $$(fb-content).value!='' && document.getelementbyid(showpic).src==){ uexuploadermgr.createuploader(1,url); var fbtitle = $$(fb-title).value; var fbcontent = $$(fb-content).value; url += '&title='+fbtitle+'&content='+fbcontent+&imgshows=none; $.getjson(url,function(data){ });....

session_start();if(isset($_session['t']) && $_session['t'] == $_get['t']) { //同一次提交 //根据传入的数据,修改数据库}else { $_session['t'] = $_get['t']; //根据传入的数据,插入数据库 $_session['last'] = 上一次插入的 id ,用作修改是的凭据}

就是说图片还是可以上传的了,对吧?
你的文字和图片是分别上传的,所以你的接收程序被执行了两次
一次是只有 get 过来的文字数据
一次是只有 upload 过来的图片
你需要做到的是:能识别这两次数据是来自同一浏览器的同一次提交(看代码图片是在提交的时候选择的,对吧?)
嗯,你的 uexuploadermgr.createuploader(1,uploadhttp); 放错位置了,原来是对的
为了识别是来自同一浏览器,你可以使用 cookie 最好是 session 方便记录状态
为了识别是来自同一次提交,你可以在 url 上附加序号
大致是这个样子 var uploadhttp = http://localhost/json/bbs/index.php;var num = 0;function upload(){ var url = uploadhttp + '?t=' + num; if($$(fb-title).value!='' && $$(fb-content).value!='' && document.getelementbyid(showpic).src==){ uexuploadermgr.createuploader(1,url); var fbtitle = $$(fb-title).value; var fbcontent = $$(fb-content).value; url += '&title='+fbtitle+'&content='+fbcontent+&imgshows=none; $.getjson(url,function(data){ });....

session_start();if(isset($_session['t']) && $_session['t'] == $_get['t']) { //同一次提交 //根据传入的数据,修改数据库}else { $_session['t'] = $_get['t']; //根据传入的数据,插入数据库 $_session['last'] = 上一次插入的 id ,用作修改是的凭据}

这样子不行,图片和文字 是一起上传的  
if($$(fb-title).value!='' && $$(fb-content).value!='' && document.getelementbyid(showpic).src==)//这个是判断有没有图片 这个是没有图片 直接就插入数据库了
if($$(fb-title).value!='' && $$(fb-content).value!='' && document.getelementbyid(showpic).src!=)//这个是有图片的 有图片 就执行上传图片的操作。
执行了图片的操作后,
if($i->imagestauts == 1) 判断图片是否是完成了上传。
如果完成了上传,就把文字和图片一起插入数据库,不是分开执行的。
现在就是 if($i->imagestauts == 1){ 在这里面不能获取get的值。 如果把 $_get['title']换成随便什么字符都行} 要怎么说你才能明白是分两次上传的呢?
这是上传文字,get方式,不可能上传文件。上传文件至少需要是post方式
$.getjson(url,function(data){
这是创建一个上传组件,没有表单只能用组件上传
uexuploadermgr.createuploader(1,uploadhttp);
补充一下
正因为是分作两次提交的,所以才会有你另一个帖子中的两条记录的问题
应该说这现在的代码远没有你另一帖的代码合理
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product