session_start()的错误和修改标题信息

时间:2017-08-31 19:01:55

标签: php mysql

我的网站上有一个登录系统。我在这个过程中涉及这3个文件。 Config.phpfunctions.phplogin.php

Config.php具有数据库连接 functions.php具有在数据库中检索和存储数据所需的功能。

当我尝试使用任何用户凭据登录时,可能会发生以下事情之一:

  1. 当我尝试使用不存在的数据进行访问时,该消息与 这显示正确
  2. 当我尝试访问错误的数据时,与此相关的消息是 正确显示
  3. 当我尝试使用正确的数据访问时,我得到了我的下一个错误 error_log文件:
  4.   

    PHP警告:session_start():无法发送会话cookie - 标头   已经发送(输出从第58行的/ / functions.php开始

         

    PHP警告:session_start():无法发送会话缓存限制器 -   标题已经发送(输出从... / login.php:56开始)   第58行的/ functions.php

         

    PHP警告:无法修改标头信息 - 已发送的标头   在第67行的/ / login.php中输出(输出从... / login.php:56开始)

    我用...

    替换了文件路径

    相同的文件一直在XAMPP服务器上运行,只有在我想在我的主机上运行时才会出现此问题。

    这是我的代码:

    的functions.php

    class LoginRegister
    {
        function __construct($db)
        {
            $this->db = $db;
        }
        public function eventoLogin($usuario, $passw)
        {
            $query = $this->db->prepare("SELECT id,user FROM people WHERE user=? AND password=?");
            $query->execute(array(
                $usuario,
                $passw
            ));
            $userdata = $query->fetch();
    
            $num = $query->rowCount();
            if($num == 1) {
                session_start(); //<------------ LINE 58
                $_SESSION['login'] = true;
                $_SESSION['uid'] = $userdata['id'];
                $_SESSION['uname'] = $userdata['user'];
                $_SESSION['login_msg'] = "Sesión iniciada correctamente";
                return true;
            } else {
                return false;
            }
        }
    }
    

    的login.php

    <?php
        require_once "functions.php";
        $db = new DatabaseConnection();
        $user = new LoginRegister($db->pdo);
        if($user->getSession()){
            header('Location: actualizar.php');
            exit();
        }
    ?>
    <html>
        <body>
    
            <?php //<---------- LINE 56
                if($_SERVER['REQUEST_METHOD'] == 'POST') {
                    $usuario = $_POST['usuario'];
                    $passw = $_POST['passw'];
                }
    
                if(empty($usuario) or empty($passw)) {
                    echo "Falta el nombre de usuario y/o contraseña";
                } else {
                    $login = $user->eventoLogin($usuario, $passw);
                    if($login) {
                        header('Location: actualizar.php'); //<------- LINE 67
                    }
    
                    else {
                        echo "Error, nombre de usuario o contraseña incorrectos";
                    }
                }
            ?>
    
            <div>
                <form action="" method="post" name="reg">
                    <table>
                        <tr>
                            <td><input type="text" name="usuario" placeholder="Nombre de usuario"></td>
                        </tr>
                        <tr>
                            <td><input type="password" name="passw" placeholder="Contraseña"></td>
                        </tr>
                        <tr>
                            <td> <input type="submit" name="submit" value="Ingresar" onclick="return(submitreg());"></td>
                        </tr>
                    </table>
                </form>
            </div>
        </body>
    

0 个答案:

没有答案