Ajax提交表單數(shù)據(jù)到入庫的全盤操作過程是怎樣的,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
10年積累的成都做網(wǎng)站、網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有沂南免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
*******php項目中當(dāng)我們要對數(shù)據(jù)庫進行寫入操作時,有時會因為代碼沒有做防sql注入工作,導(dǎo)致各種不可預(yù)知的錯誤*******
1,index.htm 這是一個很簡單的注冊頁面l 我這是以ajax形式提交數(shù)據(jù)
復(fù)制代碼 代碼如下:
2,_process.php接收ajax提交數(shù)據(jù) 并做相關(guān)處理的文件
復(fù)制代碼 代碼如下:
header('Content-Type:text/html;charset=utf-8');
sleep(1);
$conn = MySQLi_connect("localhost","root","root","register") or die("Unable to connect!".mysqli_connect_error());
mysqli_query($link,"set names utf8");
$name = isset($_POST['name'])?mysqlQuotes(trim($_POST['name'])):'';
$ages = isset($_POST['ages'])?intval(trim($_POST['ages'])):'';
$pass = isset($_POST['pass'])?mysqlQuotes(trim($_POST['pass'])):'';
$addr = isset($_POST['addr'])?mysqlQuotes(trim($_POST['addr'])):'';
$email = isset($_POST['email'])?mysqlQuotes(trim($_POST['email'])):'';
if(empty($name)){
echo json_encode(array('res'=>-1,'msg'=>'請您認(rèn)真輸入姓名'));exit;
}
//查詢username在 tb_register 表中是否存在,不存在則入庫,存在則告知已注冊
$sql0 = "select count(1) as nums from tb_register where username='{$name}'";
$row0 = select_one($conn,$sql0);
if($row0['nums']>=1){
echo json_encode(array('res'=>-1,'msg'=>'對不起,該用戶名已被注冊!'));exit;
}
if(empty($ages)){
echo json_encode(array('res'=>-1,'msg'=>'請您認(rèn)真輸入年齡'));exit;
}
if(!preg_match("/^\d+$/",$ages)){
echo json_encode(array('res'=>-1,'msg'=>'請輸入合法的數(shù)字'));exit;
}
if(empty($pass)){
echo json_encode(array('res'=>-1,'msg'=>'請您認(rèn)真輸入密碼'));exit;
}
if(empty($addr)){
echo json_encode(array('res'=>-1,'msg'=>'請您認(rèn)真輸入地址'));exit;
}
if(empty($email)){
echo json_encode(array('res'=>-1,'msg'=>'請您認(rèn)真輸入郵箱'));exit;
}
if(!preg_match("/^[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z]+)+$/",$email)){
echo json_encode(array('res'=>-1,'msg'=>'您的郵箱格式不正確'));exit;
}
$add_day = date("YmdHis");
//以下是入庫操作
$sql = "insert into tb_register set username='{$name}',ages='{$ages}',password='{$pass}',address='{$addr}',email='{$email}',add_day='{$add_day}'";
mysqli_query($conn,$sql);
echo json_encode(array('res'=>1,'msg'=>'恭喜你,注冊成功!'));exit;
//預(yù)防m(xù)ysql注入攻擊函數(shù) 入庫數(shù)據(jù)
function mysqlQuotes($content){
if(!get_magic_quotes_gpc()) //先看看是否開啟自動過濾機制 未開啟則手動加函數(shù)過濾
{
$content = addslashes($content);
}
return stripslashes(htmlspecialchars($content));
}
function select_one($conn,$sql){
$res = mysqli_query($conn,$sql) or die("Failed".mysqli_error());
$result = array();
if(!empty($res)){
$result = mysqli_fetch_assoc($res);
}
mysqli_free_result($res);
return $result;
}
******以上 自定義函數(shù)mysqlQuotes中**********
Tips1, (PS:T不錯的PHP Q扣峮:276167802,驗證:csl)
addslashes 函數(shù)的作用是給指定的字符加上反斜杠,主要有以下特殊字符
單引號(') , 雙引號(") , 反斜杠(\) , NULL
Tips2,
htmlspecialchars 函數(shù)的作用是把一些特殊的字符轉(zhuǎn)換為html實體 ,這些特定的字符有:
& (和號) ==> &
" (雙引號) ==> "
' (單引號) ==> '
< (小于號) ==> <
> (大于號) ==> >
Tips3,
stripslashes 函數(shù)作用是刪除 由addslashes ()函數(shù)添加的飯斜杠,恢復(fù)原來的摸樣
如,$username 用戶輸入的是 Tom‘siy
存進數(shù)據(jù)庫的是加反斜杠的 Tom\‘siy;
取出來之則可以用stripslashes() 將其還原輸出 Tom‘siy
看完上述內(nèi)容,你們掌握Ajax提交表單數(shù)據(jù)到入庫的全盤操作過程是怎樣的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!