如何解决require_once()PHP警告和致命错误? [英] How can I solve require_once() PHP warnings and fatal error?
问题描述
我已经在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屋!