7

嗨,我正在尝试创建一个仅限会员的网站,我正在尝试创建一个包含会话等的脚本,但是当我单击我的登录按钮时,我收到以下错误:

Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0

Fatal error: Unknown: Failed opening required 'prepend.php' (include_path='.:/Applications/XAMPP/xamppfiles/lib/php') in Unknown on line 0

我不是 100% 确定这一切意味着什么,所以我会发布我的脚本,如果有人能深入告诉我哪里出错了,我将不胜感激,这样我就可以掌握并了解未来我做错了什么.

提前感谢您的任何意见和帮助。

索引.php

<div id="maincontentWrapper">
<div id="maincontent">
    <div id="contentWrapper"></div><!--End loginWrapper -->
        <article>
            <p>Welcome to iManage, please login in below.</p>
        </article>
    <div id="loginform">
        <div id="loginWrapper">
        <form id="loginForm" method="POST" action="classes/class.Login.php">
        <h1><span class="log-in">Log in</span> or <span class="sign-up"><a href="register">sign up</a></span></h1>
        <div id="errorDiv"><?php 
                    if (isset($_SESSION['error']) & isset($_SESSION['formAttempt'])) {
                            unset($_SESSION['formAttempt']);
                            print "Errors encountered<br/>\n";
                            foreach ($_SESSION['error'] as $error) {
                            print $error . "<br />\n";
                        } //end foreach
                        } //end if 
                ?></div>
    <p class="float">
        <label for="login"><i class="icon-user"></i>Username</label>
        <input type="text" id="email" name="email" placeholder="E-mail">
          <span class="errorFeedback errorSpan" id="emailError">E-mail is required</span>
    </p>
    <p class="float">
        <label for="password"><i class="icon-lock"></i>Password</label>
        <input type="password" id="password" name="password" placeholder="Password" class="showpassword"> 
                <span class="errorFeedback errorSpan" id="passwordError">Password is required</span>

    </p>
    <p class="clearfix"> 
        <input type="submit" name="submit" value="Log in"></form>
    </p>   
        </div>

    </div>


</div>
</div>

</div>

类/class.Login.php

<?php 
include("../connect/class.Connect.php");

class Login extends Database {

    public $id;
    public $email;
    public $username;

        public function __construct() {
            if (session_id() == "") {
                session_start();    
            }
            if (isset($_SESSION['isLoggedIn']) && $_SESSION['isLoggedIn'] == true) {
                $this->_initUser();     
            }

        } // end construct

        public function authenticate($user, $pass) {

            $safeUser = $this->mysqli->real_escape_string($pass);
            $query = "SELECT * from users WHERE email = '{$safeUser}'";

                if (!$result = $this->mysqli->query($query)) {
                        error_log("Cannot retrieve account for {$user}");
                        return false;
                }   

                // will be only one row, so no while() loop needed
                $row = $result->fetch_assoc();
                $dbPassword = $row['password'];

                if (crypt($incomingPassword,$dbPassword) != $dbPassword) {
                        error_log("Passwords for {$user} don't match");
                        return false;
                }
                    $this->id = $row['id'];
                    $this->username = $row['username'];
                    $this->email = $row['email'];
                    $this->isLoggedIn = true;

                    $this->_setSession();
                    return true;    
        } // end function autheticate


        private function _setSession() {

            if (session_id() == '') {
                session_start();    
            }

            $_SESSION['id'] = $this->id;
            $_SESSION['email'] = $this->email;
            $_SESSION['username'] = $this->username;
            $_SESSION['isLoggedIn'] = $this->isLoggedIn;

        } // end function setSession

        private function _initUser() {

            if(session_id() == '') {
                sessions_start();           
            }

            $_SESSION['id'] = $this->id;
            $_SESSION['email'] = $this->email;
            $_SESSION['username'] = $this->username;
            $_SESSION['isLoggedIn'] = $this->isLoggedIn;



        }// end function initUser

        function validatelogin () {
                    $_SESSION['formAttempt'] = true;

        if (isset($_SESSION['error'])) {
        unset($_SESSION['error']);
        }

         $_SESSION['error'] = array();

        $required = array("email","password");

            //Check required fields
            foreach ($required as $requiredField) {
            if (!isset($_POST[$requiredField]) || $_POST[$requiredField] == "") {
            $_SESSION['error'][] = $requiredField . " is required.";
            }
            }


            if (!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) {
            $_SESSION['error'][] = "Invalid e-mail address";
            }

            if (count($_SESSION['error']) > 0) {
                die(header("Location: login.php")); 
            } else {
                $user = new User;
                if ($user->authenciate($_POST['email'], $_POST['password'])) {
                    unset($_SESSION['formAttempt']);    
                 die(header("Location: authenticated.php"));
            }else {
                 $_SESSION['error'][] = "There was a  problem with your username or password.";
                 die(header("Location: login.php"));
                }
        }
        }



}

$run = new Login();
    $run->authenticate($user, $pass);
    $run->validatelogin();
?>

prepend.php

<?php

if (!isset($_SESSION) ) {
session_start();    
}
?>

.htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
php_value auto_prepend_file "prepend.php"
4

5 回答 5

8

在 .htaccess 中设置 prepend.php 的绝对路径

于 2013-09-07T14:34:56.360 回答
4

我的防病毒软件喜欢将 router.php 隔离(有效地将其从该目录中删除)。检查您的是否相同,如果是,请恢复它并为该文件创建一个例外。此外,您应该配置您的防病毒软件,以便在将某些东西隔离时通知您,以便您及时进行干预。

于 2019-01-19T17:25:03.470 回答
1

这个错误是由于缺少 server.php 造成的。我也一样。您检查项目目录中的 server.php 文件。

于 2019-06-21T11:03:36.980 回答
1

这是 auto_prepend_filewaf 文件丢失或损坏的原因之一。因此,请检查您的 webroot 上的 php.ini 或 .user.ini 文件,并删除或更正文件路径。

于 2021-01-12T12:52:23.743 回答
0

如果添加了杀毒软件,添加例外或删除杀毒软件。可能会从项目文件夹中删除文件 (server.php)。检查文件是否可用。

于 2021-04-02T07:30:49.763 回答