PHP错误的重定向

时间:2013-09-16 16:02:29

标签: php mysql sql

当我在我的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启动]:打开(/家/ LA02 / 16840949 / TMP / sess_46e83b3c6e65b60a68dd14f525bd92a5,O_RDWR)失败:没有这样的文件或目录(2)在/ home / LA02 / 16840949 /管理第6行/login.php

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

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

警告:未知:打开(/家/ LA02 / 16840949 / TMP / sess_46e83b3c6e65b60a68dd14f525bd92a5,O_RDWR)失败:在未知没有这样的文件或目录(2)在线0

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

如果我添加session.save_path“文件夹”,它甚至不会带来我的登录表单......我从头开始只看到空白页,甚至没有错误 -

如有任何问题,请随时提出。

2 个答案:

答案 0 :(得分:3)

没有标头URL。使用Location: http://domain.com进行重定向。

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

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

答案 1 :(得分:0)

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

  

警告:session_start()[function.session-start]:open(/ home / la02 / 16840949 / tmp / sess_46e83b3c6e65b60a68dd14f525bd92a5,   O_RDWR)失败:没有这样的文件或目录(2)   第6行/home/la02/16840949/admin/login.php

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

<?php phpinfo();

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

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