php過濾空值的問題
這個要死的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表單:
登入名稱
名稱
新密碼
12123
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 檢查變數是否定義。
沒有定義放入變數當然可以認為是空
但值為空白的變數也是變數呀
所以逆命題不成立