Tjekke om navnet er taget
Jeg har lige fundet ud af, at man kan oprette to brugere med samme "myusername" hvilket ikke er så godt.Det har jeg vidst glemt at tænke over..
Men hvilken slags funktion ville man skulle bruge, for at den gik ind og tjekkede i min db (members) om "myusername" allerede er taget?
Mit script, hvor den tjekker om myusername (og alt det andet) opfylder mine krav;
<? session_start();
include("functions.php"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<link href="style.css" rel="stylesheet" type="text/css">
<br>
<br>
<?
if($_POST['add_user']) //sikre at man har udfyldt formen via HTML
{
//Helt først informationer fra HTTP POST
//Tjek så om de indtastede data er gyldige. Fx. længde på password og om der bruges ugyldige tegn. Bl.a. med e-mail er der jo et meget konkret regelsæt hér.
$myusername = $_POST['myusername'];
$mypassword = $_POST['mypassword'];
$email = $_POST['email'];
$kon = $_POST['kon'];
$pattern="/^([a-zA-Z0-9\-\_]{4,18})$/";
$phpPattern="#$pattern#";
if(!preg_match($pattern,$myusername))
{
die("Brugernavnet må kun indeholde bogstaver, tal bindestreg (-) og underscore (_) og skal være mindst 4 karaktere og maks. 18");
exit();
}
$pattern="/^([a-zA-Z0-9]{6,24})$/";
$phpPattern="#$pattern#";
if(!preg_match($pattern,$mypassword))
{
die("Passwordet må kun indeholde små og store bogstaver samt tal og skal være mindst 6 karaktere og maks. 24.");
exit();
}
$pattern="/^([a-zA-Z0-9\.\-\_\#\!\$\%\&\'\*\+\/\=\?\^\{\}\|]+)@([a-zA-Z0-9\.\-\_]+)\.([a-zA-Z+]{2,})$/";
$phpPattern="#$pattern#";
if(!preg_match($pattern,$email))
{
die("Der skal indtastes en gyldig e-mail");
exit();
}
//Send infomation til MySQL
$host="localhost"; // Host name
$username="users_camilla"; // Mysql username
$password=""; // Mysql password
$db_name="users_camilla"; // Database name
$tbl_name="members"; // Table name
$con = mysql_connect($host,$username,$password);
if(!$con)
{
die('Kunne ikke forbinde til server:' .mysql_error());
exit();
}
mysql_select_db($db_name);
$ip = $_SERVER['REMOTE_ADDR'];
$query = "INSERT INTO members (myusername,mypassword,email,admin,kon,signupdate,ip) VALUES ('$myusername','$mypassword','$email','0','$kon',NOW(),'$ip')";
mysql_query($query) or die('Der er sket en fejl. Tech-spec:<br>'.$query.'<br>'.mysql_error());
?>
<b><?=$myusername?> er nu blevet oprettet som bruger</b>
<br>
Du kan nu logge ind med de angivede oplysninger.
<?
}
?>
