나는 통신하는 별도의 스크립트에서 2 가지 기능을 가지고 있습니다. 값이 존재하면 변수는 % username %로 설정되어야합니다. 값이 존재하지 않으면 "없음"으로 설정해야합니다. 변수를 none으로 설정하면 함수가 계속해서 새 계정을 만들어야합니다. 변수가 사용자 이름으로 설정된 경우, 함수는 계속되어야합니다. 그래서 왜 일관성이없고 엉뚱한 결과가 나옵니까? 가 포함되지 않은 다른 함수 호출로 다음과 같은Python 값 혼동
기능, 그들은 실행되지 않습니다 :
def database_get_user_details(user_database, username, detail):
value = "None"
rows = ((users_db_curs.execute("SELECT * FROM '" + user_database + "' WHERE username='" + username + "'"))).fetchall()
for row in rows:
if rows:
if detail == ("userID") : value = str(row[1])
elif detail == ("username") : value = str(row[2])
elif detail == ("password") : value = str(row[3])
elif detail == ("creator_exp"): value = str(row[4])
else : value = "None"
else:
value = "None"
return value
def game_register(username_table_name):
while True:
while True:
user_ID = raw_input("E-mail address: ")
if user_ID != "":
break
while True:
username = raw_input("Username : ")
if username != "":
break
while True:
password = raw_input("Password : ")
if password != "":
password = password.encode("hex")
break
usr = database_get_user_details(username_table_name, username, "username")
print usr
if (usr != "None") or (usr != None):
print usr
print "Username already taken!"
pause()
else:
database_create_user(username_table_name, user_ID, username, password, "250")
print "Successfully created %s with password: %s" %(username, password.decode("hex"))
pause()
break
주의 사항을, 나는 보안에 대한 실제 암호 암호화 알고리즘을 포함하지 않은 - 그냥 설정 이 예에서는 16 진수로 인코딩됩니다.
편집 : 나는) (random.choice를 호출하고있는 것처럼
그것은 거의 내가 함수가 새 사용자를 생성 여부에 관한 어떤 일관성을 찾을 수 있습니다 설명 잊어 버렸거나 하더군요 사용자 이름이 이미 사용되었습니다.
당신이 당신의 "이상한"결과를 설명 할 수 있어야한다? – jdi
@jdi 원래 게시물을 편집했습니다. 감사합니다. – abkai
나는 암호화가 일반적으로 꽤 공개적으로 유지된다는 것을 주목할 가치가 있다고 생각한다. 이 패러다임은 실제로 암호화 알고리즘을 크게 개선했습니다. 키가 충분히 큰 강력한 알고리즘 (또는 what-have-you)을 사용하고 있다면, 사람들이 그것에 대해 알아내는 것에 너무 많은 걱정을하지 않아야합니다. – Paragon