我有一个用户名和密码的数据库.我需要创建一个"忘记密码"功能,让它在表中搜索用户名并返回该用户的密码.然后我希望它发送一封电子邮件说明名称和密码.
这是我为特定用户查询数据库的工作代码:
<?php
session_start();
include "config.php";
if($_POST['nameQuery']) {
$query = "SELECT * FROM myDatabase WHERE name = '" .$_POST['nameQuery']. "'";
$result = mysql_query($query);
if (mysql_num_rows($result) > 0) {
//User exists
echo '1';
} else {
mysql_query($query);
//User does not exist
echo '0';
}
}
?>
Run Code Online (Sandbox Code Playgroud) 我在ASP.NET中创建一个简单的项目,并使用此代码继续登录,检测角色并打开确切的页面.
string cmdText = "SELECT Username,Role FROM Login WHERE Username = '" + TextBox1.Text + "' AND Password = '" + TextBox2.Text + "'";
string username = "";
string role = "";
using (SqlCommand SelectCommand = new SqlCommand(cmdText, connectionstring))
{
SqlDataReader myReader;
connectionstring.Open();
myReader = SelectCommand.ExecuteReader();
while (myReader.Read())
{
username = myReader["Username"].ToString();
role = myReader["Role"].ToString();
}
myReader.Close();
Response.Redirect(role + ".aspx");
}
Run Code Online (Sandbox Code Playgroud)
我设置它role+".aspx"是因为我在if函数中遇到了一些奇怪的错误..它无法正常工作..
但仍然有问题重定向到页面..我注意到了这一点
因此,我对这个错误感到困惑,于是我决定检查SQL Server中的数据,并且有:
角色之后有5个空格.我试图删除它们.但是在保存数据后再次出现空间...我注意到同样的事情是名称和密码
但现在有9个空格..看起来像SQL Server Management Studio试图填写最多10个字母......
Username,password并且role是nchar(10)类型..是问题吗? …
爪哇 8
我有一个 POJO 类:
class User {
private String name;
private String password;
//... Getters / Setters ...
}
Run Code Online (Sandbox Code Playgroud)
我将用作实体类。
在 getter/setter for 中password,我想添加解密/加密逻辑。
public String getPassword() {
return EncryptionFactory.decryption(password);
}
public void setPassword(String password) {
this.password = EncryptionFactory.encryption(password);
}
Run Code Online (Sandbox Code Playgroud)
EncryptionFactory是一个加密/解密 a 的实用程序类String。
根据通用 Java 编码指南,如果我添加更改密码的逻辑,它是否破坏了设计或设计不良?
在使用它时,我从我的教授那里得到了糟糕的设计反馈。
我有一个名为server的注册表单,其中包含名称,IP,密码字段.表格将发送由运营商填写的数据,但问题是:
在插入验证码之前,密码将如何运行?
一些简短的例子:
表格
<form method=POST action=myActPage.php>
<input type=PASSWORD name=PWD value="" />
<input type=SUBMIT value=GO />
</form>
Run Code Online (Sandbox Code Playgroud)
问题就在这里---在交通之间---密码可以在这里被盗......如何防止密码发生?
PHP行动页面
if ($_POST) {
$pwd = $_POST['PWD'];
$pwd = md5($pwd);
$response = mysql_query("INSERT INTO tbl_pwd ('pwd') VALUES ('$pwd') ");
}
Run Code Online (Sandbox Code Playgroud)
感谢您对此事的任何想法.
编辑: 我真的花了将近两个小时在stackoverflow上搜索,我没有发现这个特定的问题,这就是问题的原因.毫无疑问"表单和php动作脚本之间 的流量" 重要说明:我正在寻找一种不使用SSL over HTTP的解决方案.
是否可以在没有用户模型的情况下使用Auth组件?我想只有我的应用程序的一个用户,所以我不想创建用户模型我只想用一个登录/密码登录,这将存储在php文件中.
<%@page import="java.sql.*"%>
<%@page import="java.util.*"%>
<%@page import="java.lang.*"%>
<%
String fname=request.getParameter("firstname");
String lname=request.getParameter("lastname");
String bday=request.getParameter("birthday");
String user="";
user = request.getParameter("username");
String pass="";
pass = request.getParameter("password");
try {
if(user.isEmpty() && pass.isEmpty()){
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/mydb", "root", "user");
String sql = "Insert into users (firstname, lastname, username, password) values('"+fname+"', '"+lname+"', '"+user+"', '"+pass+"')";
Statement stmt = conn.createStatement();
stmt.execute(sql);
conn.close();
response.sendRedirect("profile.jsp");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
%>
<html>
<body>
<form method="post">
First Name:
<input type="text" name="firstname"/> …Run Code Online (Sandbox Code Playgroud) 尝试将表单中的接收数据与db中的数据进行匹配.所以,如果我转储表格变量和表格,我可以看到有匹配,但coldfusion给了我这个......
列'Kirill'要么不在FROM列表中的任何表中,要么出现在连接规范中,并且不在连接规范的范围内,或者出现在HAVING子句中,并且不在GROUP BY列表中.如果这是CREATE或ALTER TABLE语句,则"Kirill"不是目标表中的列.
查询:
SELECT FIRST_NAME, PASSWORD
from APP.USERS_TASK
where FIRST_NAME = "#form.username#"
and PASSWORD = "#form.password#"
Run Code Online (Sandbox Code Playgroud)
同样的事情也可以通过url传递的id工作得很好.虽然有不同的表.
加密存储在具有强加密(AES 192左右)的数据库中的散列密码和盐渍密码是常识还是我们只是针对明星?
当然,加密密钥不在数据库本身,而是保存在安全的地方.
非常感谢!
可能重复:
在MySQL中使用什么函数来散列密码?
安全密码存储
加密密码后,将密码存储到数据库的最佳机制是什么?什么是加密方法和Java实现?
我的代码有问题总是遇到我不理解的错误.请帮助我的代码我想从db for login页面检索用户详细信息
string uname = TextBox1.Text.Trim();
string pass = TextBox2.Text.Trim();
try
{
con.Open();
string query = "SELECT user_name, user_password FROM [user] where user_name=@username and user_password=@password";
cmd.Parameters.Add("@username", SqlDbType.VarChar).Value = uname;
cmd.Parameters.Add("@password", SqlDbType.VarChar).Value = pass;
cmd = new SqlCommand(query, con);
cmd.ExecuteNonQuery();
rd = cmd.ExecuteReader();
if (rd.HasRows)
{
Response.Write("Login successful");
}
else
{
Response.Write("login Unsucessful");
}
}
catch (Exception)
{
throw;
}
finally
{
con.Close();
}
}
Run Code Online (Sandbox Code Playgroud) 我将用户名和密码存储在MySql数据库中.我使用以下代码根据数据库中的数据验证凭据以进行登录.代码工作正常.我的问题是这是不好的做法,是否有更好的方法来做到这一点.
我的方法是连接到该数据库,在List中提取和存储这些信息,并将它们与来自文本框输入的用户输入进行比较.
//Extracting information from the database and storing it in a List
public void Login()
{
MySqlCommand cmdReader;
MySqlDataReader myReader;
userQuery = "SELECT * FROM User";
string name = "Name";
string user = "UserName";
string pw = "Password";
string connString = "server=" + server + "; userid=" + userid + "; password=" + password + "; database=" + database;
try
{
conn.ConnectionString = connString;
conn.Open();
cmdReader = new MySqlCommand(userQuery, conn);
myReader = cmdReader.ExecuteReader();
while (myReader.Read())
{
string tempUser, tempPassword; …Run Code Online (Sandbox Code Playgroud) 我想捕捉从 C# 中的 SQL Server 存储过程返回的 -1, 0, 1 值。
SQL 服务器:
IF EXISTS(SELECT * FROM _Users WHERE UserName = @UserName AND [Password] != @Password)
BEGIN
RETURN -1
END
IF EXISTS(SELECT * FROM _Users WHERE UserName != @UserName AND [Password] != @Password)
BEGIN
RETURN 0
END
IF EXISTS(SELECT * FROM _Users WHERE UserName = @UserName AND [Password]= @Password)
BEGIN
RETURN 1
END
Run Code Online (Sandbox Code Playgroud)
C#
我们是否可以按照自己的意愿更改下面代码的返回值?
public User getUser(string name, string password)
{
User user = null;
using (var connection = Database.GetConnection()) …Run Code Online (Sandbox Code Playgroud) 这就是我想要使用的;
string insertQuery = @"insert into userinfo (UserName, FirstName, LastName,
E-mail, Password, Country)
values ( '" + uname + "', '" + fname +
"','" + lname + "', '" + email + "')";
Run Code Online (Sandbox Code Playgroud)
其中+之间的每个变量都是带有值的字符串变量.但是当我运行此命令时,我得到一些不正确的语法错误.
这是我得到的新错误;
errorSystem.Data.SqlClient.SqlException(0x80131904):字符串或二进制数据将被截断.该语句已终止.在System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔breakConnection,动作
1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1个wrapCloseInAction)在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,布尔callerHasConnectionLock,布尔asyncClose)在System.Data.SqlClient.TdsParser. System.Data.SqlClient.SqlCommand.RunExecuteReaderTds中的System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString)中的TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,Boolean&dataReady) (CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,Boolean async,Int32 timeout,Task&task,Boolean asyncWrite,SqlDataReader ds)at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String method,TaskCompletionSource1 completion, Int32 timeout, Task& task, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource1完成,字符串 …