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
Why electric field inside a cavity of a non-conducting sphere not zero?
Why can Carol Danvers change her suit colours in the first place?
Did Swami Prabhupada reject Advaita?
What are the purposes of autoencoders?
What does chmod -u do?
Is it better practice to read straight from sheet music rather than memorize it?
Rising and falling intonation
Pre-modern battle - command it, or fight in it?
Multiplicative persistence
C++ debug of nlohmann json using GDB
Does an advisor owe his/her student anything? Will an advisor keep a PhD student only out of pity?
Is there any references on the tensor product of presentable (1-)categories?
lightning-datatable row number error
Count the occurrence of each unique word in the file
Is the U.S. Code copyrighted by the Government?
2.8 Why are collections grayed out? How can I open them?
Are paving bricks differently sized for sand bedding vs mortar bedding?
How does a computer interpret real numbers?
Why does the Sun have different day lengths, but not the gas giants?
When were female captains banned from Starfleet?
Does the Location of Line-Dash-Wedge Notations Matter?
Is it improper etiquette to ask your opponent what his/her rating is before the game?
How do I color the graph in datavisualization?
What was the exact wording from Ivanhoe of this advice on how to free yourself from slavery?
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 3 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.connectis a context manager and so you should use it in awithstatement.conn.cursorisn'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 usetypingand 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
2 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
2 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.connectis a context manager and so you should use it in awithstatement.conn.cursorisn'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 usetypingand 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
2 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
2 hours ago
add a comment |
$begingroup$
cymysql.connectis a context manager and so you should use it in awithstatement.conn.cursorisn'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 usetypingand 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
2 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
2 hours ago
add a comment |
$begingroup$
cymysql.connectis a context manager and so you should use it in awithstatement.conn.cursorisn'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 usetypingand 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.connectis a context manager and so you should use it in awithstatement.conn.cursorisn'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 usetypingand 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
2 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
2 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
2 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
2 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
2 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
2 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
2 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
2 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