求助,大神们快来帮忙
感觉有语法及结构上需要提请注意的地方:
类属性成员声明,尽量不要用var,而是用private/protected/public来声明,原因如下:
为了兼容php4,php5声明属性依然可以直接使用关键字var,或者放在public, protected, or private之前。但是var并不是必须的。在php 5.0 到5.1.3,var会认为是废弃的, 而且抛出E_STRICT警告,但是5.1.3之后就不再认为是废弃,也不会抛出警告。
如果直接使用var声明属性,而没有public, protected, 或 private,php 5 会认为这个属性为public。
2. include("conn/conn.php"); //连接数据源
这句代码放在类代码结构里面,不太合适。
3. $sql=mysql_query("select * from tb_manager where name='".$x."' and pwd='".$y."'",$conn);
这句代码里面 $x 、$y、$conn 三个变量并没有相应进行定义声明(function chkinput($x,$y)这里面的 $x, $y,只是在chkinput()函数体内才存在)。
4. 类的构造,以__construct命名为好。
---------------------------
以下是修改后的代码(SQL未作进一步检查):
<?php
session_start();
include("conn/conn.php"); //连接数据源
class chkinput
{
private $name,$pwd,$conn;
function __construct($x, $y, $c)
{
$this->name = $x;
$this->pwd = $y;
$this->conn = $c;
}
function checkinput()
{
$sql = mysql_query("select * from tb_manager where name='" . $this->name . "' and pwd='" . $this->pwd . "'", $this->conn);
$info = mysql_fetch_array($sql); //检索管理员名称和密码是否正确
if ($info == false) { //如果管理员名称或密码不正确,则弹出相关提示信息
echo "<script language='javascript'>alert('您输入的管理员名称错误,请重新输入!');history.back();</script>";
exit;
} else { //如果管理员名称或密码正确,则弹出相关提示信息
echo "<script>alert('管理员登录成功!');window.location='index.php';</script>";
$_SESSION['admin_name'] = $info['name'];
$_SESSION['pwd'] = $info['pwd'];
}
}
}
$a_name = $_POST['name']; //接收表单提交的用户名
$a_pwd = $_POST['pwd']; //接收表单提交的密码
$obj = new chkinput(trim($a_name), trim($a_pwd), $conn); //创建对象
$obj->checkinput(); //调用类
?>