我的第二个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”部分正常工作并将您重定向到正确的位置。此问题导致我死亡,因为我的所有日志错误文件夹都是空的,并且我没有在屏幕上输出错误。
答案 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.
重定向到不同的域名。)