Solved

Delphi Mysql user login and set premession for each user

Posted on 2014-09-22
4
488 Views
Last Modified: 2014-09-29
i have multi user chat program and iam using mysql to define each user has logged in and give him premession

i have 2 forms main and login

in login form here is my code to allow user to login and start using the application

 SQL := Tloginclass.Create;
  try
    SQL.Login:= trim(Usrnm.Text);
    SQL.passwd := trim(passwd.Text);
    if SQl.logins then
     begin
      LoginSuccess := True;
     end

Open in new window


but how to sort each user how to show that there is a user joined the room also how to implement the tracking of online users. Second is how to enable/disable some functionality of my application based on the specific user

iam using indy tcp as chat server and client .
0
Comment
Question by:drama22
  • 2
  • 2
4 Comments
 
LVL 26

Expert Comment

by:Sinisa Vuk
ID: 40338857
when your user do succesful login - read permission field(s) for that user and store it somewhere (record)
Logic for user activity can be kept in same record on server side:
TChatUserInfo = record
  UserCredential: Integer; //maybe level of user
  LastActivity: TDateTime; // on last login, send message, ... here keep current date/time
end;

Open in new window

Using distance from Now and LastActivity - you can get how many time elapsed and decide about online status.

few examples:
http://www.devarticles.com/c/a/Delphi-Kylix/Creating-Chat-Application-with-Borland-DelphiIndy-The-Client/
http://www.ciuly.com/delphi/indy/tcp-single-exe-chat-demo/ (this one have simple user menagement)
0
 

Author Comment

by:drama22
ID: 40340232
Example if I want to store his user name what should I do ? Can you tell me an example with my code it will be more understandable for me and I walk on the logic. Thanks for your comment.
0
 

Author Comment

by:drama22
ID: 40346516
i make   a public variable in the main form and set this variable string from login form

like this

Main.usernmo := username;

Open in new window



then i did somthing like this to store username

type
TMember = class(TObject)
Public
Name : string;
end;

Open in new window


then call it like this

var
mame : TMember;
begin
mame := TMember.Create;
mame.Name := usernmo;
Memo.Lines.Add(mame.Name + '' +' Joined');

Open in new window


is that right way i feel its wrong , could you correct me ?
0
 
LVL 26

Accepted Solution

by:
Sinisa Vuk earned 500 total points
ID: 40350793
this is more correct:
type
  TMember = class(TObject)
  private
    FName: String;
  public
    property Name: String read FName write FName;
  end;

Open in new window


... and when you create new member - put it in Tlist for later. On destroy - free all TList members:
...
//global
UserList: TList;
...
UserList := TList.Create;
...
mame := TMember.Create;
mame.Name := usernmo;
//add to list
UserList.Add(mame);


///server destroy
p: TMember;
...
for i:=1 to UserList.Count do
begin
   p := UserList.Item[i-1];
   UserList.Item[i-1] := nil;
  FreeAndNil(p);
end;
 UserList.Free;

Open in new window


... you can add/remove some member dynamically  - when user do login/logout...
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
Introduction This article is intended for those who are new to PHP error handling (https://www.experts-exchange.com/articles/11769/And-by-the-way-I-am-New-to-PHP.html).  It addresses one of the most common problems that plague beginning PHP develop…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, just open a new email message. In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
Edureka is one of the fastest growing and most effective online learning sites.  We are here to help you succeed.

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now