gpt4 book ai didi

javascript - 使用jsp和oracle数据库创建登录选项

转载 作者:行者123 更新时间:2023-12-03 11:08:27 25 4
gpt4 key购买 nike

我正在尝试创建一个社交网络,从而创建一个登录选项。基本工作是:收集电子邮件 ID 和密码并检查它们是否正确 -> 如果正确,则直接进入welcome.jsp 页面/如果错误,则通知用户。我使用的是oracle数据库连接。

以下是 login.jsp 部分的代码:

    <script>

var xmlhttp;
var s;

function checkDetails()
{
emailIn = document.getElementById("email").value;
pwIn = document.getElementById("pw").value;
alert(emailIn+" "+pwIn);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = showMessage;
xmlhttp.open("GET","matchDetails.jsp?EMAIL="+emailIn+"&PW="+pwIn, true);
xmlhttp.send(null);
}

function showMessage()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
alert(xmlhttp.readyState);
alert(xmlhttp.status);
var ans = xmlhttp.responseText;
alert("1."+ans);
if (ans == "WrongPw")
{
alert("2."+ans);
document.getElementById("emailCheck").innerHTML = "Incorrect password. Please try again";
document.getElementById("pw").value = "";
document.getElementById("pw").focus();
}
else if (ans == "WrongEmail")
{
alert("3."+ans);
document.getElementById("pwCheck").innerHTML = "The entered user id does not exist";
document.getElementById("email").value = "";
document.getElementById("pw").value = "";
document.getElementById("email").focus();
}
else if (ans == "BothWrong")
{
document.getElementById("emailCheck").innerHTML = "The entered user id does not exist";
document.getElementById("email").value = "";
document.getElementById("pw").value = "";
document.getElementById("email").focus();
}
else if (ans == "BothMatch")
{
alert("final: "+ans);
window.location.href("welcome.jsp");
}
}
}

</script>

另外,调用该函数的html部分如下:

    <form method="POST" name="frm1">                
Email id:</br>
<input type="text" id="email" name="email"></br></br>
<div id="emailCheck" value="">
Password:</br>
<input type="password" id="pw" name="pw" onblur="checkDetails()"></br></br>
<div id="pwCheck" value="">
</form>

接下来的 matchDetails.jsp 代码在这里:

    <%
Class.forName("oracle.jdbc.OracleDriver");
java.sql.Connection con = java.sql.DriverManager.getConnection("jdbc:oracle:thin:system/neha123@localhost:1521:XE");
java.sql.Statement stmt = con.createStatement();
java.sql.ResultSet rs, rs2;

String email = request.getParameter("EMAIL");
String pw = request.getParameter("PW");
rs = stmt.executeQuery("Select * from hallMembers where email='"+email+"' and pw='"+pw+"'");
String s="BothWrong";

if (rs.next())
{
session.putValue("EMAIL", email);
session.putValue("UNAME", rs.getString("fname"));
session.putValue("STMT",stmt);
s = "BothMatch";
}
else
{
rs2 = stmt.executeQuery("Select EMAIL from hallMembers where EMAIL='"+email+"'");
if (rs2.next()) { s = "WrongPw"; }
else { s = "WrongEmail"; }
}
out.write(s);
%>

我在大厅成员中有一个条目:电子邮件:neha@abc.com 和密码:helloneha。如果我输入正确的信息,showMessage() 总是显示 ans 中的响应是 WrongEmail。这种行为非常令人困惑,因此我也尝试使用各种警报语句来理解问题,但无济于事。

最佳答案

根据您的说法,“我在表 HallMembers 中有一个条目为:电子邮件:neha@abc.com 和密码:helloneha。如果我输入正确的信息,则 showMessage() 似乎在任何其他状态下都没有被调用如果响应结果是 WrongEmail”

这是真的,因为调用 sql 时你只得到一行,但在你的代码中你期望两次:

rs = stmt.executeQuery("Select email, pw from hallMembers where email='"+email+"' and pw='"+pw+"'");
String s="BothWrong";
rs.next();//first row
out.print(rs.getString(1));

if (rs.next())//second row
{

尝试删除第一个 rs.next ,它将光标放置到第一条记录,您在其中读取有效记录,然后再次尝试将光标移动到不存在的下一行,最终执行 else 部分,该部分显示密码错误或错误的电子邮件。

关于javascript - 使用jsp和oracle数据库创建登录选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27720327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com