2013-07-10 45 views
-1

我無法找到失蹤的大括號,但我得到這個消息"Parse error: syntax error, unexpected $end in /site/public_html/core/functions/users.php on line 75"功能頁面語法錯誤

對於下面的代碼..

<?php 

function activate($email, $email_code) { 
    $email = mysql_real_escape_string($email); 
    $email_code = mysql_real_escape_string($email_code); 

    if (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email` = '$email' AND `email_code` = '$email_code' AND `active` = 0"), 0) == 1) { 
     mysql_query("UPDATE `users` SET `active` = 1 WHERE `email` = '$email'"); 
     return true; 
    } 
    else { 
     return false; 
    } 


function change_password ($user_id, $password) { 
    $user_id = (int)$user_id; 
    $password = md5($password); 

    mysql_query("UPDATE `users` SET `password` = '$password' WHERE `user_id` = $user_id"); 
} 

function register_user($register_data) { 
    array_walk($register_data, 'array_sanitize'); 
    $register_data['password'] = md5($register_data['password']); 

    $fields = '`' . implode('`, `', array_keys($register_data)) . '`'; 
    $data = '\'' . implode('\', \'', $register_data) . '\''; 

    mysql_query("INSERT INTO `users` ($fields) VALUES ($data)"); 
    email($register_data['email'], 'Activate your account', " 
    Hello " . $register_data['username'] . ", \n\n You need to activate your account, so use  the link below: \n\nhttp://www.mysite.com/activate.php?email=" . $register_data['email'] . "&email_code=" . $register_data['email_code'] . "\n\n~Admin~ "); 
} 

function user_count() { 
    return mysql_result(mysql_query("SELECT COUNT('user_id') FROM `users` WHERE `active` = 1"), 0); 
} 

function user_data($user_id) { 
    $data = array(); 
    $user_id = (int)$user_id; 

    $func_num_args = func_num_args(); 
    $func_get_args = func_get_args(); 

    if ($func_num_args &gt; 1) { 
     unset($func_get_args[0]); 

     $fields = '`' . implode('`, `', $func_get_args) . '`'; 
     $data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM `users` WHERE `user_id` = $user_id")); 

     return $data; 
    } 

} 

function logged_in() { 
    return (isset($_SESSION['user_id'])) ? true : false; 
} 

function user_exists($username) { 
    $username = sanitize($username); 
    return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'"), 0) == 1) ? true : false; 
} 

function email_exists($email) { 
    $email = sanitize($email); 
    return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email` = '$email'"), 0) == 1) ? true : false; 
} 

function user_active($username) { 
    $username = sanitize($username); 
    return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `active` =1"), 0) ==1) ? true : false; 
} 

function user_id_from_username ($username) { 
    $username = sanitize($username); 
    return (mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id')); 
} 

function login ($username, $password) { 
    $user_id = user_id_from_username($username); 

    $username = sanitize($username); 
    $password = md5($password); 

    return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) == 1) ? $user_id : false; 
} 

?> 

感謝您的幫助。

+4

從未聽說過壓痕? – str

+1

我認爲第一個函數不會在'else'關閉之後關閉 – Sergio

+4

這個問題似乎是無關緊要的,因爲它是關於調試一些可以通過使用體面IDE輕鬆解決的代碼。 – HamZa

回答

-1

你錯過了}

應該

function activate($email, $email_code) { 
$email = mysql_real_escape_string($email); 
$email_code = mysql_real_escape_string($email_code); 

if (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email` = '$email' AND `email_code` = '$email_code' AND `active` = 0"), 0) == 1) { 
mysql_query("UPDATE `users` SET `active` = 1 WHERE `email` = '$email'"); 
return true; 
} else { 
return false; 
} 
} <---missing bracket here 
+2

downvoter請發表評論,告訴我爲什麼,也許我會改進我的回答 –

+2

我不認爲他的缺失大括號屬於文件末尾。 – BLaZuRE

+1

是的,他錯過了。這不是什麼爭議。這是支架的位置。我不認爲他希望他的功能包含功能。 – BLaZuRE

2

它看起來像你的activate()功能缺少右括號}

function activate($email, $email_code) { 
    $email = mysql_real_escape_string($email); 
    $email_code = mysql_real_escape_string($email_code); 

    if (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email` = '$email' AND `email_code` = '$email_code' AND `active` = 0"), 0) == 1) { 
    mysql_query("UPDATE `users` SET `active` = 1 WHERE `email` = '$email'"); 
    return true; 
    } else { 
    return false; 
    } 

} /* MISSING BRACKET */ 

function change_password ($user_id, $password) { 
    ... 
0

你的第一function缺少一個右括號}

function activate($email, $email_code) { 
    $email = mysql_real_escape_string($email); 
    $email_code = mysql_real_escape_string($email_code); 

    if (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email` = '$email' AND `email_code` = '$email_code' AND `active` = 0"), 0) == 1) { 
     mysql_query("UPDATE `users` SET `active` = 1 WHERE `email` = '$email'"); 
     return true; 
    } else { 
     return false; 
    } 

此外,壓痕將有助於找到這樣更容易(符合您的括號和一個IDE)問題

0

你不關閉你的第一個功能,所以只需在最後加上}

function activate($email, $email_code) { 
$email = mysql_real_escape_string($email); 
$email_code = mysql_real_escape_string($email_code); 

if (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email` = '$email' AND `email_code` = '$email_code' AND `active` = 0"), 0) == 1) { 
mysql_query("UPDATE `users` SET `active` = 1 WHERE `email` = '$email'"); 
return true; 
} else { 
return false; 
} 
} 

哦,並順便停止使用常規的PHP mysql_ *函數。他們將被棄用的PHP 5.5的,所以看看mysqliPDO

0

我覺得第一個功能「激活」不打烊,否則在成交後添加}

function activate($email, $email_code) { 
    $email = mysql_real_escape_string($email); 
    $email_code = mysql_real_escape_string($email_code); 

    if (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email` = '$email' AND `email_code` = '$email_code' AND `active` = 0"), 0) == 1) { 
     mysql_query("UPDATE `users` SET `active` = 1 WHERE `email` = '$email'"); 
     return true; 
    } else { 
     return false; 
    } 
} 
^ 
here