Python kodundaki hata nedir?

Can Deger

Femtopat
Katılım
27 Mart 2023
Mesajlar
63
Daha fazla  
Cinsiyet
Erkek
Kod:
from flask import Flask, render_template, request, redirect, url_for, session
from flask_mysqldb import MySQL
import MySQLdb.cursors
import re
import pymysql


app = Flask(__name__)


app.secret_key = 'your secret key'



app.config['MYSQL_HOST'] = 'u'
app.config['MYSQL_USER'] = 'u'
app.config['MYSQL_PASSWORD'] = ''
app.config['MYSQL_DB'] = ''


mysql = MySQL(app)


@app.route('/')
@app.route('/login', methods =['GET', 'POST'])
def login():
    msg = ''
    if request.method == 'POST' and 'username' in request.form and 'password' in request.form:
        username = request.form['username']
        password = request.form['password']
        cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
        cursor.execute('SELECT * FROM accounts WHERE username = % s AND password = % s', (username, password ))
        account = cursor.fetchone()
    if account:
        session['loggedin'] = True
        session['id'] = account['id']
        session['username'] = account['username']
        msg = 'Logged in successfully !'
        return render_template('index.html', msg = msg)
    else:
        msg = 'Incorrect username / password !'
        return render_template('login.html', msg = msg)


@app.route('/logout')
def logout():
    session.pop('loggedin', None)
    session.pop('id', None)
    session.pop('username', None)
    return redirect(url_for('login'))


@app.route('/register', methods =['GET', 'POST'])
def register():
    msg = ''
    if request.method == 'POST' and 'username' in request.form and 'password' in request.form and 'email' in request.form :
        username = request.form['username']
        password = request.form['password']
        email = request.form['email']
        cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
        cursor.execute('SELECT * FROM accounts WHERE username = % s', (username, ))
        account = cursor.fetchone()
        if account:
             msg = 'Account already exists !'
        elif not re.match(r'[^@]+@[^@]+\.[^@]+', email):
            msg = 'Invalid email address !'
        elif not re.match(r'[A-Za-z0-9]+', username):
            msg = 'Username must contain only characters and numbers !'
        elif not username or not password or not email:
            msg = 'Please fill out the form !'
        else:
            cursor.execute('INSERT INTO accounts VALUES (NULL, % s, % s, % s)', (username, password, email, ))
            mysql.connection.commit()
            msg = 'You have successfully registered !'
    elif request.method == 'POST':
         msg = 'Please fill out the form !'
    return render_template('register.html', msg = msg)

Yaptigim basit site Registration Form'u. Oraya eklendi mi benim data base'e ekleyecegim.
 
Son düzenleme:
Bu koddaki hata, "u" değeri atanmamış MYSQL_HOST değeridir. Bu hatanın çözümü, MYSQL_HOST değerine uygun bir sunucu adresinin atanmasıdır.

Emin değilim.Umarım yardımcı olmuşumdur.
 
Bu koddaki hata, "u" değeri atanmamış MYSQL_HOST değeridir. Bu hatanın çözümü, MYSQL_HOST değerine uygun bir sunucu adresinin atanmasıdır.

Emin değilim.Umarım yardımcı olmuşumdur.
Hocam onlar bende var sikinti degil ama anlamadigim sey su: Ben HTML sayfasina bunu entegre mi etmem lazim. Demek istedigim websayfasindan bir girdi olmasi lazim. O girdiye ok'e basinca data gelmesi lazim. Bunu goremiyorum.
 
Kodda belirgin bir hata gözükmüyor, ancak bazı geliştirmeler yapılabilir. İlk olarak, app.config['MYSQL_HOST'] ve app.config['MYSQL_DB'] değişkenlerinin boş olduğu görülüyor. Bu değişkenlerin uygun şekilde ayarlanması gerekiyor.

İkincisi, register fonksiyonunda, form alanlarının boş olup olmadığı kontrol ediliyor. Ancak, form alanlarına sadece boşluk karakteri girilirse bu kontrol işlemi başarısız olabilir. Bu durumda, form alanları için bir boşluk kontrolü de eklenmeli.

Üçüncüsü, parola doğrulama işlemi yapılmamıştır. Bu da güvenlik açığına neden olabilir. Kullanıcıların kayıt sırasında parolalarını iki kez girmesi ve girilen parolaların birbiriyle eşleşip eşleşmediğinin kontrol edilmesi iyi bir uygulama olacaktır.

Son olarak, kullanıcı adları ve parolaların veritabanında açık metin olarak saklanması da güvenlik açısından sorunlu bir uygulamadır. Bunun yerine, parolaların bir hash değeri olarak saklanması ve doğrulama sırasında hash değerlerinin karşılaştırılması daha güvenli bir yaklaşım olacaktır.

Bunlar dışında, kodda belirgin bir hata yoktur. -ChatGpt
 
Kodda belirgin bir hata gözükmüyor, ancak bazı geliştirmeler yapılabilir. İlk olarak, app.config['MYSQL_HOST'] ve app.config['MYSQL_DB'] değişkenlerinin boş olduğu görülüyor. Bu değişkenlerin uygun şekilde ayarlanması gerekiyor.

İkincisi, register fonksiyonunda, form alanlarının boş olup olmadığı kontrol ediliyor. Ancak, form alanlarına sadece boşluk karakteri girilirse bu kontrol işlemi başarısız olabilir. Bu durumda, form alanları için bir boşluk kontrolü de eklenmeli.

Üçüncüsü, parola doğrulama işlemi yapılmamıştır. Bu da güvenlik açığına neden olabilir. Kullanıcıların kayıt sırasında parolalarını iki kez girmesi ve girilen parolaların birbiriyle eşleşip eşleşmediğinin kontrol edilmesi iyi bir uygulama olacaktır.

Son olarak, kullanıcı adları ve parolaların veritabanında açık metin olarak saklanması da güvenlik açısından sorunlu bir uygulamadır. Bunun yerine, parolaların bir hash değeri olarak saklanması ve doğrulama sırasında hash değerlerinin karşılaştırılması daha güvenli bir yaklaşım olacaktır.

Bunlar dışında, kodda belirgin bir hata yoktur. -ChatGpt
Hocam websitem acilmiyor nedense? O siteyi SQL'e baglamak istiyorum.

Yaziklar olsun ki buldum.
Python:
if __main__ = (__main__)
ya iste default flask app code'u. Rezillik😖
 
Son düzenleme:

Geri
Yukarı