I created this account registration activation script of my own, I have checked it over again and again to find errors, I don't see a particular error...
The domain would be like this:
http://domain.com/include/register.php?key=true&p=AfRWDCOWF0BO6KSb6UmNMf7d333gaBOB
Which comes from an email, when a user clicks it, they get redirected to this script:
if($_GET['key'] == true)
{
$key = $_GET['p'];
$sql = "SELECT * FROM users
WHERE user_key = '" . $key . "'";
$result = mysql_query($sql) or die(mysql_error());
if(mysql_affected_rows($result) > 0)
{
$sql = "UPDATE users
SET user_key = '', user_active = '1'
WHERE user_key = '" . $key . "'";
$result = mysql_query(sql) or die(mysql_error());
if($result)
{
$_SESSION['PROCESS'] = $lang['Account_activated'];
header("Location: ../index.php");
}
else
{
$_SESSION['ERROR'] = $lang['Key_error'];
header("Location: ../index.php");
}
}
else
{
$_SESSION['ERROR'] = $lang['Invalid_key'];
header("Location: ../index.php");
}
}
It doesn't even work at all, I looked in the database with the user with that key, it matches but it keeps coming up as an error which is extremely annoying me. The database is right, the table and column is right, nothing wrong with the database, it's the script that isn't working.
Help me out, guys.
Thanks :)
$_GET['key'] == true
to $_GET['key'] == "true"
if
, a successful mysql_connect(...)
or mysql_pconnect(...)
?mysql_affected_rows($result);
to mysql_num_rows($result);
. Affected you can use for DELETE
or UPDATE
SQL statements.mysql_result(...)
, mysql_free_result($result);
to free memory allocated to previous result.if($result)
change to if(mysql_affected_rows($result));
. You can do that here.header(...);
function call's add a return 0;
or exit(0);
depends on your complete code logic.$key
variable in SQL statements, to get your code more secure on SQL Injection attacks get change $key = $_GET['p'];
to $key = mysql_real_escape_string($_GET['p']);
header()
functions fails. In header()
url address should be full like: http://www.example.com/somewhere/index.php$_GET['p']
variable exists!! If this not exist and if $_GET['key']
exists, you find all activated users. Then i think the setting user_key to '' is nessesary if you have user_activated marker.