2012-04-08 9 views
0

Nur, dass mit Benutzern und Passwort nach der Anmeldung bemerkt, ich bin nie Seite an welcome.php umgeleitet, dennoch, dass es die Eingabe sieht angenommen :(kann nicht auf eine PHP-Seite nach dem Login umleiten

Irgendwelche Ideen? Die Fehler: Keine solche Datei oder das Verzeichnis

das ist der Code 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

Was ist in login.php, nehme ich das, wo Sie die Umleitung tun? – BenOfTheNorth

+0

lol, ja. Habe das bemerkt und die 'form action =" index.php "' behoben, aber jetzt gibt es WRONG PASSWORD aus, auch wenn ich die richtigen angegeben habe (in diesem Fall admin/admin). – 1000Gbps

+1

Ich habe eine Antwort mit den 3 offensichtlichsten Problemen hinzugefügt, die dich ein bisschen mehr auf den Weg bringen sollten. – BenOfTheNorth

Antwort

3

Das falsche Passwort Bit ist, weil Sie ein nicht vorhandenes Variable $num werden überprüft - das erste Mal, das erscheint in Ihrer if Aussage ist

Ich glaube, Sie wollen auch numrows nicht numcolumns-http://www.php.net/manual/en/function.sqlite-num-rows.php

Schließlich müssen Sie die echo Anweisung vor Ihrer Weiterleitung entfernen, es wird Ihnen Probleme verursachen, und wird vom Benutzer sowieso nicht gesehen, wie Sie sie auf eine andere Seite senden.

+0

Ich benutze SQLite3 und kann die Funktion in http://www.php.net/manual/en/book.sqlite3.php nicht finden – 1000Gbps

+0

sieht aus wie Sie müssen manuell mit der Abfrage zählen, z. http://stackoverflow.com/questions/2586598/using-sqlite3-in-php-how-to-count-the-number-of-rows-in-a-result-set – BenOfTheNorth

4

Sie echo oder nichts drucken, bevor Header senden. Versuchen Sie, die Linie zu kommentieren out echo "Welcome!";

0

Wenn Sie Benutzer umleiten möchten, geben Sie nichts aus, sonst würden Weiterleitungen nicht funktionieren. Entfernen Sie einfach die Echo-Anweisung und es sollte gut funktionieren.

Verwandte Themen