2011-08-03 12 views
1

接続が確立されており、ここにコードがあります。何をしようとしているのは、URLから2つのvarを取得し、それらをvarとして保存することです。私はエラーが発生し、PHPが動作していないと私は、URLの情報が正しいとデータベースに一致していることを知っている。エラーは「URLが無効か、既にアカウントを有効にしています」というエラーです。これはPHPが返すもので、一致がなければ、URLとvar設定の間に切断があると推測します。 コード:PHP- mysqlでURLをチェックする際にvarを取得する

if(isset($_GET['email']) && !empty($_GET['email']) AND isset($_GET['hash']) &&  !empty($_GET['hash'])){ 
// Verify data 
$email = mysql_escape_string($_GET['email']); // Set email variable 
$hash = mysql_escape_string($_GET['hash']); // Set hash variable 

$search = mysql_query("SELECT email, hash, active FROM users WHERE email='".$email."' AND hash='".$hash."' AND active='0'") or die(mysql_error()); 
$match = mysql_num_rows($search); 

if($match > 0){ 
    // We have a match, activate the account 
    mysql_query("UPDATE users SET active='1' WHERE email='".$email."' AND hash='".$hash."' AND active='0'") or die(mysql_error()); 
    echo '<div class="statusmsg">Your account has been activated, you can now login</div>'; 
}else{ 
    // No match -> invalid url or account has already been activated. 
    echo '<div class="statusmsg">The url is either invalid or you already have activated your account.</div>'; 
} 

}else{ 
// Invalid approach 
echo '<div class="statusmsg">Invalid approach, please use the link that has been send to your email.</div>'; 
} 
?> 

URL:

http://www.aliahealthcare.com/verify.php?email= '.ME @ email.com'。 &ハッシュ= '。67f7fb873eaf29526a11a9b7ac33bfac'

+0

正確には何が機能していませんか? – erisco

+0

あなたが得るエラーは? – ain

+0

エラーは「URLが無効か、既にアカウントを有効にしています」というエラーです。これはPHPが返すもので、一致がなければ、URLとvar設定の間に切断があると推測します。 – Osman

答えて

1

PHPが堅牢であるように見えますが、私はそれがあなたの問題ではないと思います。 URLに'.'という2つの数字があるが、私は助けても気付かなかった。私はあなたがそれらを取り除くために必要があると思う:

http://www.aliahealthcare.com/[email protected]&hash=67f7fb873eaf29526a11a9b7ac33bfac

確かに、mysql_real_escape_stringを使用する前に、電子メールやハッシュ値外にこだましてみてください。私はコードがうまくいけば賭けるだろうが、私は入力を疑う。

+0

それは引用だけでなく、期間の感謝でした! – Osman

1

コードが

私はecho'dされるSQLがOKに見えるこの

$sql = "SELECT email, hash, active FROM users WHERE email='".$email."' AND hash='".$hash."' AND active='0'"; 

echo $sql; 

$search = mysql_query($sql); 

チェックをやって、そしてphpmyadminの中またはコマンドラインパラメータを経由して、それを実行してみてくださいしようとするだろうが、行ことを確認するために私には正常に見えますこれらのパラメータには存在します

関連する問題