AJAX与PHP(PHP笔记)--动态验证用户名

来源:互联网 发布:linux sqlite3 安装 编辑:程序博客网 时间:2024/06/06 02:24

在PHP基础的学习过程中经常会遇到对页面的局部刷新。

比如说,我们在填写用户名的同时,对数据库中的信息进行验证,检查是否充分。

这时就要用到AJAX实现页面的动态加载。

下面例子是简单的PHP与AJAX交互的方法:
PHP+AJAX+MySQL
首先是html部分

ajax.html

<html><head>    <!--加载jquery库-->    <script src="http://code.jquery.com/jquery-latest.js"></script>    <!--加载js-->    <script type="text/javascript" src="ajax_test.js"></script></head><body>    <input class="input" type="text" name="name" onkeyup="nameCheck(this.value)"></body></html>

然后是AJAX部分:
ajax_test.js

/*    动态检查用户名是否重复    当用户名栏有键盘动作时调用    会通过PHP检查MySQL数据库中用户名是否等于输入*/function nameCheck(str) {    //判断输入是否不为空    if (str.length !== 0) {        //不为空则启动AJAX进行局部刷新        if (window.XMLHttpRequest) {            // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行的代码            xmlhttp = new XMLHttpRequest();        } else {            //IE6, IE5 浏览器执行的代码            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");        }        //处理函数        xmlhttp.onreadystatechange = function() {            //readyState为4时服务器响应完成            //status=200时交易成功             if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {                //判断PHP返回值                if (xmlhttp.responseText == '1') {                    //返回1说明用户名重复,弹出窗口                    alert("用户名重复!");                }             }        };        //规定请求的类型、URL 以及是否异步处理请求。        xmlhttp.open("GET", "checkName.php?name=" + str, true);        //发送        xmlhttp.send();    }}

之后是处理数据库的php部分

checkName.php

<?php/*    该脚本用于判断数据库中是否存在AJAX传来的值*///从请求URL地址中获取 name参数$name=$_GET["name"];//通过mysqli连接数据库//参数分别为(服务器地址,用户名,密码,数据库名)$con = new mysqli("localhost","root","","test");//判断数据库连接是否成功if ($con ->connect_error) {    //die()函数--->终止脚本并输出信息    die("数据库连接失败:".connect_error);}//SQL语句$sql = "SELECT name FROM User WHERE Name = '".$name."'";//调用mysqli的query()方法查询$result = $con->query($sql);//关闭连接$con->close();//判断结果并输出num_rows为行数if ($result->num_rows != 0) {    //如果存在相同信息则输出'1'    echo('1');}else{    //如果不存在相同信息则输出'0'    echo('0');}?>

我在数据库中插入过admin这个用户
所以,结果如下:
这里写图片描述

0 0