2012-04-08 59 views
0

只注意到与用户名和密码登录后,我从来没有重定向到的welcome.php页,不过它看起来的输入被接受:(不能重定向到一个PHP页面登录后

任何想法? 的错误是: 没有这样的文件或目录

这是代码 的index.php:

<?php 
session_start(); 
ob_start(); 

include "functions.php"; 

$database = "/mnt/www/zzz/summer.db"; // Database name 
$table = "login"; // Table name 
$logged = ""; // Logged status 
// Open database 
$opendb = new SQLite3($database); 
$finduser = "SELECT * FROM $table WHERE UserName='".$username."'"; 
$finduserandpass = "SELECT * FROM $table WHERE UserName = '".$username."' AND Password = '".$password."'"; 

if($_POST['submit']) 
{ 
    $username = protect($_POST['username']); 
    $password = protect($_POST['password']); 
    if(!$username || !$password) 
    { 
     echo "Username and password are required!"; 
    } 
    else 
    { 
     $results = $opendb->query($finduser) or die("Query error"); 
     // numColumns() is counting table row 
    $count = $results->numColumns(); 
    if($count == 0) 
    { 
     echo "The ussername does not exist!"; 
    } 
    else 
    { 
      $count = $results->numColumns(); 
     if($num == 0) 
     { 
     echo "Wrong password!"; 
     } 
     else 
     { 

     $results2 = $opendb->query($finduserandpass) or die("Query error"); 
     $row = $finduserandpass->fetchArray(SQLITE3_ASSOC); 
       if($row['E_mail'] == NULL) 
       { 
        echo "Your account is not yet activated!"; 
       } 
       else 
     { 

        $_SESSION['$username'] = $logged; 
        echo "Welcome!"; 
        $time = date($logged)+60; 
        //redirect to the welcome page 
        header('Location: welcome.php'); 
     } 
     } 
    } 
    } 
} 

?> 

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<meta http-equiv="Content-type" content="text/html; charset=UTF-8"> 
<title> 
Title of the document 
</title> 
<style type="text/css"> 
body {background-color:teal;} 
</style> 
</head> 
<body> 
<form action="login.php" method="post"> 
<table cellpadding="2" cellspacing="0" border="0"> 
<tr> 
<td>Username:</td> 
<td><input type="text" name="username"></td> 
</tr> 
<tr> 
<td>Password:</td> 
<td><input type="password" name="password"></td> 
</tr> 
<tr> 
<td colspan="2" align="center"><input type="submit" name="submit" value="Login"></td> 
</tr> 
</table> 
</form> 
</body> 
</html> 

的functions.php

<?php 

function protect($mystring) 
{ 
    $string = trim(strip_tags(addslashes($mystring))); 
    return $mystring; 
} 

?> 

的welcome.php

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<meta http-equiv="Content-type" content="text/html; charset=UTF-8"> 
<title> 
Summer Project Control Panel 
</title> 
<link rel="stylesheet" type="text/css" href="style.css" /> 
<script type="text/javascript"> 
</script> 
</head> 

<body> 
<?php 
session_start(); 
if(!$_SESSION['$username']) 
{ 
    header("Location: index.php"); 
} 
else 
{ 
    $currentUser = $_SESSION['username']; 
    $message = '<p>Welcome, ' . ucfirst($currentUser) . '!</p>'; 
    echo $message; 
} 
?> 
</body> 
</html> 
+0

什么在login.php,我认为这就是你重定向的地方? – BenOfTheNorth 2012-04-08 15:56:57

+0

哈哈,是的。注意到并修复了'form action =“index.php”',但现在即使提供了正确的(在这种情况下为admin/admin),它也会打印错误密码。 – 1000Gbps 2012-04-08 16:07:18

+1

我已经添加了3个最明显的问题的答案,这应该让你的方式更多一点。 – BenOfTheNorth 2012-04-08 16:16:57

回答

3

了错误的密码位,是因为你正在检查一个不存在的变量$num - 第一次,这似乎是在你的if声明

我想你也想numrows没有numcolumns - http://www.php.net/manual/en/function.sqlite-num-rows.php

最后,您需要在重定向之前删除echo声明,这会导致您遇到问题,并且无论如何都不会被用户看到,因为您正在将它们发送到其他页面。

+0

我正在使用SQLite3,无法在http://www.php.net/manual/en/book.sqlite3.php中找到函数。 – 1000Gbps 2012-04-08 16:19:52

+0

看起来您需要手动计算查询,例如http://stackoverflow.com/questions/2586598/using-sqlite3-in-php-how-to-count-the-number-of-rows-in-a-result-set – BenOfTheNorth 2012-04-08 16:27:00

4

不回应或发送标题之前打印任何东西。尝试注释掉行echo "Welcome!";

0

如果要重定向用户,请不要输出任何内容,否则重定向将不起作用。 只需删除echo语句,它应该可以正常工作。