Hejsa alle i Gæve Udviklere.
jeg sidder og tænker lidt ang. et brugersystem jeg er ved at lave hvor man bruger sin mail til at logge ind med hvor så pass er md5 krypt.
det jeg sidder og overvejere er hvordan man hurtigts, nemmest og sikrest kan sikre sig at den E-mail kun er regged 1 gang.
Du kan jo også prøve at lave en openid løsning. Her er der centrale servere der styre login og kodeord, og din side skal så bruge deres "API" til at lave login. Din side kan så efterfølgende bede openid serveren om f.eks. e-mail, nick, navn og meget mere.
Du kan læse mere om openid på www.openid.net og se eventuelt en god lille screencast, som beskriver det hele lidt nærmere her:
http://simonwillison.net/2006/openid-screencast/Ideen bag openid er, at man kun har eet login på hele internettet... lidt ambisiøst, men ideen er god. Derudover behøver man jo heller ikke at genopfinde alle mulige login systemer hele tiden.
Som svar på din post med hvordan du garantere, at der ikke er flere brugere som har den samme e-mail (hvis du vil lave dit eget loginsystem), så kan du lade databasen håndtere det, ved at sætte den tupel til at være unik.
f.eks. så kunne dette være din bruger tabel:
create table user (
id int primary key auto_increment,
name varchar(255) not null,
email varchar(255) unique not null
);
Dette betyder så, at når man prøver at lave brugere med de samme email adresser, så vil databasen give en fejl besked. Denne skal du så lige fange, og ellers skrive til brugeren at den email er optaget. Her kan du så eventuelt lave en side, som sige at han kan få sine konto oplysninger tilsendt hvis han vil det.
For at fange om der sker en fejl ved indsættelsen i databasen, kan du prøve noget ligende dette:
opretBruger.php
<html>
<head>
<title>opret bruger</title>
</head>
<body>
<?php
// vi tjekker om der er en fejlbesked i headeren, og udskriver denne hvis der er.
if(isset($_GET["error"]) {
if( $_GET["error"] == "email_exists")
echo "<p>Den email du valgte, findes allerede i systemet.</p>";
// eventuelt flere oplysninger her...
}
?>
<!-- Selve formen, som brugeren skal indtaste oplysninger i -->
<form method="post" action="gemBruger.php">
Navn:<br/>
<input type="text" name="name" /><br/>
email:<br/>
<input type="text" name="email"/><br/>
<input type="submit" value="Opret bruger" />
</form>
</body>
</html>
Den side som skal gemme oplysningerne ser ud som følgende:
gemBruger.php
<?php
$email = $_POST['email'];
$name = $_POST['name'];
$sql = "insert into user(email,name) values('".$email."','".$name."')";
$query = mysql_query($sql);
if( $query ) {
// hvis queryen kunne udføres, sender vi brugeren over til login siden
header("location: login.php");
}
else {
// hvis brugeren ikke kunne oprettes, sender vi ham over til opret bruger siden igen, med vores fejl besked i headeren.
header("location: opretBruger.php?error=email_exists");
}
?>