2016-04-02 155 views
0

我一直在关注一个android教程,它涉及到将android应用程序连接到您的数据库。 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应用程序能够正确登录。

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

强制您有SQL注入漏洞的评论。另外,它看起来像你以纯文本存储密码。本教程应该感到羞耻。可能不是你的直接问题的来源,但这里有一些必要的阅读:[我怎样才能防止SQL注入PHP?](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-注入在PHP中)和[安全哈希和盐的PHP密码](http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords) –

+0

把print_r($ _ POST) ;在<?php之后回显所有$ _POST变量并确保$ _POST ['mobile']实际上存在 – emed

回答

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

isset($_POST['mobile']) && $_POST['mobile'] 改成这样,这样,如果误差为参数,你可以了解你确定mobile真的是一个POST参数?因为如果你通过你的android应用程序调用url:http://www.yoursite.xyz/login.php?mobile=android那么它是一个GET参数,你可以在$ _GET superglobal中找到它。

+0

您好,感谢您的快速回复,但它仍然无法实现成功...即使使用正确凭据仍然无法登录 – josh

+0

第一个和第二个代码之间没有逻辑上的区别。第二个代码只有2个字符长。 – boxHiccup

+0

get($ _ POST ['mobile'])在($ _POST ['mobile'] ==“android”)之上,这样您就可以理解问题是否与参数有关(移动) –

0

+0

只需按照教程它是一个POST参数。我如何在这种情况下使用$ _GET。就像我提到的IM仍然是新的 – 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