我正在尝试验证,在提交表单时username
和password
不为空。
表格:
<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;
答案 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();
}
希望它可以帮到你。