Php 课时
您好,我只是停留在语法,谁能帮我下一个代码Php 课时,php,Php,您好,我只是停留在语法,谁能帮我下一个代码 class User { protected $userID = preg_replace('#[^0-9]#i', '', $_SESSION['user_id']); protected $useremail = preg_replace('#[^A-Za-z0-9@_.-]#i', '', $_SESSION['user']); protected $userPassword = preg_replace('#[^A-Za-z
class User {
protected $userID = preg_replace('#[^0-9]#i', '', $_SESSION['user_id']);
protected $useremail = preg_replace('#[^A-Za-z0-9@_.-]#i', '', $_SESSION['user']);
protected $userPassword = preg_replace('#[^A-Za-z0-9]#i', '', $_SESSION['user_password']);
public function CheckUserLogin(){
if(!isset($_SESSION['user'])){
header("location: login.php");
exit();
}
//Try to find user from session data in database
$sql = "SELECT * FROM users WHERE id = '$this->userID' AND email = '$this->useremail' AND password = '$this->userPassword' LIMIT 1";
$res = mysql_query($sql) or die(mysql_error());
$userMatch = mysql_numrows($res);
if ($userMatch == 0) {
header("location: login.php");
exit();
}
}
}
首先,请注意,在声明属性时,不能为其指定编译时未知的值——这意味着您不能调用函数来初始化属性 此代码:
protected $userID = preg_replace('#[^0-9]#i', '', $_SESSION['user_id']);
无效
作为参考,您可以阅读手册页面(引用相关句子): 它们是通过使用关键字
public
,protected
中的一个来定义的,
或private
,后跟正常变量声明这个 声明可能包括初始化,但此初始化 必须是一个常量值——也就是说,它必须能够被计算 在编译时,不能按顺序依赖于运行时信息 待评估
您应该首先申报财产;然后,稍后(例如,在类的末尾)初始化它:
class User {
protected $userID;
public function __construc() {
$this->userID = preg_replace('#[^0-9]#i', '', $_SESSION['user_id']);
}
}
首先,请注意,在声明属性时,不能为其指定编译时未知的值——这意味着您不能调用函数来初始化属性 此代码:
protected $userID = preg_replace('#[^0-9]#i', '', $_SESSION['user_id']);
无效
作为参考,您可以阅读手册页面(引用相关句子): 它们是通过使用关键字
public
,protected
中的一个来定义的,
或private
,后跟正常变量声明这个 声明可能包括初始化,但此初始化 必须是一个常量值——也就是说,它必须能够被计算 在编译时,不能按顺序依赖于运行时信息 待评估
您应该首先申报财产;然后,稍后(例如,在类的末尾)初始化它:
class User {
protected $userID;
public function __construc() {
$this->userID = preg_replace('#[^0-9]#i', '', $_SESSION['user_id']);
}
}
简而言之:您只能将常量表达式指定给类声明内的属性(在类主体内,但在方法外)。其他所有内容(变量、函数调用等)仅限于代码块(main、函数和方法) 然而,你的代码在你展示它的方式是非常神奇的,你应该避免在任何情况下。改用构造函数
class User {
protected $userID;
protected $useremail;
protected $userPassword;
public function __construct ($userId, $user, $password) {
$this->userID = preg_replace('#[^0-9]#i', '', $userId);
$this->useremail = preg_replace('#[^A-Za-z0-9@_.-]#i', '', $user);
$this->userPassword = preg_replace('#[^A-Za-z0-9]#i', '', $password);
}
// ..
}
简而言之:您只能将常量表达式指定给类声明内的属性(在类主体内,但在方法外)。其他所有内容(变量、函数调用等)仅限于代码块(main、函数和方法) 然而,你的代码在你展示它的方式是非常神奇的,你应该避免在任何情况下。改用构造函数
class User {
protected $userID;
protected $useremail;
protected $userPassword;
public function __construct ($userId, $user, $password) {
$this->userID = preg_replace('#[^0-9]#i', '', $userId);
$this->useremail = preg_replace('#[^A-Za-z0-9@_.-]#i', '', $user);
$this->userPassword = preg_replace('#[^A-Za-z0-9]#i', '', $password);
}
// ..
}
解析错误:语法错误,C:\xampp\htdocs\social\libs\user.php第6行中意外的“(”,应为“,”或“;”;我无法执行受保护的$userPassword=preg\u替换(“#[^A-Za-z0-9]#i',”,$\u会话['user\u password']);我现在不知道为什么会发生错误:语法错误,意外”(,在C:\xampp\htdocs\social\libs\user.php第6行中应为“,”或“;”,我无法执行受保护的$userPassword=preg_replace(“#[^A-Za-z0-9]#i',”,$#会话['user_password');我现在不知道为什么