2014-01-29 3 views
0

Я новичок в PHP, и я просто строить простую страницу входа в систему с PHP здесь мой код:Возникли проблемы с PHP страницу входа

<?php 
    $username=$_POST['uname']; 
    $password=$_POST['pass']; 
    $con=mysqli_connect("localhost","root","","myblog"); 
    $sql="SELECT username,password FROM users WHERE username='$username' AND password='$password'"; 
    if(mysqli_query($con,$sql)) { 
     echo "login successful"; 
    } else { 
     echo "login failed"; 
    } 
?> 

Проблема я получаю «Войти успешно» тзд даже с неправильные учетные данные (случайные вменения). Пожалуйста, меня направляют.

+3

Пожалуйста, пожалуйста, пожалуйста, пожалуйста, пожалуйста ** узнать о инъекции SQL **! Побег ваших входов. – BenM

+0

ответ лежит на вашем запросе, и вам не хватает –

ответ

0

попробовать это

вы должны проверить, производится ли результат или нет ... Вместо запроса правильно или нет ..

<?php 
$username=$_POST['uname']; 
$password=$_POST['pass']; 
$con=mysqli_connect("localhost","root","","myblog"); 
$sql="SELECT username,password FROM users WHERE username='$username' AND password='$password'"; 

$result =mysqli_query($con,$sql); 
$count = mysqli_num_rows($result); 

if($count>0) 
{ 
echo "login successful"; 
} 
else 
{ 
echo "login failed"; 
} 
?> 
+0

, кто проголосовал ...? могу ли я знать, что со мной не так ... – user1844933

+0

Потому что вы не упомянули о необходимости избежать значений '$ _POST'. – BenM

+0

@@ BenM взгляните на его вопрос, я ответил только на его вопрос, он может не нуждаться в побеге. Хорошо, надеюсь, что вы знаете, что подготовленное заявление лучше всего подходит для escapte, здесь никто не упоминал, что вы скажете для этого. . – user1844933

0

Попробуйте сделать это следующим образом. использовать mysqli_num_rows()

$result = mysqli_query($con,$sql); 

    if(mysqli_num_rows($result) >0){ 
     echo "login successful"; 
    }else { 
     echo "login failed"; 
    } 
0

вы не должны проверить, если запрос был успешным, но если результат имеет несколько строк ..

$answer = mysqli_query($con,$sql) 
if( mysqli_num_rows($answer)>0 ) { ... there is such record... } 
0

попробовать этот

<?php 
    $username=$_POST['uname']; 
    $password=$_POST['pass']; 

    $username = mysql_real_escape_string(stripslashes($username)); 
    $password = mysql_real_escape_string(stripslashes($password)); 

    $con=mysqli_connect("localhost","root","","myblog"); 
    $sql="SELECT username,password FROM users WHERE username='$username' AND password='$password' LIMIT 1 "; 
    $result = mysqli_query($con,$sql); 
    if($row = mysqli_fetch_assoc($result)) 
    { 
     echo "login successful"; 
    } 
    else 
    { 
     echo "login failed"; 
    } 
?> 

Ваше состояние не является правильным, также используйте LIMIT 1 всякий раз, когда вы пытаетесь получить точный результат.

Вы должны пройти переменную пост через mysql_real_escape_string и stripslashes для предотвращения SQL инъекций

Смежные вопросы