Hallo
ich wollte für mein kleines Projekt ein Login S***** machen. Habe mir das Video angeschaut
[
Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] . Nur leider, wenn ich ein Account Registriere. Meint er es wäre erfolgreich, nur der erstellte Account ist in MySQL nicht zu finden.
Getestet wird es auf ein Windows 8.1 System mit dem Programm XAMPP.
Config:
PHP-Code:
<?php
session_start();
$mysql['user'] = "root";
$mysql['password'] = "";
$mysql['host'] = "127.0.0.1";
$mysql['db'] = "login";
//Nichts ändern!
//Verbindung zum MySQL Server.
mysql_connect($mysql['host'], $mysql['user'], $mysql['password']) OR die ('Database connection failed');
mysql_select_db($mysql['db']) OR die ('Database not found');
//Wird geschaut, ob ein User eingeloggt ist.
function isLoggedin()
{
return isset($_SESSION['username']);
}
function buildHash($password)
{
return crypt($password, '$2a$10$OurConstantSaltRules12$');
}
function tryLogin($username, $password)
{
$password = buildHash($password);
$sql = "SELECT 'username'
FROM 'users'
WHERE 'username' = ".mysql_real_escape_string($username)."
AND 'password' = ".$password."
LIMIT 1;";
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0);
{
$_SESSION['username'] = $username;
return true;
}
return false;
}
function register($username, $password)
{
$hashedPassword = buildHash($password);
$sql = "INSERT INTO users
(username,password)
VALUES(".$username.",".$hashedPassword.");";
mysql_query($sql) or die(mysql_error());
return tryLogin($username, $password);
}
function logout()
{
session_destroy();
session_start();
}
?>
index.php
PHP-Code:
<!DOCTYPE html>
<html>
<head>
<title>Unsecured Page</title>
</head>
<body>
<h1>Unsecured Page</h1>
<a href="secured.php">Secured Page</a>
</body>
</html>
secured.php
PHP-Code:
<?php
require 'requiresLogin.php';
?>
<!DOCTYPE html>
<html>
<head>
<title>Secured Page</title>
</head>
<body>
<h1>Secured Page!</h1>
<a href="logout.php">Logout</a>
</body>
</html>
requiresLogin.php
PHP-Code:
<?php
require_once 'config.php';
if(!isLoggedin())
{
include "login.php";
if(!isLoggedin())
{
exit;
}
}
?>
Login.php
PHP-Code:
<?php
require_once 'config.php';
if(isLoggedin())
{
header("Location: index.php");
exit;
}
$loginFailed = false;
if(isset($_POST['username']))
{
if(tryLogin($_POST['username'], $_POST['password']))
{
$loggedIn = true;
}
else
{
$loginFailed = true;
}
}
if(!isset($loggedIn)):
?>
<!DOCTYPE html>
<html>
<head>
<title>Login Page!</title>
</head>
<body>
<h1>Login Page!</h1>
<?php if($loginFailed):?><p>The login failed. Please check yout username and password!</p><?php endif; ?>
<form method="post" action="">
<p>Username: <input type="text" name="username" value=""></p>
<p>Password: <input type="password" name="password" value=""></p>
<p>Login: <input type="submit" value="Login"></p>
</form>
<br>
<a href="register.php">Register</a>
</body>
</html>
<?php endif; ?>
register.php
PHP-Code:
<?php
require_once 'config.php';
if(isLoggedin())
{
header("Location: index.php");
exit;
}
$loginFailed = false;
if(isset($_POST['username']) && isset($_POST['password']))
{
if(register($_POST['username'], $_POST['password']))
{
header("Location: index.php");
exit;
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Register Page!</title>
</head>
<body>
<h1>Register Page!</h1>
<form method="post" action="register.php">
<p>Username: <input type="text" name="username" value=""></p>
<p>Password: <input type="password" name="password" value=""></p>
<p>Register: <input type="submit" value="Register"></p>
</form>
</body>
</html>
Logout.php
PHP-Code:
<?php
require_once'config.php';
logout();
?>
<!DOCTYPE html>
<html>
<head>
<title>Unsecured Page</title>
</head>
<body>
<h1>Unsecured Page</h1>
<a href="secured.php">Secured Page</a>
</body>
</html>
SQL:7
PHP-Code:
CREATE DATABASE IF NOT EXISTS login;
CREATE TABLE IF NOT EXISTS Users
(
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(150) NOT NULL
);
/edit
/edit
So mit der registrierung habe ich es jetzt hinbekommen.
Jetzt wenn ich mich mit dem erstellte Account anmelden will.Komme ich auf die secured.php und da oben steht, dann
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Projekt\config.php on line 35
Aktuelle Config.php
PHP-Code:
<?php
session_start();
$mysql['user'] = "root";
$mysql['password'] = "";
$mysql['host'] = "127.0.0.1";
$mysql['db'] = "login";
//Nichts ändern!
//Verbindung zum MySQL Server.
mysql_connect($mysql['host'], $mysql['user'], $mysql['password']) OR die ('Database connection failed');
mysql_select_db($mysql['db']) OR die ('Database not found');
//Wird geschaut, ob ein User eingeloggt ist.
function isLoggedin()
{
return isset($_SESSION['username']);
}
function buildHash($password)
{
return md5('$2a$10$OurConstantSaltRules12$'.$password);
}
function tryLogin($username, $password)
{
$password = buildHash($password);
$sql = "SELECT username
FROM users
WHERE username = ".$username."
AND password = ".$password."
LIMIT 1;";
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0);
{
$_SESSION['username'] = $username;
return true;
}
return false;
}
function register($username, $password)
{
$hashedPassword = buildHash($password);
$sql = "INSERT INTO `users`
(username,password)
VALUES('$username','.$hashedPassword.');";
mysql_query($sql) or die(mysql_error());
return tryLogin($username, $password);
}
function logout()
{
session_destroy();
session_start();
}
?>
So hab alle Fehler gefunden
das ist richtig
WHERE username = '.$username.'
AND password = '.$password.'
und nicht
WHERE username = ".$username."
AND password = ".$password."