MySQL / PHP: formdaki verileri topluyor başka bir tabloya bir kullanıcı kimliği günlüğe eklemek için nasıl kullanıcı girdikten olduğunu

2 Cevap php

İlk defa iki tablodan bilgi katılmak için gerek ve ilk herhangi bir tavsiyesi olmadan bunu yapıyor hakkında oldukça sinir duyuyorum duyuyorum.

Temelde, yetkili kullanıcılar tarafından erişilen güvenli bir site inşa ediyorum. Ben User_id, kullanıcı adı, şifre ile giriş tablo var

Kullanıcı sitede bir kez, onlar girişi denilen başka bir tabloya veri giren seçeneği var. Şu anda bu tablo sadece girilen bilgi değil, inputter ait User_id veya kullanıcı adı yakalar.

Ben formu giriş tabloya giriş tablodan User_id ve / veya kullanıcı adı girişi edebilmek olmak istiyorum.

Biri bu süreçte bana konuşabilirsin lütfen?

Ben bu değişiklik bir kez, ben o zaman o girilmiş olması bilgilere erişmek için sadece kullanıcı oturum açmış izin tablo kullanmak mümkün olacak eminim, bu doğru mu?

Çok teşekkürler

2 Cevap

Her şeyden önce, forma user_id veya kullanıcı adını koymayın. Herkes bir formu (evet, hatta gizli alanlar) değiştirebilirsiniz böylece adını veya kullanıcı kimliği değiştirebilir. Kullanıcı adı ve / veya kullanıcı kimliği saklamak için SESSION variable kullanın.

Nasıl tabloları tasarlamak mı? Iki tablo ile hile yapabilirsiniz:

logins ( USERID , USERNAME, PASSWORD ) inputs ( USERID, COMMENTS)

On the page processing the login form, after the login is succesful, you put the UserID in the SESSION. Then on your page processing the input form, you just do an INSERT in your inputs with the UserID from the SESSION.

Sonra sonra girişlerini gösteren sayfada yapabilirsiniz SELECT l.USERNAME, i.COMMENTS WHERE l.USERID = i.USERID vs vs

Konerak diyor, sen kullanıcı gönderilen verilere dayanmaktadır olamaz. Çoğu uygulamada iyi bir geliştirici bu gerçekleri saklamak istiyorsunuz - - Eğer herhangi bir sonraki yetkilendirme yapmak onları gerekir çünkü önceden o anda kullanıcı adı ve geçerli olduğu gerçeğini biliyor muydunuz orada bu kullanıcı kimliği var.

Yani sadece gibi bir şey yapın:

 INSERT INTO input (comment, date, user)
 VALUES ('" . mysql_real_escape_string($_POST['comment'] . "',
 NOW(), '" . mysql_real_escape_string($_SESSION['authenticated_user']) . "');

(Eğer mod_auth_mysql veya kimlik doğrulama web sunucusu tarafından hadneld olduğu, benzer kullanıyorsanız NB, daha sonra doğrulanmış kullanıcı $ _SERVER ['PHP_AUTH_USER'] bulunur).

C.