由于某些未知原因,Php登录出现错误

由于某些未知原因,Php登录出现错误,php,Php,我的PHP知识水平:新手 学习资源:编解码器、Newboston、维基百科、PHP文档 我正在努力实现的目标:我正在努力学习如何使用面向对象的PHP,因为从长远来看,它比过程方法更有效。如果输入的名称和密码与数据库和relogin.php匹配,我将尝试将用户重定向到login.php页面,但失败。您的函数声明丢失(),因此出现错误 public function __construct() { } public function DB_Connect() { } public function

我的PHP知识水平:新手

学习资源:编解码器、Newboston、维基百科、PHP文档


我正在努力实现的目标:我正在努力学习如何使用面向对象的PHP,因为从长远来看,它比过程方法更有效。如果输入的名称和密码与数据库和relogin.php匹配,我将尝试将用户重定向到login.php页面,但失败。

您的函数声明丢失
()
,因此出现错误

public function __construct() { }
public function DB_Connect() { }
public function Validate() { }  
此外,您正在使用不在函数范围内的变量。你需要在声明中传递它们

public function __construct($name, $password)
如果要调用非静态函数static,请将
$this::
替换为
$this->

您在
if
语句中使用了反勾号,您只能使用

您正在SQL语句中使用反向反勾号

您的
$connection
未在
登录
类中传递

您正在
Login
中设置变量,而不使用
private
public
protected

如果没有错误,为什么要设置
error\u reporting

有太多错误,我建议您使用合适的IDE。

两件事:

  • 您的构造声明错误(缺少(),未传递您使用的参数)
  • 字符串使用撇号'代替`
  • 将类中的全局变量设置为私有或受保护
  • 对post变量使用setter和getter,而不是直接赋值。post数组可以为空
这样做:

class Login
{
    // Not specially need these globals.
    private $userName;
    private $password;

    /* better is this, because you use it one time.
       Sanatize your input before passing to method below!
       Sanatizing input is general logic: outside your login class :-)
    */
    public function login($userName, $password)
    {
        // logic
    }
}

但我们为什么要使用()如果我没有或不需要手动更改任何参数?我想我可以省去它们。@Asperger有时做一些事情会更好,例如使用带一行if/for/while的括号。更多不带括号的行可能会导致奇怪的事情:-)我现在将测试它。HenriI建议,因为您是PHP新手,也许尝试获取此代码在考虑OOP之前,先按程序进行工作。代码中几乎没有任何正确的东西,这表明您对基本级别的工作方式缺乏了解。但是,尝试OOP做得很好!$Eamonn您能陈述一些您认为错误的事情吗?当然。首先,您需要使用
()
声明或调用函数-因此
函数验证{…}
$this->Validate
不会为您做任何事情。您还需要理解“范围”的概念-您需要将数据传递到函数中(通过
()
)例如,您的
验证
函数需要您的
$connection
对象,以及
$name
$password
变量,但不能访问其中任何一个。它的声明应该是这样的:
函数验证(connection$connection,$name,$password){…}