2013-08-17 3 views
-1

У меня был простой сценарий входа, который отлично работал под mysql, а im в настоящее время пытается его портировать в mysqli, и я просто не могу заставить его работать.Проблема преобразования Mysql to Mysqli: login

login($username, $password) { 
    $link = mysqli_connect('localhost', 'user', 'pw', 'db'); 
    $user_id = user_id_from_username($username); 
    $username = sanitize($username); 
    $password = md5($password); 
    $loginquery = "SELECT COUNT(DISTINCT user_id) FROM users WHERE username='$username' AND password = '$password'"; 
    $count = mysqli_query($link, $loginqueryquery); 
    $countarray = mysqli_fetch_array($count, MYSQLI_BOTH); 
    $countarrayres = $countarray[0]; 
    if($countarrayres == 1) {return true ;} else {return false ;} 
} 

ив попробовал все это на тестовой странице: я установить $ имя = тест, и $ пароль = тест, который увязанный с моим «тест» пользователя в моей дб. это вызывает $ countarrayres = 1, когда я печатаю его. я также получаю отпечаток 0 для того же самого, если я изменяю либо pw, либо имя пользователя на что-то несуществующее, поэтому оно предполагает, что оно работает, но не сбито с толку.

страницы этот скрипт действует в просто:

$login = login($username, $password); 
    if($login === false) { "wrong password/username bro"; } else { //log in based on session user_id;} 

ив попытался изменить ложное к истине, но я по-прежнему получаю сообщение «неверный пароль/имя пользователя братан», так что бы предложить Theres большую проблему, чем возможно, функция? im miffed относительно того, что происходит здесь, потому что единственное, что изменилось, это функции mysql -> mysqli, ничего больше. есть идеи?

EDIT: $ test был опечаткой, это фактически $ login в моем скрипте. извините.

+1

Это требует для базовой отладки. Что не так, где? Что 'mysqli_error()' должен сказать о запросе? Что содержит запрос при его выводе и что происходит, если вы запускаете запрос в phpMyAdmin? –

+0

он не позволяет мне войти в систему и показывает сообщение «неправильное имя пользователя/пароль» каждый раз, является ли комбинация правильной или неправильной. mysqli_error() ничего не выводит для меня. $ count output: mysqli_result Object ([current_field] => 0 [field_count] => 1 [lengths] => Array ([0] => 1) [num_rows] => 1 [type] => 0) и $ countarray выходы Array ([0] => 1 [COUNT (DISTINCT user_id)] ​​=> 1) Так им удалось извлечь номер один от с легкостью. он просто не хочет работать в функции. если я запускаю запрос с тестом в myphpadmin, так как переменные i получают 1, желаемый результат. – Grimbonie

ответ

0

В тестовой части вы устанавливаете $ тест переменной в результате авторизации(), но затем проверить, если $ Войти ложна ...

0
$test = login($username, $password); 
    if($login === false) { "wrong password/username bro"; } else { //log in based on session user_id;} 

должен быть

$test = login($username, $password); 
    if($test === false) { "wrong password/username bro"; } else { //log in based on session user_id;}