Hi I am trying to implement a simple login system. I am using the WWW method and WWW.Form.
//Create a form
var form = new WWWForm();
form.AddField("uname",userNameEntered);
form.AddField("pass",passwordEntered);
//Put all form data in a variable
var rawData = form.data;
var url = "http://url/login.php";
var w = WWW(url,rawData);
yield w;
if(!w.error)
{
print("There was an error logging in: " + w.error);
}
The problem is when i type in a duplicate username, mysql throws up an error as it should
Error :Duplicate entry 'UnityUser' for key 'PRIMARY'
But the w.error() does not resolve as true ( I am guessing since there is no HTML or PHP error but rahter a MySQL error)
y question is how do i stop the users from using duplicate usernames ?
Each HTTP request returns a status code. If everything goes well, your HTTP server returns the code “200 - OK”.
Your PHP script returns 200 by default, unless you explicitly tell it otherwise. Make sure you set the correct response header. For server side errors, a code in the 5xx range is common, for user errors, a 4xx code is used.
I would return 400 (User error) to indicate that the parameters passed to the server were invalid.
MySql will throw an error only when you try to store value in the database. If the username name is unique in database, sql will throw an error. In your code it seems like you are trying to log in and not tryin to register. In case of login you should not get a duplicate entry error. There has to be something wrong on your PHP code. Check if you are doing an INSERT query or SELECT query on the PHP side.
$insertedUsername=$_REQUEST['Username'];
$insertedEmail=$_REQUEST['Email'];
$sqlCheckUsername="SELECT 1 FROM Users WHERE Username = '" . mysql_real_escape_string($insertedUsername) . "'";
$sqlCheckEmail="SELECT 1 FROM Users WHERE Email = '" . mysql_real_escape_string($insertedEmail) . "'";
$queryUsername=mysql_query($sqlCheckUsername,$con) or die('error');
$queryEmail=mysql_query($sqlCheckEmail,$con) or die('error');
$Username = mysql_fetch_assoc($queryUsername);
if(mysql_num_rows($queryUsername)!=0){
echo "Username already exists, choose a different one";
}elseif(mysql_num_rows($queryEmail)!=0){
echo "E-Mail already registered";
}else{
echo "true";
}
It basically checks to see if there already is a row with that username or email in it.
I’m using OR, or rather, both controls, so people will know what they should change. Just like when your username OR password are wrong, that way you don’t have any doubts for where you’re wrong.