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
Problem with TransformedDistribution
Non-trope happy ending?
Terse Method to Swap Lowest for Highest?
Strong empirical falsification of quantum mechanics based on vacuum energy density
Did arcade monitors have same pixel aspect ratio as TV sets?
copy and scale one figure (wheel)
If infinitesimal transformations commute why dont the generators of the Lorentz group commute?
Are the IPv6 address space and IPv4 address space completely disjoint?
Can I sign legal documents with a smiley face?
Electoral considerations aside, what are potential benefits, for the US, of policy changes proposed by the tweet recognizing Golan annexation?
What is the evidence for the "tyranny of the majority problem" in a direct democracy context?
Biological Blimps: Propulsion
How to indicate a cut out for a product window
How did Rebekah know that Esau was planning to kill his brother in Genesis 27:42?
What percentage of fillings performed today are done with mercury amalgam?
Is it safe to use olive oil to clean the ear wax?
The IT department bottlenecks progress. How should I handle this?
Why does the Sun have different day lengths, but not the gas giants?
What does routing an IP address mean?
250 Floor Tower
How to explain what's wrong with this application of the chain rule?
Redundant comparison & "if" before assignment
Why electric field inside a cavity of a non-conducting sphere not zero?
Aragorn's "guise" in the Orthanc Stone
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