第二个elseif“Header Location”语句,不重定向(无错误)

时间:2013-06-30 06:11:27

标签: php header

我的第二个elseif“Header Location”语句没有重定向(没有错误)。

警告:我是php的初学者,所以请只提出建设性的批评。

我的PHP代码:

<?php
$myusername = $_POST['myusername'];
$mypassword = $_POST['mypassword'];
$session = "0";
$db = mysql_connect("X.HOST.X", "User_name", "Password");
mysql_select_db("User_name", $db);
$result = mysql_query("SELECT * FROM members WHERE usr = '$myusername'");
while ($row = mysql_fetch_assoc($result)) {
    ob_start();
    echo $row["usr"];
    $usr = ob_get_contents();
    ob_end_clean();
    ob_start();
    echo $row["regIP"];
    $regIP = ob_get_contents();
    ob_end_clean();

    ob_start();
    echo $row["pass"];
    $pass = ob_get_contents();
    ob_end_clean();
    ob_start();
    echo $usr . $regIP . $pass;
    $salted_DataBase = ob_get_contents();
    ob_end_clean();
    ob_start();
    echo $myusername . $regIP . $mypassword;
    $salted_User = ob_get_contents();
    ob_end_clean();
    $session = "0";
    if ($salted_User == $salted_DataBase) {
        mysql_query("INSERT INTO online (id, usr, online, dt) VALUES( '', '$myusername.IN', '1', NOW() )");
        header("location:Secured_Page.php");
    } elseif ($session = "0") {
        header("location:google.com");
    }
}
?>

令我感到奇怪的是,if else语句的第一个“Header Location”部分正常工作并将您重定向到正确的位置。此问题导致我死亡,因为我的所有日​​志错误文件夹都是空的,并且我没有在屏幕上输出错误。

2 个答案:

答案 0 :(得分:1)

您正在使用赋值运算符。改变这个: -

elseif ($session = "0")

elseif ($session == "0")

答案 1 :(得分:0)

Vivek是对的。你的if语句不对。

但另一件事是你应该使用mysqli_ *函数而不是mysql_ *函数。这是因为不推荐使用mysql_ *函数,将来会将其删除。 mysqli_ *函数是mysql_ *函数的改进版本...... PHP.net page about mysqli_*

此外,当您在while语句中时,使用ob_*来获取和设置变量。这可以做得更简单:

此代码:

    ob_start();
    echo $row["usr"];
    $usr = ob_get_contents();
    ob_end_clean();
    ob_start();
    echo $row["regIP"];
    $regIP = ob_get_contents();
    ob_end_clean();

然后是这段代码:

    $usr = $row["usr"];
    $regIP = $row["regIP"];

更新1: 这是你的代码有一些改进。希望它有效:

<?php
$myusername = $_POST['myusername'];
$mypassword = $_POST['mypassword'];
$session = 0;

$db = @new mysqli("X.HOST.X", "User_name", "Password", "User_name( db select here )");
// Works as of PHP 5.2.9 and 5.3.0.
if ($mysqli -> connect_error) {
    die('Connect Error: ' . $mysqli -> connect_error);
}

if ($result = mysqli_query($db, "SELECT * FROM members WHERE usr = '$myusername'")) {
    while ($row = mysqli_fetch_assoc($result)) {
        $usr = $row["usr"];
        $regIP = $row["regIP"];
        $pass = $row["pass"];
        $salted_DataBase = $usr . $regIP . $pass;
        $salted_User = $myusername . $regIP . $mypassword;

        if ($salted_User == $salted_DataBase) {
            mysqli_query($db, "INSERT INTO online (id, usr, online, dt) VALUES( '', '$myusername', '1', NOW() )");
            header("Location: Secured_Page.php");
        } elseif ($session == 0) {
            header("Location: http://www.google.com");
        }
    }
} else {
    echo "No User found with the given name";
}
?>

我已将您的代码更新为mysqli_*个函数,创建了session变量的整数(更好的错误控制),删除了ob_*函数,修复了elseif语句(添加了一个=)并修正了标题链接(没有http://www.,您将有可能在原始域中搜索您所在的页面。因此,最好始终使用http://www.重定向到不同的域名。)