2016-04-02 2 views
0

Я слежу за учебником по андроиде, и это связано с привязкой приложения android к вашей базе данных. Андроид бит работает просто отлично отдельно от входа части, я думаю, вызвана проблемой в PHP script.Here это PHP код:PHP isset is not working

<?PHP 
include_once("conn.php"); 
if (isset($_POST['txtUsername']) && isset($_POST['txtPassword'])) 
{ 
    $username = $_POST['txtUsername']; 
    $password = $_POST['txtPassword']; 

    $query = "SELECT username, password FROM tbl_client " . 
     " WHERE username = '$username' AND password = '$password'"; 

    $result = mysqli_query($conn, $query); 

    if ($result->num_rows > 0) 
    { 

     if (isset($_POST['mobile']) && $_POST['mobile'] == "android") 
     { 
      echo "success"; 
      exit; 
     } 
     echo "login successful"; 
    } //header("location: index.php"); //replace login.php with your url 
    else 
    { 
     echo "Login Failed <br/>"; 
    } 
} 

Android код ниже

@Override 
    public void processFinish(String result) { 
     if (result.equals("success")){ 
      Intent intent=new Intent(this,Homepage.class); 
      startActivity(intent); 
     } 
     else 
     { 
      Toast.makeText(Login.this,"Login Unsuccessful", Toast.LENGTH_SHORT).show(); 
     } 

} 

бит успеха никогда не повторяется при использовании isset, вместо этого он прыгает прямо, чтобы войти в систему успешно. Мне нужен этот бит для эха, чтобы мое приложение для Android могло правильно войти в систему.

+0

Обязательно у вас есть комментарий к уязвимости SQL-инъекций. Кроме того, похоже, что вы храните пароли в виде обычного текста. Этот урок должен быть стыдно за себя. Вероятно, это не источник вашей непосредственной проблемы, но вот некоторые требуемые чтения: [Как я могу предотвратить SQL-инъекцию в PHP?] (Http://stackoverflow.com/questions/60174/how-can-i-prevent-sql- инъекции в php) и [Secure hash and salt для паролей PHP] (http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords) –

+0

put print_r ($ _ POST) ; после emed

ответ

1
if(isset($_POST['mobile']) && $_POST['mobile'] == "android") 
{ 
    echo "success"; 
    exit; 
    } 

isset($_POST['mobile']) && $_POST['mobile'] изменить его к этому, так что вы можете понять, если ошибка о параметре

if(isset($_POST['mobile']) 
    { 
     if(($_POST['mobile'] == "android")) 
     { 
     echo "success"; 
     exit; 
      } 
     } 
    else 
     { echo "mobile parameter is not set"; 
+0

Привет, спасибо за быстрый ответ, но все же он не смог достичь успеха ... я все еще не могу войти даже с правильными учетными данными – josh

+0

Логического разницы между первым и вторым кодом нет. Второй код - всего 2 символа. – boxHiccup

+0

get isset ($ _ POST ['mobile']) выше ($ _POST ['mobile'] == "android"), чтобы вы могли понять, есть ли проблема о параметре (мобильном телефоне) –

0

Вы уверены, что mobile действительно параметр POST? Потому что, если вы вызываете свое приложение для Android, то URL-адрес: http://www.yoursite.xyz/login.php?mobile=android, то это параметр GET, и вы можете найти это в супергелобате $ _GET.

+0

Только после учебника, в соответствии с ним его параметр POST. И как я могу использовать $ _GET в этом случае. Как я уже упомянул, что я все еще новичок в этом – josh

+0

, я не помню, как сделаны запросы Android HTTP, но вы обязательно должны указать ссылку как параметр чего-либо. Поэтому, если ваш сайт является loremipsum.org. И вы используете POST, ваша ссылка должна быть http://www.loremipsum.org/login.php, с другими параметрами, указанными позже с помощью java-кода. Если вы используете GET, ваша ссылка должна быть такой: http://www.loremipsum.org/login.php?mobile=android. Кстати, код, указанный в вашем вопросе, - это не весь код, можете ли вы вставить код запроса http? – boxHiccup