Registration and login scriptThe perfect PHP login scriptLocal user registrationUser registration and loginRegistration and Login System for ApplicationPHP secure login scriptPython + MySQL Login system using Twilio APISecured registration scriptBasic object-oriented PHP login, logout, and registration scriptsPHP script security for new user registrationPDO login script
Pre-modern battle - command it, or fight in it?
Problem with TransformedDistribution
What does "Scientists rise up against statistical significance" mean? (Comment in Nature)
How should I respond when I lied about my education and the company finds out through background check?
C++ debug of nlohmann json using GDB
How do you respond to a colleague from another team when they're wrongly expecting that you'll help them?
Is aluminum electrical wire used on aircraft?
Strong empirical falsification of quantum mechanics based on vacuum energy density
Where did Edmond Malone place the Tempest in the chronology of Shakespeare's plays?
Did Swami Prabhupada reject Advaita?
How do I color the graph in datavisualization?
250 Floor Tower
What should you do if you miss a job interview (deliberately)?
What is Cash Advance APR?
Non-trope happy ending?
How to explain what's wrong with this application of the chain rule?
Count the occurrence of each unique word in the file
How can "mimic phobia" be cured or prevented?
Melting point of aspirin, contradicting sources
What is this called? Old film camera viewer?
Loading commands from file
Is it possible to have a strip of cold climate in the middle of a planet?
Can Legal Documents Be Siged In Non-Standard Pen Colors?
If infinitesimal transformations commute why dont the generators of the Lorentz group commute?
Registration and login script
The perfect PHP login scriptLocal user registrationUser registration and loginRegistration and Login System for ApplicationPHP secure login scriptPython + MySQL Login system using Twilio APISecured registration scriptBasic object-oriented PHP login, logout, and registration scriptsPHP script security for new user registrationPDO login script
$begingroup$
This is a registration and login script I have made in Python 3. It uses a MySQL database. In the future I might use it with my Blackjack game and add a row called money
, but for now I would like to hear your opinion about this script since I have little to no experience in SQL.
import cymysql
from getpass import getpass
def get_user_info():
while True:
email = input("Input your Email address (max. 64 chars.): ")
password = getpass("Input a password (max. 64 chars.): ")
if len(email) < 64 and len(password) < 64:
return email, password
def register(cur, email, password):
cur.execute("INSERT INTO `users` (`Email`, `Password`) VALUES (%s, %s)", (email, password))
print("You've succesfully registered!")
def login(cur, email, password):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s AND `Password`=%s LIMIT 1", (email, password))
rows = cur.fetchall()
if rows:
print("You've succesfully logged-in!")
else:
print("You failed logging-in!")
def check_account(cur, email):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s LIMIT 1", (email,))
row = cur.fetchone()
return row
def main():
conn = cymysql.connect(
host='127.0.0.1',
user='root',
passwd='',
db='david'
)
cur = conn.cursor()
email = ''
password = ''
email, password = get_user_info()
check = check_account(cur, email)
if check:
login(cur, email, password)
else:
register(cur, email, password)
cur.close()
conn.close()
if __name__ == '__main__':
main()
python python-3.x sql mysql
$endgroup$
add a comment |
$begingroup$
This is a registration and login script I have made in Python 3. It uses a MySQL database. In the future I might use it with my Blackjack game and add a row called money
, but for now I would like to hear your opinion about this script since I have little to no experience in SQL.
import cymysql
from getpass import getpass
def get_user_info():
while True:
email = input("Input your Email address (max. 64 chars.): ")
password = getpass("Input a password (max. 64 chars.): ")
if len(email) < 64 and len(password) < 64:
return email, password
def register(cur, email, password):
cur.execute("INSERT INTO `users` (`Email`, `Password`) VALUES (%s, %s)", (email, password))
print("You've succesfully registered!")
def login(cur, email, password):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s AND `Password`=%s LIMIT 1", (email, password))
rows = cur.fetchall()
if rows:
print("You've succesfully logged-in!")
else:
print("You failed logging-in!")
def check_account(cur, email):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s LIMIT 1", (email,))
row = cur.fetchone()
return row
def main():
conn = cymysql.connect(
host='127.0.0.1',
user='root',
passwd='',
db='david'
)
cur = conn.cursor()
email = ''
password = ''
email, password = get_user_info()
check = check_account(cur, email)
if check:
login(cur, email, password)
else:
register(cur, email, password)
cur.close()
conn.close()
if __name__ == '__main__':
main()
python python-3.x sql mysql
$endgroup$
add a comment |
$begingroup$
This is a registration and login script I have made in Python 3. It uses a MySQL database. In the future I might use it with my Blackjack game and add a row called money
, but for now I would like to hear your opinion about this script since I have little to no experience in SQL.
import cymysql
from getpass import getpass
def get_user_info():
while True:
email = input("Input your Email address (max. 64 chars.): ")
password = getpass("Input a password (max. 64 chars.): ")
if len(email) < 64 and len(password) < 64:
return email, password
def register(cur, email, password):
cur.execute("INSERT INTO `users` (`Email`, `Password`) VALUES (%s, %s)", (email, password))
print("You've succesfully registered!")
def login(cur, email, password):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s AND `Password`=%s LIMIT 1", (email, password))
rows = cur.fetchall()
if rows:
print("You've succesfully logged-in!")
else:
print("You failed logging-in!")
def check_account(cur, email):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s LIMIT 1", (email,))
row = cur.fetchone()
return row
def main():
conn = cymysql.connect(
host='127.0.0.1',
user='root',
passwd='',
db='david'
)
cur = conn.cursor()
email = ''
password = ''
email, password = get_user_info()
check = check_account(cur, email)
if check:
login(cur, email, password)
else:
register(cur, email, password)
cur.close()
conn.close()
if __name__ == '__main__':
main()
python python-3.x sql mysql
$endgroup$
This is a registration and login script I have made in Python 3. It uses a MySQL database. In the future I might use it with my Blackjack game and add a row called money
, but for now I would like to hear your opinion about this script since I have little to no experience in SQL.
import cymysql
from getpass import getpass
def get_user_info():
while True:
email = input("Input your Email address (max. 64 chars.): ")
password = getpass("Input a password (max. 64 chars.): ")
if len(email) < 64 and len(password) < 64:
return email, password
def register(cur, email, password):
cur.execute("INSERT INTO `users` (`Email`, `Password`) VALUES (%s, %s)", (email, password))
print("You've succesfully registered!")
def login(cur, email, password):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s AND `Password`=%s LIMIT 1", (email, password))
rows = cur.fetchall()
if rows:
print("You've succesfully logged-in!")
else:
print("You failed logging-in!")
def check_account(cur, email):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s LIMIT 1", (email,))
row = cur.fetchone()
return row
def main():
conn = cymysql.connect(
host='127.0.0.1',
user='root',
passwd='',
db='david'
)
cur = conn.cursor()
email = ''
password = ''
email, password = get_user_info()
check = check_account(cur, email)
if check:
login(cur, email, password)
else:
register(cur, email, password)
cur.close()
conn.close()
if __name__ == '__main__':
main()
python python-3.x sql mysql
python python-3.x sql mysql
edited 4 hours ago
esote
2,83111038
2,83111038
asked 4 hours ago
Maria LauraMaria Laura
914
914
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
cymysql.connect
is a context manager and so you should use it in awith
statement.conn.cursor
isn't a context manager. Which is very fishy, even more so that the original version of cymysql, pymysql, is.- Seperate SQL interactions from UI interactions. This is as multiple parts of the UI may need to use the same SQL interactions, however since they're mangled, it'll lead to code duplication or errors in your UI.
- You don't need to do
email = ''
, if you want to tell people it's a string then you can doemail: str
. A better thing to do however is usetyping
and make your code fully typed. - You may want to verify that the email is a valid email address. It doesn't look like your SQL does that, but I don't know enough about it.
import cymysql
from getpass import getpass
def get_user_info():
while True:
email = input("Input your Email address (max. 64 chars.): ")
password = getpass("Input a password (max. 64 chars.): ")
if len(email) < 64 and len(password) < 64:
return email, password
def register(cur, email, password):
cur.execute("INSERT INTO `users` (`Email`, `Password`) VALUES (%s, %s)", (email, password))
def login(cur, email, password):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s AND `Password`=%s LIMIT 1", (email, password))
return bool(cur.fetchall())
def check_account(cur, email):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s LIMIT 1", (email,))
return bool(cur.fetchone())
def main():
conn = cymysql.connect(
host='127.0.0.1',
user='root',
passwd='',
db='david'
)
with conn:
cur = conn.cursor()
email, password = get_user_info()
check = check_account(cur, email)
if check:
loggedin = login(cur, email, password)
if loggedin:
print("You've succesfully logged-in!")
else:
print("You failed logging-in!")
else:
register(cur, email, password)
print("You've succesfully registered!")
cur.close()
if __name__ == '__main__':
main()
$endgroup$
$begingroup$
Hey! Thanks for the answer, but in my original script I have conn.close() at the end of main(). Should I use it in the updated script too?
$endgroup$
– Maria Laura
3 hours ago
$begingroup$
@MariaLaura You're not guarantee to reach theconn.close()
- If I raise a keyboard interrupt, or kill the script doesconn.close()
run your way?
$endgroup$
– Peilonrayz
3 hours ago
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
);
);
, "mathjax-editing");
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "196"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216065%2fregistration-and-login-script%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
cymysql.connect
is a context manager and so you should use it in awith
statement.conn.cursor
isn't a context manager. Which is very fishy, even more so that the original version of cymysql, pymysql, is.- Seperate SQL interactions from UI interactions. This is as multiple parts of the UI may need to use the same SQL interactions, however since they're mangled, it'll lead to code duplication or errors in your UI.
- You don't need to do
email = ''
, if you want to tell people it's a string then you can doemail: str
. A better thing to do however is usetyping
and make your code fully typed. - You may want to verify that the email is a valid email address. It doesn't look like your SQL does that, but I don't know enough about it.
import cymysql
from getpass import getpass
def get_user_info():
while True:
email = input("Input your Email address (max. 64 chars.): ")
password = getpass("Input a password (max. 64 chars.): ")
if len(email) < 64 and len(password) < 64:
return email, password
def register(cur, email, password):
cur.execute("INSERT INTO `users` (`Email`, `Password`) VALUES (%s, %s)", (email, password))
def login(cur, email, password):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s AND `Password`=%s LIMIT 1", (email, password))
return bool(cur.fetchall())
def check_account(cur, email):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s LIMIT 1", (email,))
return bool(cur.fetchone())
def main():
conn = cymysql.connect(
host='127.0.0.1',
user='root',
passwd='',
db='david'
)
with conn:
cur = conn.cursor()
email, password = get_user_info()
check = check_account(cur, email)
if check:
loggedin = login(cur, email, password)
if loggedin:
print("You've succesfully logged-in!")
else:
print("You failed logging-in!")
else:
register(cur, email, password)
print("You've succesfully registered!")
cur.close()
if __name__ == '__main__':
main()
$endgroup$
$begingroup$
Hey! Thanks for the answer, but in my original script I have conn.close() at the end of main(). Should I use it in the updated script too?
$endgroup$
– Maria Laura
3 hours ago
$begingroup$
@MariaLaura You're not guarantee to reach theconn.close()
- If I raise a keyboard interrupt, or kill the script doesconn.close()
run your way?
$endgroup$
– Peilonrayz
3 hours ago
add a comment |
$begingroup$
cymysql.connect
is a context manager and so you should use it in awith
statement.conn.cursor
isn't a context manager. Which is very fishy, even more so that the original version of cymysql, pymysql, is.- Seperate SQL interactions from UI interactions. This is as multiple parts of the UI may need to use the same SQL interactions, however since they're mangled, it'll lead to code duplication or errors in your UI.
- You don't need to do
email = ''
, if you want to tell people it's a string then you can doemail: str
. A better thing to do however is usetyping
and make your code fully typed. - You may want to verify that the email is a valid email address. It doesn't look like your SQL does that, but I don't know enough about it.
import cymysql
from getpass import getpass
def get_user_info():
while True:
email = input("Input your Email address (max. 64 chars.): ")
password = getpass("Input a password (max. 64 chars.): ")
if len(email) < 64 and len(password) < 64:
return email, password
def register(cur, email, password):
cur.execute("INSERT INTO `users` (`Email`, `Password`) VALUES (%s, %s)", (email, password))
def login(cur, email, password):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s AND `Password`=%s LIMIT 1", (email, password))
return bool(cur.fetchall())
def check_account(cur, email):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s LIMIT 1", (email,))
return bool(cur.fetchone())
def main():
conn = cymysql.connect(
host='127.0.0.1',
user='root',
passwd='',
db='david'
)
with conn:
cur = conn.cursor()
email, password = get_user_info()
check = check_account(cur, email)
if check:
loggedin = login(cur, email, password)
if loggedin:
print("You've succesfully logged-in!")
else:
print("You failed logging-in!")
else:
register(cur, email, password)
print("You've succesfully registered!")
cur.close()
if __name__ == '__main__':
main()
$endgroup$
$begingroup$
Hey! Thanks for the answer, but in my original script I have conn.close() at the end of main(). Should I use it in the updated script too?
$endgroup$
– Maria Laura
3 hours ago
$begingroup$
@MariaLaura You're not guarantee to reach theconn.close()
- If I raise a keyboard interrupt, or kill the script doesconn.close()
run your way?
$endgroup$
– Peilonrayz
3 hours ago
add a comment |
$begingroup$
cymysql.connect
is a context manager and so you should use it in awith
statement.conn.cursor
isn't a context manager. Which is very fishy, even more so that the original version of cymysql, pymysql, is.- Seperate SQL interactions from UI interactions. This is as multiple parts of the UI may need to use the same SQL interactions, however since they're mangled, it'll lead to code duplication or errors in your UI.
- You don't need to do
email = ''
, if you want to tell people it's a string then you can doemail: str
. A better thing to do however is usetyping
and make your code fully typed. - You may want to verify that the email is a valid email address. It doesn't look like your SQL does that, but I don't know enough about it.
import cymysql
from getpass import getpass
def get_user_info():
while True:
email = input("Input your Email address (max. 64 chars.): ")
password = getpass("Input a password (max. 64 chars.): ")
if len(email) < 64 and len(password) < 64:
return email, password
def register(cur, email, password):
cur.execute("INSERT INTO `users` (`Email`, `Password`) VALUES (%s, %s)", (email, password))
def login(cur, email, password):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s AND `Password`=%s LIMIT 1", (email, password))
return bool(cur.fetchall())
def check_account(cur, email):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s LIMIT 1", (email,))
return bool(cur.fetchone())
def main():
conn = cymysql.connect(
host='127.0.0.1',
user='root',
passwd='',
db='david'
)
with conn:
cur = conn.cursor()
email, password = get_user_info()
check = check_account(cur, email)
if check:
loggedin = login(cur, email, password)
if loggedin:
print("You've succesfully logged-in!")
else:
print("You failed logging-in!")
else:
register(cur, email, password)
print("You've succesfully registered!")
cur.close()
if __name__ == '__main__':
main()
$endgroup$
cymysql.connect
is a context manager and so you should use it in awith
statement.conn.cursor
isn't a context manager. Which is very fishy, even more so that the original version of cymysql, pymysql, is.- Seperate SQL interactions from UI interactions. This is as multiple parts of the UI may need to use the same SQL interactions, however since they're mangled, it'll lead to code duplication or errors in your UI.
- You don't need to do
email = ''
, if you want to tell people it's a string then you can doemail: str
. A better thing to do however is usetyping
and make your code fully typed. - You may want to verify that the email is a valid email address. It doesn't look like your SQL does that, but I don't know enough about it.
import cymysql
from getpass import getpass
def get_user_info():
while True:
email = input("Input your Email address (max. 64 chars.): ")
password = getpass("Input a password (max. 64 chars.): ")
if len(email) < 64 and len(password) < 64:
return email, password
def register(cur, email, password):
cur.execute("INSERT INTO `users` (`Email`, `Password`) VALUES (%s, %s)", (email, password))
def login(cur, email, password):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s AND `Password`=%s LIMIT 1", (email, password))
return bool(cur.fetchall())
def check_account(cur, email):
cur.execute("SELECT * FROM `users` WHERE `Email`=%s LIMIT 1", (email,))
return bool(cur.fetchone())
def main():
conn = cymysql.connect(
host='127.0.0.1',
user='root',
passwd='',
db='david'
)
with conn:
cur = conn.cursor()
email, password = get_user_info()
check = check_account(cur, email)
if check:
loggedin = login(cur, email, password)
if loggedin:
print("You've succesfully logged-in!")
else:
print("You failed logging-in!")
else:
register(cur, email, password)
print("You've succesfully registered!")
cur.close()
if __name__ == '__main__':
main()
answered 3 hours ago
PeilonrayzPeilonrayz
26.2k338110
26.2k338110
$begingroup$
Hey! Thanks for the answer, but in my original script I have conn.close() at the end of main(). Should I use it in the updated script too?
$endgroup$
– Maria Laura
3 hours ago
$begingroup$
@MariaLaura You're not guarantee to reach theconn.close()
- If I raise a keyboard interrupt, or kill the script doesconn.close()
run your way?
$endgroup$
– Peilonrayz
3 hours ago
add a comment |
$begingroup$
Hey! Thanks for the answer, but in my original script I have conn.close() at the end of main(). Should I use it in the updated script too?
$endgroup$
– Maria Laura
3 hours ago
$begingroup$
@MariaLaura You're not guarantee to reach theconn.close()
- If I raise a keyboard interrupt, or kill the script doesconn.close()
run your way?
$endgroup$
– Peilonrayz
3 hours ago
$begingroup$
Hey! Thanks for the answer, but in my original script I have conn.close() at the end of main(). Should I use it in the updated script too?
$endgroup$
– Maria Laura
3 hours ago
$begingroup$
Hey! Thanks for the answer, but in my original script I have conn.close() at the end of main(). Should I use it in the updated script too?
$endgroup$
– Maria Laura
3 hours ago
$begingroup$
@MariaLaura You're not guarantee to reach the
conn.close()
- If I raise a keyboard interrupt, or kill the script does conn.close()
run your way?$endgroup$
– Peilonrayz
3 hours ago
$begingroup$
@MariaLaura You're not guarantee to reach the
conn.close()
- If I raise a keyboard interrupt, or kill the script does conn.close()
run your way?$endgroup$
– Peilonrayz
3 hours ago
add a comment |
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216065%2fregistration-and-login-script%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown