使用OO-PHP进行简单登录

时间:2012-10-30 18:29:45

标签: php syntax-error

我正在尝试验证,在提交表单时usernamepassword不为空。

表格

<form action="usercheck.php" method="post">
    User: <input type="text" name="username" maxlength="10" />
    Pass: <input type="password" name="password" maxlength="10" />      
    <input type="submit" value="Submit" />
</form>

usercheck.php

<?php

class Vuln{

    public $username = $_POST['username'];
    public $password = $_POST['password'];

    public function ShowErrors(){
        if($this->username == '' || $this->password == ''){
            return 'username or password field blank';  
        }
        else{
            echo stripslashes('we\'re good');
        }   
    }

    $entered = new Vuln;
    echo $entered->ShowErrors();

}


?>

当我测试时,它说:

  

解析错误:语法错误,意外T_VARIABLE,期待T_FUNCTION在线:

    $entered = new Vuln;

6 个答案:

答案 0 :(得分:5)

你不能在类定义中包含代码

    class Vuln {
       //> Your class definition
    }

    //> Outside of the class

    $entered = new Vuln;
    echo $entered->ShowErrors();

我强烈建议您阅读PHP Doc

中的所有基础知识

答案 1 :(得分:1)

您的部分代码直接放在类中:

$entered = new Vuln;
echo $entered->ShowErrors();

那些应该放在类定义之外。如下所述,更改:

public $username = $_POST['username'];
public $password = $_POST['password'];

public $username;
public $password;

并在构造函数或类外部启动变量。

答案 2 :(得分:0)

类似

$entered = new Vuln;
$entered->username = $_POST['username'];
$entered->password = $_POST['password'];
$entered->ShowErrors();

您目前正在课堂上实例化您的课程。

编辑:添加了更多说明 - 这实例化了类,应该在类之外。删除类中的实例化。

另一个编辑更改了变量名称以匹配示例

答案 3 :(得分:0)

类定义中不应找到执行对象的代码。

你可能意味着这个:

<?php

class Vuln{

    public $username = $_POST['username'];
    public $password = $_POST['password'];

    public function ShowErrors(){
        if($this->username == '' || $this->password == ''){
            return 'username or password field blank';  
        }
        else{
            echo stripslashes('we\'re good');
        }   
    }


}

$entered = new Vuln;
echo $entered->ShowErrors();

答案 4 :(得分:0)

什么阻止你使用

<form action="usercheck()" id="form" method="post">

并使用以下JS

var theForm = document.forms["form"];
var user = theForm.elements["user"];
var pass = theForm.elements["pass"];

if(user.value==null || user.value=="")
{
alert("First name(s) must be filled out");
return false;
}

else if(pass.value==null || pass.value=="")
{
    alert("Last name must be filled out");
return false;
}

else
{
return true;
}

答案 5 :(得分:0)

您无法在类本身内创建类的对象。提交表单时必须调用该类。同时将类文件名更改为vuln.php,并将usercheck.php更新为以下代码。

     if($_POST){
        include("Vuln.php");
        $entered = new Vuln;
        echo $entered->ShowErrors();
     }

希望它可以帮到你。