Skrotade mitt egna login system och kopierade ett från nätet. Dock verkar inte mail aktiveringen fungera.
De filerna som håller ihop allt är : conn.php, index.php, register.php, inloggad.php, link.php och ejaktiverat.php.
Koden för register.php :
<?php
error_reporting(E_ALL);
ini_set("display_errors", "1");
session_start(); // Alltid överst på sidan
include "conn.php";
// aktivera kontot
if (isset($_GET['code'])) {
$sql = "SELECT aktiv, md5 from members
WHERE md5 = '{$_GET['code']}'
AND aktiv = '0'";
$result = mysql_query($sql);
$md5 = mysql_result($result, 0, 'md5');
$aktiv = mysql_result($result, 0, 'aktiv');
if ($md5 == $_GET['code'] && $aktiv == '0') {
$sql = "UPDATE members
SET aktiv = '1'
WHERE md5 = '{$md5}'";
mysql_query($sql) or die("SQL: $sql<br>" . mysql_error());
}
}
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['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,8}$/', $_POST['email'])) {
$reg_error[] = 2;
}
// Inga fel? Spara och skicka mail med aktiveringslänk
if (!isset($reg_error)) {
//Fixa lite md5
$salt1 = time();
$salt2 = microtime();
$salt3 = mt_rand(0, 100000);
$salt4 = date("H:i:s");
$salt5 = date("W");
$seed = $salt1.$salt2.$salt3.$salt4.$salt5;
// Skicka in hela rasket i en md5 som seed och få fram unikt värde
$md5 = md5($seed);
$password = md5($_POST['passwd']);
$sql = "INSERT INTO members(user, pass, email, md5, aktiv)
VALUES('{$_POST['user']}', '{$_POST['passwd']}', '{$_POST['email']}', '{$md5}', '0')";
mysql_query($sql);
$subject = "Ditt konto!";
$email = $_POST['email'];
$from = "From: root@localhost";
$message = "\n
Ett konto har registerats med denna mailadress, om du inte har registerat detta konto så har någon
använt din mailadress vid registeringen. Om du inte aktiverar ditt konto inom en timme tas kontot hos oss bort.\n
För att aktivera ditt konto tryck på länken nedan:\n\nhttp://localhost/members_area/register.php?code=" . $md5 . "\n\n
Om det inte går att klicka på länken så kopiera den och klistra in den i din webbläsare.\n\n
mail($email, $subject, $message, $from);
echo '<meta http-equiv="refresh" content="0; URL=http://localhost/members_area/register.php?close=true">'; // stänger rutan
exit;
}
} else {
// Sätt variabler för tomt formulär
for ($i=0; $i<6; $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 du skrev stämmer inte överrens";
?>
<!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>Registrera dig</title>
</head>
<body>
<font face="Arial">
<h3>Registrera dig</h3>
Att tänka på:
<ul>
<li>Din epost-adress måste vara korrekt!</li>
<li>Alla ip-adresser loggas!</li>
</ul>
<?php
if (isset($reg_error)){
// Felmeddelanden
$error_list[0] = "Alla fält är inte infyllda";
$error_list[1] = "Användarnamnet är upptaget";
$error_list[2] = "Felaktig e-postadress";
echo "Något blev fel:<br>\n";
echo "<ul>\n";
for ($i=0; $i<sizeof($reg_error); $i++) {
echo "<li>{$error_list[$reg_error[$i]]}</li>\n";
}
echo "</ul>\n";
// Sätter returvariabler till formuläret
$back[0] = $_POST['user'];
$back[1] = $_POST['passwd'];
$back[2] = $_POST['email'];
}
?>
<form action="register.php" method="post">
<table cellspacing="3">
<tr>
<td>Namn</td>
<td><input type="text" name="user" value=""></td>
</tr>
<tr>
<td>Lösenord</td>
<td><input type="text" name="passwd" value=""></td>
</tr>
<tr>
<td>Email</td>
<td><input type="text" name="email" value=""></td>
</tr>
<tr>
<td colspan="2" align="left">
<input type="submit" name="submit" value="Spara dina uppgifter">
</td>
</tr>
</table>
</form>
</body>
</html>
Koden för index.php :
<?php
session_start(); // Alltid överst på sidan
include "conn.php"; // Databasanslutningen
// Inloggning
if (isset($_POST['submit'])){
$password = md5($_POST['passwd']);
$sql = "SELECT id, admin, aktiv FROM members
WHERE user='{$_POST['user']}'
AND pass='{$password}'";
$result = mysql_query($sql);
$sessid = mysql_result($result, 0, 'id');
$sessadmin = mysql_result($result, 0, 'admin');
$aktiv = mysql_result($result, 0, 'aktiv');
$sql = "SELECT id FROM members
WHERE user='{$_POST['user']}'
AND pass='{$_POST['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: index.php?badlogin=");
exit;
}
// Är kontot inte aktiverat skicka personen till sida med info om att kontot inte är aktiverat
if ($aktiv == '0') {
header("Location: ejaktiverat.php");
exit;
}
// Sätt sessionen med unikt index
$_SESSION['sess_id'] = mysql_result($result, 0);
$_SESSION['sess_user'] = $_POST['user'];
$_SESSION['sess_email'] = $_POST['email'];
header("Location: inloggad.php");
exit;
}
// Utloggning
if (isset($_GET['logout'])){
$_SESSION = array();
session_destroy();
header("Location: index.php");
exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Logga in</title>
</head>
<body>
<font face="Arial">
<h3>Logga in</h3>
<?php
// Om inte inloggad visa formulär, annars logga ut-länk
if (!isset($_SESSION['sess_user'])){
// Visa felmeddelande vid felaktig inloggning
if (isset($_GET['badlogin'])){
echo "Något blev fel:<p>";
echo "<ul>\n";
echo "<li>Fel användarnamn eller lösenord!<br></li>\n";
echo "<li>Försök igen!\n</li>";
echo "</ul>\n";
}
?>
<form action="index.php" method="post">
Användarnamn:<br>
<input type="text" name="user"><br>
Lösenord:<br>
<input type="password" name="passwd"><br>
<input type="submit" name="submit" value="Logga in">
</form>
<p>Inte medlem ?<br>
<a href="register.php">Registera dig</a>
<?php
} else {
header("Location: inloggad.php");
}
?>
</body>
</html>
Mer info hittar ni här:
http://www.phpportalen.net/viewtopic.php?t=48910
;)