Şimdi Ara

Django ve Mysql iliskisi hakkinda sorum olacak

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
6
Cevap
0
Favori
222
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaslar python kullanarak web sitesi yapiyorum. Mysqldeki databasemi settings.py icine implement ettim.Ajax ve js kullanarak Kullaniciyi kayit yaptirabiliyorum ve bunlari phpMyadmindeki mysql db de tutabiliyorum.Tabi ki bundan sonra login yaptirma islemi var. Bu konu hakkinda yeterli dokuman bulamadim.Butun dokumanlar neredeyse PHP kullanarak yapmis.PHP hakkinda cok birsey bilmiyorum. PHP kodunu nereye implement ederim , html js ajax pyton php hepsi bi arada calisiyor mu ? vesaire kafamda cok soru isaretleri var. Cevabini ogrenmek istedigim diger soru ise tipki kayit olmada yaptirdigim gibi sadece JS ve AJAX kullanarak mysql deki databesimden SELECT * yaptirip girilen email ve password match ediyorsa login yaptirabilmek hic php ye bulasmadan. Imla hatalari ve devriklik olabilir kusura bakmayin.



  • python flask dan ilerlemeye karar verdim.Soyle birseyler koymaya calistim dogru yoldamiyim ?

    views.py icinde

    # FLASK SECTION STARTS


    app=Flask(__name__)

    conn=MySQLdb.connect(host="localhost",user="root",password="",db="mydb")

    @app.route("/login")
    def login():
    return render_template("login", title="data")

    @app.route("/checkUser",methods=["POST"])
    def check(email):
    email= str(request.form["email"])
    cursor=conn.cursor()
    cursor.execute("SELECT email FROM landingapp_user WHERE email ='"+email+"'")
    user = cursor.fetchone()

    if len(user) is 1:
    return redirect(url_for("home"))
    else:
    return "failed"

    @app.route("/home")
    def home():
    return render_template("home.html")



    if __name__=="__main__":
    app.run(debug=True)




    #FLASK SECTION ENDS


    urls.py


    urlpatterns = [
    ..
    ..
    path(r'checkUser',check ,name="check"),

    ]

    Sonucunda bu hatayi aliyorum. Dogru yoldamiyim ?


    Django ve Mysql iliskisi hakkinda sorum olacak



    < Bu mesaj bu kişi tarafından değiştirildi Starbucksunstari -- 21 Şubat 2018; 22:22:43 >




  • Giriş aşamasında çıplak sql yazmadan da işlem yapabilirsiniz. SQLalchemy kullanabilirsiniz. Flask securty ile authentication ve authorazition kısmını hızlıca halledebilirsiniz.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • isimi goren birsey yaptim fakat html den Login butonu ile redirect edemedim bir turlu.Urls.py den pathini girerek kontrol ediyorum oyle oluyor.

    Ana sikinti Basta fark etmemistim log fonksiyonunda mysql connectionu , sql execute kisaca cogunu kaldirsamda sadece log(request,email,password) ile calisiyor. Bir turlu check statetine sokamadim.Kayitli olmayan kullaniciyida login ediyor.

    views.py

    def log(request,email,password):
    if request.method == "POST":
    user=User()


    conn = MySQLdb.connect(host="localhost", user="root",
    password="", db="mydb")
    query = conn.cursor()


    email = request.POST['email']
    #user.email=email
    #user.password=password

    password = request.POST['password']
    if(query.execute("SELECT * FROM `landingapp_user` WHERE `email` = '" + email + "' AND `password` = '" + password + "'")):
    conn.commit()

    return render(request, 'home.html', {})
    else:
    return render(request, 'home.html', {})
    return HttpResponseRedirect('/home')

    Urls.py

    urlpatterns = [
    path(r'log/<email>/<password>/',log)
    ]


    login.html

    <form method="POST"> {% csrf_token %}
    <input type="text" placeholder="Email" id="email" name="email" required>
    <input type="password" placeholder="Şifre" id="password" name="password" required>
    <!-- <button onclick="validate()" type="button">Giriş Yap</button> -->
    <input type="submit">
    </form>

    Ajax ile birseyler denemeye calistim ne kadar dogru bilmiyorum.

    Ajaxlog.js


    function validate(){
    var email1 = document.getElementById("email1").value;
    var password1 = document.getElementById("password1").value;
    if ( email1 == email && password1 == password ){
    $.ajax({
    type:'POST',
    url: "http://127.0.0.1:8000/log/"+email+"/"+password,
    context: document.body,
    success: function(data){
    alert(data);

    }})}
    window.location="home.html";
    }



    < Bu mesaj bu kişi tarafından değiştirildi Starbucksunstari -- 21 Şubat 2018; 22:23:41 >




  • Sorun şu satır:

    path(r'log/<email>/<password>/',log)



    Burda sen email ya da şifre olarak ne yazarsan yaz ilgili view fonksiyonu çalışacaktır. View fonks ta da kontrol etse de etmese de yine aynı home.html sayfasını renderliyor. Yukarda url de de yazdığın neyse gösteriyor. Bu yapı baştan sona hatalı. Neden mi?



    1) url içinde parola açıkça yazıyor ve bu güvenlik açığı demek

    2) parola veritabanına hash lanmadan yazılıyor. Bir veritabanına erişirse tüm parolalr kabak gibi ortada demek.

    3) db ye eriştiğin kodlar bir fonksiyon içinde değil. Her view fonks içine yazman demek. Bu da projenin bir iki view eklendikten sonra çok karışık hale geleceği anlamına geliyor. Bu karışıklık da devamında açıkları getirir.

    4) kollanıcı sessionu tanımlamamışsın yani dolayısıyla kullanıcı hiçbir şekilde login olamaz.



    https://pythonprogramming.net/practical-flask-introduction/



    Bu linke bi bak. İngilizce bilmesen de kodları falan bi incele. Faydası olacaktır.

    < Bu ileti mini sürüm kullanılarak atıldı >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.