close
小型會員登入系統
這版會做到:
- 用表單讓使用者輸入帳號密碼
- 在伺服器端檢查帳密
- 登入成功跳到會員頁
- 登入失敗提示錯誤訊息
🛠 1. 預備工作
目錄結構建議這樣:
/你的專案
app.py
/templates
login.html
member.html
error.html
🧩 2. 建立 login.html
<!DOCTYPE html>
<html>
<head>
<title>登入</title>
</head>
<body>
<h1>會員登入</h1>
<form action="/signin" method="post">
<input type="text" name="username" placeholder="帳號">
<br><br>
<input type="password" name="password" placeholder="密碼">
<br><br>
<button type="submit">登入</button>
</form>
</body>
</html>
🧩 3. 建立 member.html
<!DOCTYPE html>
<html>
<head>
<title>會員頁</title>
</head>
<body>
<h1>歡迎進入會員頁!</h1>
<a href="/">回首頁</a>
</body>
</html>
🧩 4. 建立 error.html
<!DOCTYPE html>
<html>
<head>
<title>登入失敗</title>
</head>
<body>
<h1>登入失敗!請重新輸入</h1>
<a href="/">回首頁</a>
</body>
</html>
🧩 5. app.py 程式碼
from flask import Flask, render_template, request, redirect
app = Flask(__name__)
@app.route('/')
def index():
return render_template('login.html')
@app.route('/signin', methods=['POST'])
def signin():
username = request.form['username']
password = request.form['password']
if username == 'admin' and password == '1234':
return redirect('/member')
else:
return redirect('/error')
@app.route('/member')
def member():
return render_template('member.html')
@app.route('/error')
def error():
return render_template('error.html')
if __name__ == '__main__':
app.run(debug=True)
✅ 流程總結
- 首頁 (
/
) 顯示登入畫面 - 表單送出到
/signin
,後端檢查帳號密碼 - 如果帳號是 admin、密碼是 1234,跳到
/member
- 否則跳到
/error
提示登入失敗
🔥 Bonus:升級版 顯示「錯誤訊息」
改進 app.py:
from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)
@app.route('/')
def index():
return render_template('login.html')
@app.route('/signin', methods=['POST'])
def signin():
username = request.form['username']
password = request.form['password']
if username == 'admin' and password == '1234':
return redirect('/member')
else:
return redirect(url_for('error', message='帳號或密碼錯誤'))
@app.route('/member')
def member():
return render_template('member.html')
@app.route('/error')
def error():
message = request.args.get('message', '發生錯誤')
return render_template('error.html', message=message)
if __name__ == '__main__':
app.run(debug=True)
對應 error.html
:
<!DOCTYPE html>
<html>
<head>
<title>登入失敗</title>
</head>
<body>
<h1>{{ message }}</h1>
<a href="/">回首頁</a>
</body>
</html>
✅ 小結
功能 | 說明 |
---|---|
記錄登入狀態 | session['user'] = username |
驗證登入 | if 'user' in session |
登出清除 | session.pop('user', None) |
密鑰設定 | app.secret_key = '自己設定的秘密字串' |
全站熱搜