使用if条件使用python比较密码

使用if条件使用python比较密码,python,html,mysql,apache,localhost,Python,Html,Mysql,Apache,Localhost,我有HTML表单来获取名称和密码,python代码用来获取输入数据并存储在变量first_name和password中 对于给定的名称,使用WHERE子句从数据库获取存储的密码。 通过使用if条件,我尝试比较从数据库获取的密码和从表单输入的密码。如果它们相等,则执行一些操作。如果不相等,则执行一些其他条件。但问题是我无法理解如何分配if条件。 我的尝试如下所示: #!"C:\python34\python.exe" import cgitb ,cgi import sys import mysq

我有HTML表单来获取名称和密码,python代码用来获取输入数据并存储在变量first_name和password中

对于给定的名称,使用WHERE子句从数据库获取存储的密码。 通过使用if条件,我尝试比较从数据库获取的密码和从表单输入的密码。如果它们相等,则执行一些操作。如果不相等,则执行一些其他条件。但问题是我无法理解如何分配if条件。 我的尝试如下所示:

#!"C:\python34\python.exe"
import cgitb ,cgi
import sys
import mysql.connector
cgitb.enable()
form = cgi.FieldStorage() 
print("Content-Type: text/html;charset=utf-8")
print()

# Get data from fields
first_name = form.getvalue('first_name')
password = form.getvalue('pass')
print (password)
conn = mysql.connector.connect(host='localhost',port='8051',
                                       database='test',
                                       user='root',
                                       password='next')                                
cursor = conn.cursor()                                 
if conn.is_connected():
    print('Connected to MySQL database')
cursor.execute("""SELECT pass FROM tablename1 where  name = '%s'""" % (first_name))

for row in cursor():
    if(password == row):
        print("sucess")
    else:
        print("fail")

请检查我的密码。并给出一些建议。

当用户第一次注册时,您应该像这样保存他的密码:

$password = password_hash("rasmuslerdorf", PASSWORD_DEFAULT);
<?php
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq'; // you get it from your database

if (password_verify('rasmuslerdorf', $hash)) { // 'rasmuslerdorf' is what user entered
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}
?>
这应该输出类似于
$2y$10$.vga1o9wmrjrwavxd98hnogsnpdczlqm3jq7kned1rvagv3fykkkk1a的内容

您应该将其存储在数据库中

然后您应该像这样验证密码:

$password = password_hash("rasmuslerdorf", PASSWORD_DEFAULT);
<?php
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq'; // you get it from your database

if (password_verify('rasmuslerdorf', $hash)) { // 'rasmuslerdorf' is what user entered
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}
?>

当用户第一次注册时,应按如下方式保存其密码:

$password = password_hash("rasmuslerdorf", PASSWORD_DEFAULT);
<?php
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq'; // you get it from your database

if (password_verify('rasmuslerdorf', $hash)) { // 'rasmuslerdorf' is what user entered
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}
?>
这应该输出类似于
$2y$10$.vga1o9wmrjrwavxd98hnogsnpdczlqm3jq7kned1rvagv3fykkkk1a的内容

您应该将其存储在数据库中

然后您应该像这样验证密码:

$password = password_hash("rasmuslerdorf", PASSWORD_DEFAULT);
<?php
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq'; // you get it from your database

if (password_verify('rasmuslerdorf', $hash)) { // 'rasmuslerdorf' is what user entered
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}
?>

你不应该这样做。密码不应该以纯文本的形式存储和比较,您应该使用satting和hash。如果你不知道自己在做什么,我强烈建议您使用现有的库,而不是尝试使用自己的库。@jonrsharpe它类似于注册表,您可以在其中输入密码存储在数据库中的详细信息和密码。稍后,如果您登录,它将从数据库中获取密码,并检查当前密码是否正确。这就是我要做的。但我不明白你的建议。请任何人检查一下使用if和for的语法是否正确。因为这不是印刷成功,也不是失败。我知道你想做什么,我告诉你你做得不对。答案告诉你如何做得更好。至于为什么
密码!=行
,为什么不尝试打印(repr(密码))和打印(repr(行))来找出原因?您不应该这样做。密码不应该以纯文本的形式存储和比较,您应该使用satting和hash。如果你不知道自己在做什么,我强烈建议您使用现有的库,而不是尝试使用自己的库。@jonrsharpe它类似于注册表,您可以在其中输入密码存储在数据库中的详细信息和密码。稍后,如果您登录,它将从数据库中获取密码,并检查当前密码是否正确。这就是我要做的。但我不明白你的建议。请任何人检查一下使用if和for的语法是否正确。因为这不是印刷成功,也不是失败。我知道你想做什么,我告诉你你做得不对。答案告诉你如何做得更好。至于为什么
密码!=行
,为什么不尝试打印(repr(密码))和打印(repr(行))来找出原因?您不应该这样做。密码不应该以纯文本的形式存储和比较,您应该使用satting和hash。如果你不知道自己在做什么,我强烈建议您使用现有的库,而不是尝试使用自己的库。@jonrsharpe它类似于注册表,您可以在其中输入密码存储在数据库中的详细信息和密码。稍后,如果您登录,它将从数据库中获取密码,并检查当前密码是否正确。这就是我要做的。但我不明白你的建议。请任何人检查一下使用if和for的语法是否正确。因为这不是印刷成功,也不是失败。我知道你想做什么,我告诉你你做得不对。答案告诉你如何做得更好。至于为什么
密码!=行
,为什么不尝试
打印(repr(password))
打印(repr(row))
以找出原因?如果我想在数据库中存储密码或名称,然后提取并比较呢。我问的是比较而不是验证。我已经编辑了答案。这就是您想要做的吗?如果我想在数据库中存储密码或名称,然后获取和比较,该怎么办?我问的是比较,而不是验证。我已经编辑了答案。这就是您想要做的吗?如果我想在数据库中存储密码或名称,然后获取和比较,该怎么办?我问的是比较,而不是验证。我已经编辑了答案。这就是你想做的吗?