我想獎勵用戶,如果他們引用了朋友。我一直在使用下面的代碼來做到這一點,但我擔心它可能不安全(用戶使用虛假賬號來遊戲)。我可以改進這個代碼嗎?還有其他的替代腳本可以做得更好嗎?通過鏈接腳本進行PHP引用。我的安全嗎?你知道更好的嗎?
if (isset($_GET['refer']) || isset($_GET['r'])) {
global $database, $session;
if (!$session->logged_in) {
$username = mysql_safe($_GET['refer']);
if($database->usernameTaken($username)) {
$userip= getRealIP();
$q="SELECT uname FROM " . TBL_USERS . " WHERE ipad = '$userip'";
$result=mysql_query($q, $database->connection);
$result = mysql_numrows($result);
if ($result == 0) {
$_SESSION['referer'] = $username;
}
}
}
function getRealIP()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
你可以用'mysqli'或'PDO'開始而不是'mysql_ *'來避免sql注入 – Tifa
你用什麼方法生成推薦鏈接?它是用一種隨機標記或其他東西生成的?如果它是隨機標記生成的,那麼你應該可以,因爲引用鏈接(標記)必須與數據庫中存在的鏈接相匹配。人們幾乎不可能猜到正確的引用標記以匹配數據庫中的引用標記,否則它將被拒絕。 – Faron
我使用他們的用戶名。 ?refer = username – Charlie