-3

我正在尝试将参数传递给 php 函数。但是什么都没有发生,我的意思是代码没有将 index.php 中的参数传递给 newPHPClass.php 并且可以在表单操作中调用函数吗?这是我的代码。

索引.php

  <?php include '../con_db/connect.php'; ?>
    <?php include '../class/newPHPClass.php'; ?>

<form action="index.php" method="post">
        <label>Username:</label><input type="text" name="username"/><br/>
        <label>Password:</label><input type="text" name="password"/><br/>
        <input type="submit" value="Submit" name="submit"/>
    </form>

    <?php
    if (isset($_POST['submit'])) {
        $username = $_POST['username'];
        $password = $_POST['password'];
        $check = new newPHPClass();
        $check->checkLogin($username, $password);
        }
    ?>

和班级

include '../con_db/connect.php';

class newPHPClass {

    public function checkLogin($username, $password) {
        $select = mysql_query('SELECT * FROM users WHERE username = "' . $username . '" AND password = "' . $password . '"');
        if (count($select) > 0) {
            echo "true";
            return true; 
        } else {
            echo "false";
            return false;   
        }
    }
4

2 回答 2

1

你的INSERT语法不正确,

$select = mysql_query("INSERT FROM users (username, password)
                          VALUES ('$username', '$password')"); 

您当前的查询存在漏洞SQL Injection,请花点时间阅读下面的文章,

在 PHP 中防止 SQL 注入的最佳方法是什么?

更新 1

$sql = "SELECT COUNT(*) totalCount 
        FROM users
        WHERE username = '$username' AND password = '$password'");
$result = mysql_query($sql, $link) or die(mysql_error());
$row = mysql_fetch_assoc($result);
if($row["totalCount"] > 0)
{
    echo "true";
    return true; 
} 
else 
{
     echo "false";
     return false;   
}
于 2012-10-09T03:18:26.167 回答
0

类中的语法完全混乱。首先,您为什么要调用 INSERT 来检查登录。其次,它是 INSERT INTO,即使它是您在此处需要的 INSERT,但事实并非如此。

$select = mysql_query("SELECT * FROM users WHERE username = '$username' AND password = '$password'");
if($select->num_rows()==1){
        echo "true";
        return true; 
    } else {
        echo "false";
        return false;   
    }
}

永远不要在登录时检查 > 0,你只希望返回一行。还将查询放在 " 而不是 ' 中意味着它可以读取变量而无需按照您的方式连接查询。

于 2012-10-09T03:27:55.443 回答