php过滤空值的有关问题
程序员文章站
2022-05-31 12:29:56
...
php过滤空值的问题
这个要死的POST,已经忽视了IF判断直接把空值写入数据库了
PHP接收端:
PHP表单:
JQUERY:
能正常注册,写入数据库,但是,如果前端的iput不输入,直接提交,接收端会无视前端POST过来的“空值”,暂且称为“空值”吧,我也不知道是什么值,反正接收端已经无视这个空值,直接写入数据库了,大神们,求解脱,我已经块暴走了……
------解决思路----------------------
这里无论如何都会执行到else代码里面去呀 你可以在最后一个else 输出一个值调试下 我想问题应该在这里
------解决思路----------------------
if(!isset($_POST['porgnum']) && empty($_POST['porgnum'])){
这个就不对了
应该是 if(isset($_POST['porgnum']) && empty($_POST['porgnum'])){
$_POST['porgnum'] 存在且为空
按你写的,如果 $_POST['porgnum'] 不存在的话,不就进到 else 分支了吗?
其他类同
------解决思路----------------------
你没理解isset是什么意思,把&&换成或者(
------解决思路----------------------
)
------解决思路----------------------
这个完全是你自己疏忽了或者对isset没有理解
------解决思路----------------------
isset 检查变量是否定义。
没有定义放入变量当然可以认为是空
但值为空的变量也是变量呀
所以逆命题不成立
这个要死的POST,已经忽视了IF判断直接把空值写入数据库了
PHP接收端:
if($_GET['do'] =='add'){
if(!isset($_POST['porgnum']) && empty($_POST['porgnum'])){
echo '未填写登录名!';
}else if(!isset($_POST['porgname']) && empty($_POST['porgname'])){
echo '未填写昵称!';
}else if(!isset($_POST['ppasswd']) && empty($_POST['ppasswd'])){
echo '未填写密码!';
}else{
$orgid =$_POST['porgnum'];
$orgname =$_POST['porgname'];
$passwd =$_POST['ppasswd'];
$author =$_POST['pauthor'];
$con = mysql_connect(DB_HOST,DB_USER,DB_PASSWD);
mysql_select_db(DB_NAME,$con);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER_SET_CLIENT=utf8");
mysql_query("SET CHARACTER_SET_RESULTS=utf8");
if(!mysql_query("INSERT INTO `".DB_PRE."menber` (orgnum, orgname, passwd, power) VALUES ('$orgid', '$orgname', '$passwd', '$author')")){
die('错误!代码:' .mysql_error());
}else{
echo '注册成功!';
};
mysql_close($con);
};
PHP表单:
登录名 名称 新密码 12
JQUERY:
function new_org(){
var orgnum = j('#orgnum').val();
var orgname = j('#orgname').val();
var passwd = j('#passwd').val();
var author = j('#author').val();
j.ajax({
type:"POST",
url:"action.php?do=add",
data:{
porgnum:orgnum,
porgname:orgname,
ppasswd:passwd,
pauthor:author
},
dataType:"html",
cache:false,
async:false,
error:function(){
alert("发送失败!");
},
success:function(msg){
j('.admin_display').html(msg);
alert(orgnum);
}
});
};
能正常注册,写入数据库,但是,如果前端的iput不输入,直接提交,接收端会无视前端POST过来的“空值”,暂且称为“空值”吧,我也不知道是什么值,反正接收端已经无视这个空值,直接写入数据库了,大神们,求解脱,我已经块暴走了……
------解决思路----------------------
这里无论如何都会执行到else代码里面去呀 你可以在最后一个else 输出一个值调试下 我想问题应该在这里
------解决思路----------------------
if(!isset($_POST['porgnum']) && empty($_POST['porgnum'])){
这个就不对了
应该是 if(isset($_POST['porgnum']) && empty($_POST['porgnum'])){
$_POST['porgnum'] 存在且为空
按你写的,如果 $_POST['porgnum'] 不存在的话,不就进到 else 分支了吗?
其他类同
------解决思路----------------------
你没理解isset是什么意思,把&&换成或者(
------解决思路----------------------
)
------解决思路----------------------
这个完全是你自己疏忽了或者对isset没有理解
------解决思路----------------------
isset 检查变量是否定义。
没有定义放入变量当然可以认为是空
但值为空的变量也是变量呀
所以逆命题不成立
相关文章
相关视频
上一篇: PHP输出一个等腰三角形的方法,php输出等腰三角形_PHP教程
下一篇: MySQL安装不上