如何解决require_once()PHP警告和致命错误? [英] How can I solve require_once() PHP warnings and fatal error?

查看:172
本文介绍了如何解决require_once()PHP警告和致命错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在PHP(无框架)中构建了一个以MySQL为数据库的登录应用程序。

当我尝试在localhost(WAMP)上运行index.php时,我收到警告和错误。错误说:

警告:require_once(Cl_User.php):无法打开流:C:\ wamp \\\login \ config.php中没有此类文件或目录第18行

错误:致命错误:require_once():在C:\中打开所需的'Cl_User.php'(include_path ='。; C:\ php \ pear')失败wamp\www \login \ config.php第18行

我该怎么做才能删除错误?

这是php文件代码:



a。 index.php:

ob_start();

session_start();

require_once'config.php';



//初始化用户类

$ user_obj = new Cl_User();

?>



if(!empty($ _ POST)){

try {

$ data = $ user_obj-> login($ _POST);

if(isset($ _ SESSION ['logged_in'])&& $ _SESSION ['logged_in']){

header('Location:home.php') ;

}

} catch(异常$ e){

$ error = $ e-> getMessage();

}

}



if(isset($ _ SESSION ['logged_in'])&& $ _SESSION [' logged_in']){

header('Location:home.php');

}

?>



<!DOCTYPE html>

< html lang =en>

< head>

< meta charset =utf-8> ;

< meta http-equiv =X-UA-Compatiblecontent =IE-Edge>

< meta name =viewportcontent = width = device-width,initial-scale = 1>

< title> PHP登录页面演示< / title>

< / head>

< / html>



b。 config.php:





require_once'messages.php';



//特定于站点的配置声明

define('BASE_PATH','http:// localhost / login /(http:// localhost / login /)');

define('DB_HOST','localhost');

define('DB_USERNAME','root');

define('DB_PASSWORD','');

define('DB_NAME','登录');



函数__autoload($ class)

{< br $>
$ parts = explode('_',$ class);

$ path = implode(DIRECTORY_SEPARATOR,$ parts);

require_once $ path 。 '.php';

}

?>



c。 messages.php:

define('FIELDS_MISSING','某些字段缺失');

define('PASSWORD_NOT_MATCH','密码不匹配');

define('USER_REGISTRATION_FAIL','用户注册失败');

define('USER_REGISTRATION_SUCCESS','用户注册成功,您现在可以登录');



define('LOGIN_FIELDS_MISSING','电子邮件和密码丢失');

define('LOGIN_FAIL','电子邮件和密码不匹配');



define('PASSWORD_CHANGE_SUCCESS','密码已成功更改。');



?>



d。 User.php:

class Cl_User

{

protected $ _con;



公共函数__construct()

{

$ db = new Cl_DBclass();

$ this-> _con = $ db-> ; con;

}



公共功能注册(数组$ data)

{

if(!empty($ data)){

//修剪所有传入数据

$ trimmed_data = array_map('trim',$ data);



$ name = mysqli_real_escape_string($ this-> _con,$ trimmed_data ['name']);

$ password = mysqli_real_escape_string($ this - > _con,$ trimmed_data ['password']);

$ cpassword = mysqli_real_escape_string($ this-> _con,$ trimmed_data ['confirm_password']);



//检查电子邮件地址:

if(filter_var($ trimmed_data ['email'],FILTER_VALIDATE_ EMAIL)){

$ email = mysqli_real_escape_string($ this-> _con,$ trimmed_data ['email']);

} else {

抛出新的例外(请输入有效的电子邮件地址!);

}



if((!$ name)| | (!$ email)|| (!$密码)|| (!$ cpassword)){

抛出新的异常(FIELDS_MISSING);

}

if($ password!== $ cpassword){

抛出新的异常(PASSWORD_NOT_MATCH);

}

$密码= md5($密码);

$ query =INSERT INTO users(user_id,name,email,password,created)VALUES(NULL,'$ name','$ email','$ password',CURRENT_TIMESTAMP);

if( mysqli_query($ this-> _con,$ query))返回true;

} else {

抛出新异常(USER_REGISTRATION_FAIL);

}

}



公共功能登录(数组$ data){

$ _SESSION ['logged_in'] = false;

if(!empty($ data)){

$ trimmed_data = array_map('trim',$ data);



$ email = mysqli_real_escape_string($ this-> _con,$ trimmed_data ['email']);

$ password = my sqli_real_escape_string($ this-> _con,$ trimmed_data ['password']);



if((!email)|| (!密码)){

抛出新的例外(LOGIN_FIELDS_MISSING);

}

$密码= md5($密码);

$ query =SELECT user_id,name,email,created FROM users WHERE email ='$ email'AND password ='$ password';

$ result = mysqli_query($ this - > _con,$ query);

$ data = mysqli_fetch_assoc($ result);

$ count = mysqli_num_rows($ result);

if($ count == 1){

$ _SESSION = $ data;

$ _SESSION ['logged_in'] = true;

返回true;

}否则{

抛出新的异常(LOGIN_FAIL);

}

}其他{

抛出新的异常(LOGIN_FIELDS_MISSING);

}

}



公共功能account(array $ data)

{

if(!empty($ data)){

$ trimmed_data = array_map('trim', $ data);



$ password = mysqli_real_es cape_string($ this-> _con,$ trimmed_data ['password']);

$ cpassword = $ trimmed_data ['confirm_password'];

$ user_id = mysqli_real_escape_string( $ this-> _con,$ trimmed_data ['user_id']);



if((!$ password)|| (!$ cpassword)){

抛出新的异常(FIELDS_MISSING);

}

if($ password!== $ cpassword){

抛出新的异常(PASSWORD_NOT_MATCH);

}

$密码= md5($密码);

$ query =UPDATE users SET password ='$ password'WHERERE user_id = $ user_id;

if(mysqli_query($ this-> _con,$ query))return true;

}其他{

抛出新例外(FIELDS_MISSING);

}

}



公共功能退出()

{

session_unset();

session_destroy();

header('Location:index.php');

}



公共函数forgetPassword(数组$ data)

{

if(!empty($ data)){

$ email = mysqli_real_escape_string($ this-> _con,trim($ data ['email' ]));



if((!$ email)){

抛出新的Excepti on(FIELDS_MISSING);

}

$ password = $ this-> randomPassword();

$ password1 = md5($ password) ;

$ query =UPDATE用户SET密码='$ password1'WHERE email = $ email;

if(mysqli_query($ this-> _con,$ query) )){

$ to = $ email;

$ subject =新密码请求;

$ txt =您的新密码 。$ password;

$ headers =来自:admin@abc.com(mailto:admin@abc.com)。 \\ n。 CC:admin@abc.com(mailto:admin@abc.com);



邮件($ to,$ subject,$ txt,$ headers);

返回true;

}

}否则{

抛出新例外(FIELDS_MISSING);

}

}



私人函数randomPassword(){

$ alphabet =abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ; $ / b $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ i< 8; $ i ++){

$ n = rand(0,$ alphaLength);

$ pass [] = $ alphabet [$ n]; < br $>
}

返回implode($ pass);

}

}

? >



e。 DBclass.php:

class Cl_DBclass

{

public $ con;



公共函数__construct()

{

$ this-> con = mysqli_connect(DB_HOST,DB_USERNAME,DB_PASSWORD,DB_NAME);

if (mysqli_connect_error())echo无法连接到MySQL:。 mysqli_connect_error();

}

}

?>



< b>我尝试了什么:



我对PHP知之甚少(比如PHP中的自动加载功能)。我需要一个解决这个问题的方法,因为我必须通过添加其他有用的功能来进一步提高应用程序。

I have built a login application in PHP(no frameworks) with MySQL as Database.
I am getting warnings and errors when I attempt to run index.php on localhost (WAMP). The error says:
"Warning: require_once(Cl_User.php): failed to open stream: No such file or directory in C:\wamp\www\login\config.php on line 18"
"Error: Fatal error: require_once(): Failed opening required 'Cl_User.php' (include_path='.;C:\php\pear') in C:\wamp\www\login\config.php on line 18"
What should I do to remove errors?
Here is the php file codes:

a. index.php:
ob_start();
session_start();
require_once 'config.php';

// Initialize User Class
$user_obj = new Cl_User();
?>

if( !empty($_POST)) {
try {
$data = $user_obj->login( $_POST );
if(isset($_SESSION['logged_in']) && $_SESSION['logged_in']){
header('Location: home.php');
}
} catch (Exception $e) {
$error = $e->getMessage();
}
}

if(isset($_SESSION['logged_in']) && $_SESSION['logged_in']){
header('Location: home.php');
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE-Edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>PHP Login Page Demo</title>
</head>
</html>

b. config.php:


require_once 'messages.php';

// site specific config declaration
define( 'BASE_PATH', 'http://localhost/login/ (http://localhost/login/)');
define( 'DB_HOST', 'localhost');
define( 'DB_USERNAME', 'root');
define( 'DB_PASSWORD', '');
define( 'DB_NAME', 'login');

function __autoload($class)
{
$parts = explode('_', $class);
$path = implode(DIRECTORY_SEPARATOR, $parts);
require_once $path . '.php';
}
?>

c. messages.php:
define('FIELDS_MISSING', 'Some Fields Are Missing');
define('PASSWORD_NOT_MATCH', 'Passwords do not match');
define('USER_REGISTRATION_FAIL', 'User registration failed');
define('USER_REGISTRATION_SUCCESS', 'User registration was successful, You may login now');

define('LOGIN_FIELDS_MISSING', 'Email and Password missing');
define('LOGIN_FAIL', 'Email and Password Mismatch');

define('PASSWORD_CHANGE_SUCCESS', 'Password Changed Successfully.');

?>

d. User.php:
class Cl_User
{
protected $_con;

public function __construct()
{
$db = new Cl_DBclass();
$this->_con = $db->con;
}

public function registration(array $data)
{
if(!empty($data)){
// Trim all incoming data
$trimmed_data = array_map('trim', $data);

$name = mysqli_real_escape_string( $this->_con, $trimmed_data['name'] );
$password = mysqli_real_escape_string( $this->_con, $trimmed_data['password'] );
$cpassword = mysqli_real_escape_string( $this->_con, $trimmed_data['confirm_password'] );

// Check for an email address:
if(filter_var( $trimmed_data['email'], FILTER_VALIDATE_EMAIL)) {
$email = mysqli_real_escape_string( $this->_con, $trimmed_data['email']);
} else {
throw new Exception("Please enter a valid email address!");
}

if((!$name) || (!$email) || (!$password) || (!$cpassword) ) {
throw new Exception( FIELDS_MISSING );
}
if($password !== $cpassword ) {
throw new Exception( PASSWORD_NOT_MATCH );
}
$password = md5( $password );
$query = "INSERT INTO users (user_id, name, email, password, created) VALUES (NULL, '$name', '$email', '$password', CURRENT_TIMESTAMP)";
if(mysqli_query( $this->_con, $query )) return true;
} else {
throw new Exception( USER_REGISTRATION_FAIL );
}
}

public function login(array $data) {
$_SESSION['logged_in'] = false;
if( !empty($data) ){
$trimmed_data = array_map('trim', $data);

$email = mysqli_real_escape_string( $this->_con, $trimmed_data['email'] );
$password = mysqli_real_escape_string( $this->_con,$trimmed_data['password'] );

if((!email) || (!password) ) {
throw new Exception( LOGIN_FIELDS_MISSING );
}
$password = md5( $password );
$query = "SELECT user_id, name, email, created FROM users WHERE email = '$email' AND password = '$password' ";
$result = mysqli_query($this->_con, $query);
$data = mysqli_fetch_assoc($result);
$count = mysqli_num_rows($result);
if( $count == 1 ){
$_SESSION = $data;
$_SESSION['logged_in'] = true;
return true;
} else{
throw new Exception( LOGIN_FAIL );
}
} else{
throw new Exception( LOGIN_FIELDS_MISSING );
}
}

public function account( array $data )
{
if( !empty($data) ){
$trimmed_data = array_map('trim', $data);

$password = mysqli_real_escape_string( $this->_con, $trimmed_data['password'] );
$cpassword = $trimmed_data['confirm_password'];
$user_id = mysqli_real_escape_string( $this->_con, $trimmed_data['user_id'] );

if((!$password) || (!$cpassword) ) {
throw new Exception( FIELDS_MISSING );
}
if($password !== $cpassword ) {
throw new Exception( PASSWORD_NOT_MATCH );
}
$password = md5( $password );
$query = "UPDATE users SET password = '$password' WHERE user_id = $user_id ";
if(mysqli_query($this->_con, $query)) return true;
} else {
throw new Exception( FIELDS_MISSING );
}
}

public function logout()
{
session_unset();
session_destroy();
header('Location: index.php');
}

public function forgetPassword( array $data )
{
if( !empty($data) ){
$email = mysqli_real_escape_string( $this->_con, trim( $data['email'] ) );

if((!$email) ){
throw new Exception( FIELDS_MISSING );
}
$password = $this->randomPassword();
$password1 = md5( $password );
$query = "UPDATE users SET password = '$password1' WHERE email = $email";
if(mysqli_query($this->_con, $query)){
$to = $email;
$subject = "New Password Request";
$txt = "Your New Password ".$password;
$headers = "From: admin@abc.com (mailto:admin@abc.com)" . "\r\n" . "CC: admin@abc.com (mailto:admin@abc.com)";

mail($to,$subject,$txt,$headers);
return true;
}
} else {
throw new Exception( FIELDS_MISSING );
}
}

private function randomPassword() {
$alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$pass = array();
$alphaLength = strlen($alphabet) - 1;
for($i = 0; $i < 8; $i++) {
$n = rand(0, $alphaLength);
$pass[] = $alphabet[$n];
}
return implode($pass);
}
}
?>

e. DBclass.php:
class Cl_DBclass
{
public $con;

public function __construct()
{
$this->con = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
if( mysqli_connect_error()) echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
}
?>

What I have tried:

I don't know much about PHP(like autoload function in PHP). I need a solution to this problem because I have to make the application further by adding other useful features.

推荐答案

user_obj = new Cl_User();

?>



if(!empty(
user_obj = new Cl_User();
?>

if( !empty(


_POST)){

尝试{
_POST)) {
try {


data =


这篇关于如何解决require_once()PHP警告和致命错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆