html中的输入框元素:
<input id="passwordfield" type="password" class="DefaultInputStyle">
html中的button元素:
<button class="DefaultButtonStyle" onclick="trylogin(passwordfield.value)" ">登录</button>
html中的script脚本内容:
<script>
function trylogin(str) {
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("usernamefield").value = "successful";
}
}
xmlhttp.open("GET", "CheckUserNameAndPassword.php", true)
xmlhttp.send();
}
</script>
SQLServer的udl文件属性:
[oledb]
; Everything after this line is an OLE DB initstring
Provider=SQLOLEDB.1;Password=12345;Persist Security Info=True;User ID=sa;Initial Catalog=Diary;Data Source=DESKTOP-LBLP1PJ\SQLEXPRESS01
SQL数据库中的表和内容
如果我想要在点击按钮时,将输入框中的文本作为name,查找数据库中匹配的value值并重写进输入框,那么php文件的代码该怎么写呢?
下面示例居于odbc链接mssqlserver【注意:在 php.ini 中将 extension=odbc,extension=pdo_odbc前面的分号(;)去掉开启odbc】。不过题主既然是php,干嘛不用标配数据库mysql。
输入和验证逻辑共用一个页面
CheckUserNameAndPassword.php
<meta charset="utf-8">
<?php
//同一个页面判断是否提交了数据在做验证
if(isset($_GET["username"])&&isset($_GET["password"])){
$username=$_GET["username"];
$password=$_GET["password"];
$con = odbc_connect('DRIVER={SQL Server};SERVER=.;DATABASE=test','sa','123');
//$con = odbc_connect('DRIVER={SQL Server};SERVER=DESKTOP-LBLP1PJ\\SQLEXPRESS01;DATABASE=test','sa','12345');//题主的驱动应该这样
$query = "select * from mytable where name='${username}' and [value]='${password}'";
$result = odbc_do($con,$query);
$count=odbc_num_rows($result);
ob_clean();//清除缓存,就是去掉上面的meta标签内容
echo $count; //输出账号密码对应的记录数量
die();//结束输出
}
?>
<form id="myform1">
<div>账户名称</div>
<input id="usernamefield" name="username" type="text" autocomplete="off" />
<div>账户密码</div>
<input id="passwordfield" name="password" type="password" autocomplete="off" />
<button onclick="Tryloginsystem()" type="button">登录</button>
</form>
<script type="text/javascript">
function Tryloginsystem(str) {
var xhr=new XMLHttpRequest();
//get提交需要将数据放到url后,post的话放到xhr.send中发送数据,而且注意设置content-type为application/x-www-form-urlencoded
xhr.open('get','CheckUserNameAndPassword.php?username='+encodeURIComponent(usernamefield.value)+'&password='+encodeURIComponent(passwordfield.value));
xhr.onreadystatechange=function(){
if(4==xhr.readyState){
var text=xhr.responseText;
if(200==xhr.status)usernamefield.value=text=='0'?'用户名或者密码错误!':'successful';
else alert('服务器出错\n'+text);
}
};
xhr.send(null);
}
</script>