以下是我在脚本中使用的内容:
<script type="text/javascript">
function kontroluser()
{
$('#sonuc_geluser').html('');
var val = $('#username').val(); //Input'da belirttiğimiz #kullanici_adi ID'sinin değeri
$.get('kontrol_user.php?ku='+val, function(data) {
$('#sonuc_geluser').html(data);
if(data.length > 8){
document.getElementById("test11").disabled = true;
}else {
document.getElementById("test11").disabled = false;
}
$('#username').addClass('error');
});
}
</script>
这是我的输入文件:
<input class="text-input small-input required" type="text" name="user_id" placeholder="AP14XXXX" onchange="kontroluser();" id="username"/>
然后我写了这个PHP代码来检查重复的值:
<?php
require_once('includes/config.php');
$ku = $_GET['ku'];
$usersQuery = "SELECT user_id FROM user where user_id='$ku'";
$users = mysqli_query($link, $usersQuery);
$kay_Sey = mysqli_num_rows($users);
if($kay_Sey > 0)
{
echo "Username already exists";
}
else {
echo '';
}
?>
,但这个只是这样检查,例如:当我用id AP1411111注册新用户时,然后当我用相同的id注册另一个用户并像这样放置昏迷AP141111时,它不检查重复???为什么
Yuo可以使用php函数similar_text()
<?php
similar_text("AP1411111","AP141111,",$percent);
echo $percent;
//88%
?>
你可以定义一个差值的最小值,比方说,80%,如果这个值高于这个%,假设它是重复的。
另一种选择是使用mysqlLIKE函数:
SELECT user_id FROM user where user_id LIKE '%$ku%';
以上内容将匹配anythingAP1411111
anything,如果您从DB中得到任何结果,则假设重复。
更新:
根据你的评论,我更新了我的答案。在比较字符串之前清除任何非字母数字字符,如下所示:
if(isset($_GET['ku']))
{
$ku = $_GET['ku']; //ex: AP41,113_&xW
$ku = preg_replace('/([^a-zA-Z0-9]+)/i', '', $ku ); //AP41113xW
$ku = preg_replace('/^.*?(AP[0-9]{1,}).*?$/i', '$1', $ku );//AP41113
//the rest of your code
}
示例