试图传递一个参数,而不是工作:(

时间:2012-10-09 03:14:57

标签: php html

我正在尝试将参数传递给php函数。 但是没有发生任何事情,我的意思是代码没有将index.php中的参数传递给newPHPClass.php 是否可以在表单动作中调用函数? 这是我的代码。

的index.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;   
        }
    }

2 个答案:

答案 0 :(得分:1)

您的INSERT语法错误,

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

您当前的查询容易被SQL Injection攻击,请花点时间阅读以下文章,

Best way to prevent SQL injection in PHP?

更新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;   
}

答案 1 :(得分: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;   
    }
}

永远不要检查&gt;登录时为0,您只需要返回一行。将查询放在“而不是”里面意味着它可以读取变量,而不会像查询那样连接查询。