Registration and login scriptThe perfect PHP login scriptLocal user registrationUser registration and...
Does a 'pending' US visa application constitute a denial?
On a tidally locked planet, would time be quantized?
Removing files under particular conditions (number of files, file age)
How can Trident be so inexpensive? Will it orbit Triton or just do a (slow) flyby?
What should you do if you miss a job interview (deliberately)?
Lowest total scrabble score
copy and scale one figure (wheel)
Can Legal Documents Be Siged In Non-Standard Pen Colors?
Does the Location of Line-Dash-Wedge Notations Matter?
Melting point of aspirin, contradicting sources
What is the evidence for the "tyranny of the majority problem" in a direct democracy context?
Is aluminum electrical wire used on aircraft?
Electoral considerations aside, what are potential benefits, for the US, of policy changes proposed by the tweet recognizing Golan annexation?
Pre-modern battle - command it, or fight in it?
What is this called? Old film camera viewer?
Freedom of speech and where it applies
Did Swami Prabhupada reject Advaita?
Why did the EU agree to delay the Brexit deadline?
How to indicate a cut out for a product window
Why does the Sun have different day lengths, but not the gas giants?
Why is it that I can sometimes guess the next note?
How to implement a feedback to keep the DC gain at zero for this conceptual passive filter?
How to explain what's wrong with this application of the chain rule?
height map for normal input sharp edges
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.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
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.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
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.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
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.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
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