【问题标题】:php result it's not > 0 if i have 3 variables如果我有 3 个变量,php 结果不是 > 0
【发布时间】:2017-11-25 05:52:06
【问题描述】:

这可能是一个非常简单的问题,但我正在处理登录表单。现在它工作正常 - 如果用户名和密码正确,则您成功登录。但是现在我又做了一个变量 $breed,如果品种也是正确的,我需要成功登录的 php 代码。如果还包括第三个变量 ($breed),则此代码不起作用(它显示):

<?php 
require "conn.php";
$user_name = $_POST["user_name"];
$user_pass = $_POST["password"];
$breed = $_POST["breed"];
$mysql_qry = "select * from tabela where username like '$user_name' and password like '$password' and breed like '$breed';";
$result = mysqli_query($conn ,$mysql_qry);
if(mysqli_num_rows($result) > 0) {
echo "log";
}
else {
echo "login not success";
}

?>

android中的java代码也可能有问题,但我怀疑它是否可以完美地工作,如果只有用户名和密码:

@Override
    protected void onPostExecute(String result) {


        if(result.contentEquals("log")) {

            context.startActivity(new Intent(context, Boxer.class));

        }else
        {
            Toast.makeText(context, "Wrong Username or Password!", Toast.LENGTH_SHORT).show();
        }



    }

【问题讨论】:

  • 向我们展示登录表单
  • 表单是在android studio中制作的,我添加了一些代码
  • 它显示了什么?这对 SQL 注入开放,您不应该使用 like 进行精确比较,并且不要存储纯文本密码。
  • 试试这个查询select * from tabela where username = '$user_name' and password= '$password' and breed = '$breed';
  • 当心用户“Little Bobby Tables” - (强制性xkcd参考)

标签: java php


【解决方案1】:

理想情况下,您应该使用计数函数来检索具有给定组合的用户数

select count(*) as count from LOGIN_TABLE where USERNAME='your_input' and PASSWORD='your_input' and BREED='your_input';

这种类型的查询有助于减少对您的代码的可能威胁。永远不要在匹配用户名和密码时使用 LIKE,因为它们应该是完全匹配的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多