太奇怪了!在没有条件控制代码的情况下PHP代码一次执行了二遍。 MsgBox();这个是什么?这两句很奇怪unset($db);exit('注册成功!'); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 MSGBOX是一个自定义对话框函数,这个没问题的。 function MsgBox($Message,$n,$URL) { $Copyright = '\n\n Copyright@2006 by XXX.COM'; echo '<script language=javascript>alert("'.$Message.$Copyright.'");'; If ($n == 1) echo 'history.go(-1);';//后退 elseif ($n == 2) echo 'window.close();';//关闭 elseif ($n == 3) echo 'parent.location.href="'.$URL.'";';//跳转 echo '</script>'; return; } unset($db);exit('注册成功!');这二句是先销毁$db数据库变量然后结束程序,并输出注册成功 请大家帮帮我。我一直在线。太奇怪了,为什么会执行两遍ChkExist函数。以下是ChkExist函数: //========== 判断是否存在 ========== //参数:$tbl_name:表名,$field_name:字段名,$value_name:数值 function ChkExist($tbl_name,$field_name,$value_name) { global $db; $sql = "select ".$field_name." from ".$tbl_name." where ".$field_name." = '".$value_name."'"; //echo $sql; $result = $db->query($sql); $num_results = $result->num_rows; if ($num_results != 0) $mess = 'false'; //存在 else $mess = 'true'; //不存在 unset($sql); return $mess; } 你把 //echo $sql; 开开,然后看一下,是不是输出二次SQL , 检查一下 SQL 的语句有没有问题。 把代码独立出来,确定没有其他的代码,干扰到程序运行。看流程,不可能会执行到二遍的ChkExist。 在你执行insert用户成功之后程序都exit了,怎么会再回去执行那个函数呢? Please show us the whole codes of the check login page. 代码都有了啊。就是在执行以下这段会员注册代码的问题。比如我要注册一个aaa会员帐号,数据库中的确没有这个帐号,应该是可注册的,可是提交之后,提示“会员帐号已存在!”,一开始以为判断会员帐号是否存在的函数ChkExist写错了,经测试后发现,这个函数ChkExist没有写错,而是程序先完成insert into之后,不知道哪里又返回到上面执行函数ChkExist,再报出的提示。问题就在为什么又回没到上面来,照理说按顺序执行,先判断帐号不存在,则insert,然后再提示“注册成功”,可现在变成了,先判断帐号不存在,然后insert,然后再判断帐号是否存在。太奇怪了。<?php include_once('../Library/Conn.php'); if ($_SESSION['IdentCode'] == $_POST['IdentCode'])//验证码 { $user_name = $_POST['user_name']; //会员帐号 $user_pswd = md5($_POST['user_pswd']); //会员密码 $user_name_mess = ChkExist('tbluser','user_name',$user_name); //判断会员帐号是否存在 if ($user_name_mess == 'false') { MsgBox('会员帐号已存在!','1','null'); //若存在则返回MsgBox函数 exit; } if ($user_name_mess == 'true' and $user_email_mess == 'true') { $sql = "insert into tbluser (user_name,user_pswd) values ('".$user_name."','".$user_pswd."')"; $result = $db->query($sql); if ($result) { unset($db); exit('注册成功!'); } else { MsgBox('未知原因导致注册失败,请联系网站技术支持!','1','null'); exit; } } } ?> exit('注册成功!');这句根本没有输出 $result = $db->query($sql); if ($result) { unset($db); exit('注册成功!'); }检查$result的值。你使用了自定义的类,谁知道插入时$db->query($sql)会返回什么? Are the other functions like msgbox,checkexist defined in the page too??? $result的是1,对的。我将MsgBox和ChkExist两个函数都帖出来了,在二楼和四楼。 Maybe you sumit the data twice.....check the submit file. 很少见人这样用unset($db); 提交之前的页面JAVASCRIPT有没有重复提交2次的情况?发出来看看! 浏览器是这样,不用管的,不用 alert 这种东西就没事 怀疑是ChkExist的问题。有这么一句$result = $db->query($sql);$num_results = $result->num_rows;//这行好像不对你把你的db类贴出来看看,或者在主程序的$user_name_mess = ChkExist('tbluser','user_name',$user_name); //判断会员帐号是否存在这一句下面echo $user_name_mess;看看填入一个已有的用户名后输出什么值 php向数据库中插入ip地址,有必要在插入之前将ip地址整形化么?为了以后方便比对。 我安装的是phpstudy2010我想试着进phpmyadmin但要我登陆 php创建中文文件夹乱码的问题 php请问如何过滤特别字符 请教PHP编辑器 关于登录的 调用JS文件不能运行了 正则表达式请教 请教网站开发高手一些生成静态页面的内容发布系统的问题。 初学者请教,请各位大侠不要不屑于回答! PHP作为16进制修改器,有些难办问题 mysql访问被拒绝
function MsgBox($Message,$n,$URL)
{
$Copyright = '\n\n Copyright@2006 by XXX.COM';
echo '<script language=javascript>alert("'.$Message.$Copyright.'");'; If ($n == 1)
echo 'history.go(-1);';//后退
elseif ($n == 2)
echo 'window.close();';//关闭
elseif ($n == 3)
echo 'parent.location.href="'.$URL.'";';//跳转
echo '</script>'; return;
}
exit('注册成功!');这二句是先销毁$db数据库变量
然后结束程序,并输出注册成功
//参数:$tbl_name:表名,$field_name:字段名,$value_name:数值
function ChkExist($tbl_name,$field_name,$value_name)
{
global $db;
$sql = "select ".$field_name." from ".$tbl_name." where ".$field_name." = '".$value_name."'";
//echo $sql;
$result = $db->query($sql);
$num_results = $result->num_rows;
if ($num_results != 0)
$mess = 'false'; //存在
else
$mess = 'true'; //不存在 unset($sql);
return $mess;
}
比如我要注册一个aaa会员帐号,数据库中的确没有这个帐号,应该是可注册的,可是提交之后,提示“会员帐号已存在!”,一开始以为判断会员帐号是否存在的函数ChkExist写错了,经测试后发现,这个函数ChkExist没有写错,而是程序先完成insert into之后,不知道哪里又返回到上面执行函数ChkExist,再报出的提示。问题就在为什么又回没到上面来,照理说按顺序执行,先判断帐号不存在,则insert,然后再提示“注册成功”,可现在变成了,先判断帐号不存在,然后insert,然后再判断帐号是否存在。太奇怪了。<?php
include_once('../Library/Conn.php');
if ($_SESSION['IdentCode'] == $_POST['IdentCode'])//验证码
{
$user_name = $_POST['user_name']; //会员帐号
$user_pswd = md5($_POST['user_pswd']); //会员密码
$user_name_mess = ChkExist('tbluser','user_name',$user_name); //判断会员帐号是否存在
if ($user_name_mess == 'false')
{
MsgBox('会员帐号已存在!','1','null'); //若存在则返回MsgBox函数
exit;
}
if ($user_name_mess == 'true' and $user_email_mess == 'true')
{
$sql = "insert into tbluser (user_name,user_pswd) values ('".$user_name."','".$user_pswd."')";
$result = $db->query($sql);
if ($result)
{
unset($db);
exit('注册成功!');
}
else
{
MsgBox('未知原因导致注册失败,请联系网站技术支持!','1','null');
exit;
}
}
}
?>
这句根本没有输出
if ($result)
{
unset($db);
exit('注册成功!');
}检查$result的值。
你使用了自定义的类,谁知道插入时$db->query($sql)会返回什么?
我将MsgBox和ChkExist两个函数都帖出来了,在二楼和四楼。
unset($db);
有这么一句
$result = $db->query($sql);
$num_results = $result->num_rows;//这行好像不对你把你的db类贴出来看看,或者在主程序的
$user_name_mess = ChkExist('tbluser','user_name',$user_name); //判断会员帐号是否存在
这一句下面echo $user_name_mess;看看填入一个已有的用户名后输出什么值