Thread: Username and Password authentication using pqxx library.
Hello,
I am using pqxx API for postgresql.The following is the part of my code.The problem is in the query I am selecting the number of rows from the table since there is only one user name and password row it should return 1 and if there is no match then it should return 0.But here Even though I give wrong username or password its getting authenticated.please help me,what should I put in the "if ()" statement inorder to solve this issue .
result R(T.exec("select count(*) from dbtable where username="+username+" and password="+password+""));
if (R.empty())
{
throw logic_error("No tables found");
*shm = '5';
}
else
{
cout<<"Authenticated";
*shm='0';
}
Thank You,
Avinash.
I am using pqxx API for postgresql.The following is the part of my code.The problem is in the query I am selecting the number of rows from the table since there is only one user name and password row it should return 1 and if there is no match then it should return 0.But here Even though I give wrong username or password its getting authenticated.please help me,what should I put in the "if ()" statement inorder to solve this issue .
result R(T.exec("select count(*) from dbtable where username="+username+" and password="+password+""));
if (R.empty())
{
throw logic_error("No tables found");
*shm = '5';
}
else
{
cout<<"Authenticated";
*shm='0';
}
Thank You,
Avinash.
aravind chandu wrote: > I am using pqxx API for postgresql.The following is the > part of my code.The problem is in the query I am selecting the number > of rows from the table since there is only one user name and password > row it should return 1 and if there is no match then it should return > 0.But here Even though I give wrong username or password its getting > authenticated.please help me,what should I put in the "if ()" > statement inorder to solve this issue . > > result R(T.exec("select count(*) from dbtable where > username="+username+" and password="+password+"")); > > if (R.empty()) > { > throw logic_error("No tables found"); > *shm = '5'; > } > else > { > cout<<"Authenticated"; > *shm='0'; > } > You don't want to test if the result is empty - you want to test if the value returned is 0. If you select the username and group by it, then you could test for the empty result. # select count(*) from users where username = 'hfkhsdf'; count ------- 0 (1 row) # select username, count(*) from users where username = 'hfkhsdf' group by 1; username | count ----------+------- (0 rows) klint. -- Klint Gore Database Manager Sheep CRC A.G.B.U. University of New England Armidale NSW 2350 Ph: 02 6773 3789 Fax: 02 6773 3266 EMail: kgore4@une.edu.au