2013-06-30 64 views
0

我的第二个elseif“头位置”语句不重定向(无错误)。第二个elseif“头位置”语句,不重定向(无错误)

警告:我是一个完整的初学者在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"); 
    } 
} 
?> 

什么令我奇怪的是,拳头“头位置”的,如果else语句的一部分,正常工作,将您重定向到正确的位置。这个问题正在让我失望,因为我所有的日志错误文件夹都是空的,而且我没有在屏幕上显示错误。

回答

0

维韦克是正确的。你的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.)。

+0

好,非常感谢您的提示! – Philcinbox

+0

@ user2535859,我用正确的代码更新了我的答案。试试看。希望它能起作用... – Mathlight

+0

Dude你真棒!谢谢,我现在要去玩一玩,我会告诉你事情是如何解决的! – Philcinbox

1

您正在使用赋值运算符。更改此设置: -

elseif ($session = "0") 

elseif ($session == "0") 
+0

我想明白了......我的第二个elseif语句只有1个“=”号而不是2.谢谢反正= B – Philcinbox

+1

@ user2535859,这就是Vivek说的。如果您对他的帮助感到满意,请记住在投票部分上投票并打勾,以接受他的回答作为最佳答案... – Mathlight

+0

仍然无效...没有其他问题我可以找到? – Philcinbox