Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
?
Solved

Delphi Mysql user login and set premession for each user

Posted on 2014-09-22
4
Medium Priority
?
659 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 28

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 28

Accepted Solution

by:
Sinisa Vuk earned 2000 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

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

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

Load balancing is the method of dividing the total amount of work performed by one computer between two or more computers. Its aim is to get more work done in the same amount of time, ensuring that all the users get served faster.
In this article, I’ll talk about multi-threaded slave statistics printed in MySQL error log file.
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
In this video, Percona Solution Engineer Rick Golba discuss how (and why) you implement high availability in a database environment. To discuss how Percona Consulting can help with your design and architecture needs for your database and infrastr…
Suggested Courses

580 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