Nu är det följande att jag håller på uppdaterar en hemsida för att senare ev komma upp om det blir aktuellt.
På sidan kan man registrera sig och då krypteras lösenordet, här kan ni se hela kodstycket för registreringen:
<?php
session_start(); // Alltid överst på sidan
include "conn.php"; // Databasanslutningen
include "functions.php"; // Funktioner
if (isset($_POST['submit'])){
$_POST = db_escape($_POST);
// Tag bort eventuella blanksteg i början eller slutet
foreach($_POST as $key => $val){
$_POST[$key] = trim($val);
}
//Kolla efter tomma fält
if (empty($_POST['user']) || empty($_POST['passwd']) ||
empty($_POST['name']) || empty($_POST['email'])) {
$reg_error[] = 0;
}
// Kolla om användarnamnet är upptaget
$sql = "SELECT COUNT(*) FROM members WHERE user='{$_POST['user']}'";
$result = mysql_query($sql);
if (mysql_result($result, 0) > 0) {
$reg_error[] = 1;
}
// Kolla om e-post kan tänkas vara ok
if (!preg_match('/^[-A-Za-z0-9_.]+[@][A-Za-z0-9_-]+([.][A-Za-z0-9_-]+)*[.][A-Za-z]{2,6}$/', $_POST['email'])) {
$reg_error[] = 2;
}
// Kolla så att lösenorden stämmer överrens
if ($_POST['passwd'] != $_POST['passwd2']) {
$reg_error[] = 3;
}
// Inga fel? Spara och logga in samt skicka till välkomstsida
if (!isset($reg_error)) {
// Salta lösenordet
$passwd = safepass($_POST['passwd']);
$sql = "INSERT INTO members(user, pass, name, email)
VALUES('{$_POST['user']}', '$passwd', '{$_POST['name']}', '{$_POST['email']}')";
mysql_query($sql);
$_SESSION['sess_id'] = mysql_insert_id();
$_SESSION['sess_user'] = $_POST['user'];
header("Location: welcome.php");
exit;
}
} else {
// Sätt variabler för tomt formulär
for ($i=0; $i<4; $i++) {
$back[$i] = "";
}
}
$error_list[0] = "Alla fält är inte infyllda";
$error_list[1] = "Användarnamnet är upptaget";
$error_list[2] = "Felaktig e-postadress";
$error_list[3] = "Lösenorden stämmer inte överrens";
?>
I databasen så blir lösenordet krypterat och personen blir inloggad och allt är frid och fröjd.
Trodde jag då.
För när man ska logga in så får sidan för sig att användarnamnet eller lösenordet är fel, men det finns ju i databasen.
Kodstycket för inloggningen ser ut följande:
<?php
session_start(); // Alltid överst på sidan
include "conn.php"; // Databasanslutningen
include "functions.php"; // Funktioner
// Inloggning
if (isset($_POST['submit'])){
$_POST = db_escape($_POST);
$passwd = safepass($_POST['passwd']);
$sql = "SELECT id FROM members
WHERE user='{$_POST['user']}'
AND pass='$passwd'";
$result = mysql_query($sql);
// Hittades inte användarnamn och lösenord
// skicka till formulär med felmeddelande
if (mysql_num_rows($result) == 0){
header("Location: inlogga.php?badlogin=");
exit;
}
// Sätt sessionen med unikt index
$_SESSION['sess_id'] = mysql_result($result, 0, 'id');
$_SESSION['sess_user'] = $_POST['user'];
header("Location: welcome.php");
exit;
}
// Utloggning
if (isset($_GET['logout'])){
session_unset();
session_destroy();
header("Location: inlogga.php");
exit;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Index</title>
</head>
<body>
<?php
// Om inte inloggad visa formulär, annars logga ut-länk
if (!isset($_SESSION['sess_user'])){
echo "<h3>Logga in</h3>\n";
// Visa felmeddelande vid felaktig inloggning
if (isset($_GET['badlogin'])){
echo "Fel användarnamn eller lösenord!<br>\n";
echo "Försök igen!\n";
}
?>
Functions.php ser ut följande:
<?php
// Sätt variabeln $password till $_POST['passwd']
$password = mysql_real_escape_string($_POST['passwd']);
function safepass($password)
{
// Sätt variabeln $username till $_POST['user']
$username = mysql_real_escape_string($_POST['user']);
// Statiskt salt som innehåller
// krångliga tecken
$salt = "aöC;Ma.ca0920´xc+aaa_:AX>LZO>JZF/*-+";
// Kryptera användarnamn+salt till
// ett dynamiskt lösenord som är
// olika för varje användare även
// om flera har samma lösenord
$dynSalt = sha1($username.$password.$salt);
// Kryptera den dynamiska salten
// en extra gång med sha1
return sha1($dynSalt);
}
?>
Är det någon som kan förklara för mig varför den säger att användaren inte finns?
Jag antar att det är något med att den inte okrypterar lösenordet eller något sånt, är osäker då det känns som att jag håller på stirra mig bild på en massa tecken bara.
Alla som besöker mig kan räkna med att bli attackerad!