I cannot redirect to the page I want after even I enter correct recaptcha challenge and activation code. I am doubtful what is the problem in my php activation script. Can anybody check what is the error in my script?
Here is my script:
<?php
require_once('recaptchalib.php');
$privatekey = "6LfTwvMSAAAAABt03yGb0_12rgLNrCDuoibU4gbh";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
// What happens when the CAPTCHA was entered incorrectly
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")");
} else {
$username = $_POST['username'];
$activation_code = $_POST['activation_code'];
$db_host = "server";
$db_name = "table";
$db_use = "user";
$db_pass = "pass";
$link = mysqli_connect($db_host, $db_use, $db_pass);
mysqli_select_db($link, $db_name);
$command = "UPDATE email_activation SET check_activation='$activation_code' WHERE username='$username' and activation='$activation_code'";
$result = mysqli_query($command);
if ($result) {
$query = "SELECT * FROM email_activation where username LIKE '%$username%' LIMIT 0 , 1 ";
$result = mysqli_query($query) OR die(mysqli_error());
while($row = mysqli_fetch_array($result))
{
$username = $row['username'];
$password = $row['password'];
$email = $row['email'];
$postcode = $row['postcode'];
$query = "INSERT INTO member (username, password, email, postcode) VALUES ('$username','$password','$email','$postcode')";
$result = mysqli_query($link, $query) OR die(mysqli_error());
if ($result) {
echo "Congratulations. Your membership has been activated redirecting...";
$_SESSION['user_logged'] = '1';
header("location:index.html");
}else{
echo ("Congratulations. Your membership has been activated but it's can't saved in database.");
header("location:index.html");
}
}
}else{
echo ("You've entered an invalid username / activation code – please retry");
header("location:activation-form.php");
}
}
?>
You cant use header('location: something.html'); after echoing data.
Header has to be called before anything is sent to the browser.
echo ("Congratulations. Your membership has been activated but it's can't saved in database.");
header("location:index.html");
I advise passing the error on to the next page...
header("location: index.html?err=dberr");