我已經沿着一個ajax查找tutorial通知用戶,如果用戶名已被採取。ajax mysql查找不返回正確的結果爲多字字符串
所以控制器語法是:
<?php
class Login extends CI_Controller
{
function index()
{
$this->load->view('loginView');
}
function getResultfromdb($username){
$this->db->where('username',$username);
$query = $this->db->get('users')->num_rows();
if($query == 0) echo 'userOk';
else echo 'userNo';
}
}
的觀點是:
<html>
<head>
<title>Check User Name</title>
<link type="text/css" rel="stylesheet" href="<?=base_url()?>css/style.css"/>
</head>
<body>
<form method="post" action="">
<label for="username">Enter Your Name</label>
<input type="text" id="username"/>
<span class="checkUser" ></span>
<input type="hidden" class="hiddenUrl"/>
</form>
<script type="text/javascript" src="<?=base_url()?>js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="<?=base_url()?>js/check.js"></script>
</body>
</html>
的check.js是:
$(document).ready(function(){
$('#username').blur(function(){
if($('#username').val().length >= 3)
{
var username = $('#username').val();
getResult(username);
}
return false;
})
function getResult(name){
var baseurl = $('.hiddenUrl').val();
$('.checkUser').addClass('preloader');
$.ajax({
url : baseurl + 'index.php/login/getResultfromdb/' + name,
cache : false,
success : function(response){
$('.checkUser').removeClass('preloader');
if(response == 'userOk') $('.checkUser').removeClass('userNo').addClass('userOk');
else $('.checkUser').removeClass('userOk').addClass('userNo');;
}
})
}
})
如前所述,這個偉大的工程。所以它會完美驗證bob
和andy
。但它在bob smith
和andy jones
上失敗。如何修改代碼來驗證帶空格的字符串?
感謝一如既往,
更不用說顯而易見的SQL注入。 – Iraklis 2013-03-02 12:38:32
當使用自己的活動記錄時,CI轉義SQL注入。 – 2013-03-02 12:41:31
我的錯誤,我在考慮不驗證用戶輸入,因爲他沒有使用表單驗證類。 – Iraklis 2013-03-02 12:46:32