2

当我在我的 localhost SQL 上时,它可以工作。但是现在当我将它上传到我的客户 SQL 时,它就没有了。当我登录时,它应该在从数据库检查名称和密码是否正确后重定向到edit.php,但它保持空白。我不知道该怎么做,因为它确实适用于我的 localhost sql。

我登录的地方,登录表单,(login.php)

<?php

include_once("logikinnitus.php");

session_start();
if(isset($_SESSION['logged']))
{

    header('Refresh: 2; URL=http://www.heakohv.ee/fava/admin/edit.php');
    echo "olete juba sisse logitud!";

  }else {

    if (isset($_POST["submit"])){

    $name = $_POST["user"];
    $pass = $_POST["pass"];

    $object = new User();
    $object -> login($name, $pass);
}

?>

<html>
<head></head>
<body>

<form method="post" action="login.php">
    Username: <input type="text" name="user"/>
    Password: <input type="password" name="pass"/>
    <input type="submit" name="submit" value="login">
</form>

<?php 

}

  ?>

</body>
</html>

我在哪里检查密码和用户是否正确(logikinnitus.php)

<?php

include_once("connection.php");


Class User {

    private $db;

    public function __construct(){

        $this->db = new Connection();
        $this->db = $this->db->dbConnect();
    }

    public function login($name, $pass){

        if(!empty($name) && !empty($pass)){

            $st = $this -> db -> prepare("select * from users where name=? and pass=?");
            $st -> bindParam(1, $name);
            $st -> bindParam(2, $pass);
            $st -> execute();

            if($st -> rowCount() == 1){

                session_start();
                $_SESSION['logged'] = true;
                echo "Olete edukalt sisse logitud";
                header('URL=http://www.heakohv.ee/fava/admin/edit.php');
                exit();

            }
            else{

                echo "Parool või kasutajanimi on vale";

            }

        }
        else{

            echo "Palun täida kõik väljad!";

        }

    }

}

?>

连接 php, (connection.php)

<?php

class Connection{

    public function dbConnect(){
        return new PDO("mysql:host=host; dbname=name", "pass", "");
    }
}

?>

打开错误报告时收到警告。

警告:session_start() [function.session-start]: open(/home/la02/16840949/tmp/sess_46e83b3c6e65b60a68dd14f525bd92a5, O_RDWR) failed: No such file or directory (2) in /home/la02/16840949/admin/login.第 6 行的 php

警告:session_start() [function.session-start]:无法发送会话 cookie - 标头已由 /home/la02/16840949/admin/connection.php:3 中的 /home/la02/16840949/admin 中的(输出开始)发送/login.php 在第 6 行

警告:session_start() [function.session-start]:无法发送会话缓存限制器 - 标头已在 /home/la02/16840949/admin 中发送(输出开始于 /home/la02/16840949/admin/connection.php:3) /login.php 在第 6 行

警告:未知:打开(/home/la02/16840949/tmp/sess_46e83b3c6e65b60a68dd14f525bd92a5,O_RDWR)失败:第 0 行的未知中没有此类文件或目录(2)

警告:未知:无法写入会话数据(文件)。请在第 0 行的 Unknown 中验证 session.save_path 的当前设置是否正确 (/home/la02/16840949/tmp)

如果我添加 session.save_path"folder" 它甚至不再显示我的登录表单...我从一开始就只看到空白页,甚至没有错误 –</p>

有任何问题请随时询问我(们。

4

2 回答 2

3

没有标题URL。用于Location: http://domain.com重定向。

此外,在发送标头之前您无法输出任何内容,因此请删除echo之前的所有 s 。

在您的第一个代码中,您必须die在发送标头后添加。没有它,脚本将执行到最后(在这里可能不是问题,但您应该在重定向时始终停止脚本)。

于 2013-09-16T16:05:53.680 回答
0

警告告诉您问题出在哪里——会话文件无法读取或写入,因为它们似乎正在将它们写入您的 *nix 用户主目录。

警告:session_start() [function.session-start]: open(/home/la02/16840949/tmp/sess_46e83b3c6e65b60a68dd14f525bd92a5, O_RDWR) failed: No such file or directory (2) in /home/la02/16840949/admin/login.第 6 行的 php

您的代码是否在进行session_save_path调用?如果不是,您需要检查适用的 php.ini 文件中 session.save_path 变量的值。您可以在文档根目录中创建一个简单的脚本:

<?php phpinfo();

如果您对这些设置的运行时值有任何疑问。

这也可能是权限问题,具体取决于您的 php/web 服务器的配置方式。通常会话文件将被写入 /tmp 目录,但在您的情况下它们不是。如果您实际上打算将会话文件写入它正在写入的位置,如果该目录不存在,和/或运行 php 进程的用户没有读取/写入这些文件的权限,那么您'重新得到你得到的错误。

于 2013-09-16T16:39:17.510 回答