如何从函数中获取字符串

时间:2016-10-07 14:44:28

标签: php

所以,这是我的代码:

class Functions{
    public static function login($email,$password){
        $email = $_GET['email'];
        $password = $_GET['password'];
        if(isset($_GET['submit']) AND isset($email) AND isset($password)){
            $password = md5($password);
            $sql = "SELECT * FROM users WHERE email='$email' AND password='$password'";
            $result = $conn->query($sql);
            if ($result->num_rows > 0) {
                $row = $result->fetch_assoc();
                $_SESSION['nume'] = $row["name"];
                $_SESSION['uid'] = $row["id"];
                $_SESSION['admin'] = $row["admin"];
                $_SESSION['email'] = $row["email"];
                $_SESSION['points'] = $row["points"];
            }else{
                $errortxt = "Invalid Login Credentials";
                $error = true;
            }
        }
        return $error;
    }
}

在我的HTML文件中,我正在调用这样的函数:

Function::login($email,$password);

但我想知道如何在HTML文件中获取$ errortxt字符串。

谢谢!

2 个答案:

答案 0 :(得分:0)

您只需要一个简单的修复:

class Functions{
public static function login($email,$password){
    $response['error'] = false;
    $response['errortxt'] = "";
    $email = $_GET['email'];
    $password = $_GET['password'];
    if(isset($_GET['submit']) AND isset($email) AND isset($password)){
        $password = md5($password);
        $sql = "SELECT * FROM users WHERE email='$email' AND password='$password'";
        $result = $conn->query($sql);
        if ($result->num_rows > 0) {
            $row = $result->fetch_assoc();
            $_SESSION['nume'] = $row["name"];
            $_SESSION['uid'] = $row["id"];
            $_SESSION['admin'] = $row["admin"];
            $_SESSION['email'] = $row["email"];
            $_SESSION['points'] = $row["points"];
        }else{
            $response['error'] = true;
            $response['errortxt'] = "Invalid Login Credentials";
        }
    }
    return $response;
}
}

你需要这样称呼它:

$fnCallStatus = Function::login($email,$password); //Now you have the response;
if($fnCallStatus['error']) //we have an error
{
    echo $fnCallStatus['errortxt']; //we print the message
}

答案 1 :(得分:0)

你好我修改了你的代码,因为它缺乏良好的编码原则和良好的品味(调用超全局$ _GET变量总是会在请求之后给你一些东西,尽管你在函数参数中添加了其他东西)。

class Functions{

    public static function login($email,$password)
    {
        $error['is'] = true;

        $email = htmlspecialchars($email);
        $password = md5(htmlspecialchars($password));

        if(!empty($email) AND !empty($password))
        {
            $sql = "SELECT * FROM users WHERE email='$email' AND password='$password'";
            $result = $conn->query($sql);
            if ($result->num_rows > 0)
            {
                $row = $result->fetch_assoc();
                $_SESSION['nume'] = $row["name"];
                $_SESSION['uid'] = $row["id"];
                $_SESSION['admin'] = $row["admin"];
                $_SESSION['email'] = $row["email"];
                $_SESSION['points'] = $row["points"];
            } else {
                $error['mismatch'] = "Email or password does not match.";
                return $error;
            }
        } else {
            $error['empty'] = "Please fill all login fields. Thank you";
            return $error;
        }
    }
}

$error = Function::login($_GET['email'],$_GET['password']);

if($error['is'])
{
    if ($error['mismatch']) {
        echo $error['mismatch'];
    } elseif ($error['empty']) {
        echo $error['empty']
    }
}

尽管没有发生,您的函数也始终返回$ error。我修复了这个并且函数返回错误仅在非查询情况下。

函数可以返回数组。因此,如果您需要使用不同的文本设置多个字段,则可以将任何内容放入数组中。这种解决方案更具防摔性。