关于执行操作前检查有没有登录的问题[已解决/答案在12#]
发布于:2022-01-17 09:50:54
#1 prince
问题是红字描述,何解?
//加了判断行点击链接后出现空白页面,后边的操作也没有成功function del_bxPic(){
if(!isset($_SESSION['username']))$this->jump(spUrl()); //加的代码是这行
$pic_id = $this -> spArgs('pic_id');
…………
…………
我把这句:
if(!isset($_SESSION['username']))$this->jump(spUrl());
注释掉执行就能正确执行.
2010-12-08 14:54:18
#2 jake
spUrl()没有参数的时候,默认是生成spUrl('main', 'index'),也就是回到首页。
if(!isset($_SESSION['username']))$this->jump(spUrl());
的意思是如果session的username没有set,那么就会跳转到spUrl('main', 'index')——首页。
2010-12-08 15:38:31
#3 prince
回复 2 jake 我的首页是登录页面,如果$_SESSION['username']没有设置的话就会跳到登录页面,如果设置了的话就会跳过这句执行后面的语句才是
2010-12-08 17:29:31
#4 jake
就是没有session就会跳转到首页,你做对了。
在这个判断之前输出一下session看看吧。
2010-12-08 17:45:52
#5 prince
回复 4 jake 我执行了(其它代码全部注释掉):
echo $_SESSION['username'];
是有输出而且正确的.
2010-12-08 18:12:55
#6 jake
if(!isset($_SESSION['username']))echo $_SESSION['username'];
exit();
2010-12-08 18:36:13
#7 prince
按这样也是空白的,没有任何东西
2010-12-08 18:49:42
#8 prince
发现一个情况:在没有数据库写操作的情况下都正常,比如这个
function modBxiangView(){
if(!isset($_SESSION['username']))$this->jump(spUrl()); //没登录就返回首页
$bxList = spClass('bxList');
$conditions = array('bx_id' => ($this -> spArgs('bx_id')));
$this -> results = $bxList -> find($conditions);
$this -> display("main_modBxiang.html");
}
2010-12-08 19:02:06
#9 prince
发个源码吧,又臭又长,不好意思
function delBxiang(){
//echo $_SESSION['acc_name'];
if(!isset($_SESSION['acc_name']))$this->jump(spUrl());//没登录就返回首页
$bx_album = spClass("bx_album");
$conditions = array('bx_id' => $this -> spArgs('bx_id'));
$photos = $bx_album -> findAll($conditions);//按条件查找所有符合条件的记录
if (is_null($photos)){
$bxList = spClass('bxList');
$bxList -> delete($conditions);
switch ($bxList){
case true;
$url = spUrl("main","bxList");
$msg = '成功删除包厢';
$this -> success($msg,$url);
break;
case false:
$url = spUrl("main","bxList");
$msg = '删除包厢失败,请重新登录再尝试,如再失败请报告管理员';
$this -> error($msg,$url);
break;
}
}else{
if (is_array($photos)){
$iCount = count($photos);
$delSucc = 0;
$delErr = 0;
for ($i = 0;$i < $iCount; $i++){
if (unlink('../img/user/'.$photos[$i]['picture'])){
$bx_album = spClass('bx_album');
$conditions = array('picture' => $photos[$i]['picture']);
$bx_album -> delete($conditions);
$delSucc++;
}else{
$delErr++;
$delFileErr = array_unshift($delFileErr,('../img/user/'.$photos[$i]['picture']));
}
}
$bxList = spClass('bxList');
$conditions = array('bx_id' => $this -> spArgs('bx_id'));
$bxList -> delete($conditions);
switch ($bxList){
case true;
$url = spUrl("main","bxList");
$msg = '成功删除包厢:'."/n".'删除包厢图片'.$delSucc.'张;'."/n".'未删除图片'.$delErr;
$this -> success($msg,$url);
break;
case false:
$url = spUrl("main","bxList");
$msg = '删除包厢失败,请重新登录再尝试,如再失败请报告管理员';
$this -> error($msg,$url);
break;
}
}
}
}
2010-12-08 19:18:16
#10 jake
echo !isset($_SESSION['acc_name']);
if(!isset($_SESSION['acc_name']))$this->jump(spUrl());//没登录就返回首页
exit();
不要删除其他代码,只用exit停止运行就可以了。
2010-12-08 19:20:16
#11 prince
回复 10 jake 没有用,还是一样
2010-12-08 20:05:31
#12 prince
找到问题所在了。问题是这句:
if (is_null($photos)){
过程是这样的,通过反复测试,发现有关联记录的就可以删除(即$photos不为空的情况下),后来把这句改为:
if (($photos == 0)or($photos < 0)){
就解决问题了
2010-12-08 21:39:50