2012-04-08 4 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

+0

lol, да. Заметил это и зафиксировал 'form action =" index.php ", но теперь он печатает WRONG PASSWORD, даже когда я предоставил правильные (в данном случае admin/admin). – 1000Gbps

+1

Я добавил ответ с 3 наиболее очевидными проблемами, которые должны получить вас на вашем пути немного больше. – BenOfTheNorth

ответ

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

+0

похоже, что вам нужно будет вручную подсчитать с помощью запроса, например. http://stackoverflow.com/questions/2586598/using-sqlite3-in-php-how-to-count-the-number-of-rows-in-a-result-set – BenOfTheNorth

4

Не эхо или напечатать что-либо перед отправкой заголовков. Попробуйте закомментировать строку echo "Welcome!";

0

Если вы хотите перенаправить пользователя, ничего не выводите, иначе перенаправления не будут работать. Просто удалите инструкцию эха, и она должна работать нормально.