Avatar billede s0mmer Nybegynder
14. februar 2005 - 00:13 Der er 7 kommentarer og
1 løsning

Database tjek inden oprettelse

Hej

Har prøvet dette spg før uden held, så nu giver jeg lidt flere points:
Jeg har et lille oprette script. Problemet er at den lige skal tjekke databasen for at se om brugernavnet eksisterer så jeg ungår flere brugere med sammen brugernavn. Koden:

if($_POST["opret"] && $_POST["password"] == $_POST["password2"])
{
$db->ExecSQL("INSERT INTO gipzone (brugernavn,password,brugertype)VALUES('".$_POST["brugernavn"]."','".$_POST["password"]."','bruger')");
echo "<center>Din bruger er nu oprettet!<br>Du kan logge ind <a href='login.php'>her</a></center>";
}
Avatar billede googolplex Novice
14. februar 2005 - 00:18 #1
Du skal lave en SELECT på brugernavnet først og tjekke om antallet af retunerede rækker er større end 0 (for så er der jo en bruger i forvejen). Hvis ikke det er tilfældet, kan du køre din INSERT INTO.
Avatar billede s0mmer Nybegynder
14. februar 2005 - 00:19 #2
ja? ku du måske vise det på min kode? er ik helt..
Avatar billede detox Nybegynder
14. februar 2005 - 00:49 #3
Det må være noget i den her stil:

$tjek = $db->SendSQL("SELECT * FROM gipzone WHERE brugernavn='$_POST[brugernavn]' AND password='$_POST[password]'");
if (count($tjek)>0) {
  //Brugeren findes i forvejen
} else {
  //Brugeren findes ikke
}
Avatar billede Slettet bruger
14. februar 2005 - 00:53 #4
Den smarte metode er at sætte det relevante felt til ikke at må have dubletter i databasen.
Avatar billede dulius Nybegynder
14. februar 2005 - 10:23 #5
$tjek = $db->SendSQL("SELECT * FROM gipzone WHERE brugernavn='$_POST[brugernavn]' AND password='$_POST[password]'");
if (@mysql_num_rows($tjek)>0) {
  //Brugeren findes i forvejen
} else {
  //Brugeren findes ikke
}
Avatar billede s0mmer Nybegynder
14. februar 2005 - 10:34 #6
Jeg har gjort flg.:
if($_POST["opret"] && $_POST["password"] == $_POST["password2"])
{
$tjek = $db->SendSQL("SELECT * FROM gipzone WHERE brugernavn='$_POST[brugernavn]' AND password='$_POST[password]'");
if (count($tjek)>0) {
echo "<center>Brugeren findes i forvejen! Prøv igen.</center>";
} else {
  //Brugeren findes ikke
  $db->ExecSQL("INSERT INTO gipzone (brugernavn,password,brugertype)VALUES('".$_POST["brugernavn"]."','".$_POST["password"]."','bruger')");
echo "<center>Din bruger er nu oprettet!<br>Du kan logge ind <a href='login.php'>her</a></center>";

}
}
else if($_POST["opret"] && $_POST["password"] !== $_POST["password2"])
{
echo "<center>Password er ikke ens! Prøv igen.</center>";
}

Det virker også til en vis grad. Du kan ikke oprette den samme bruger med det samme pass. Men hvis du opretter en bruger med et samme brugernavn, men et andet pass så kan du godt! Hva ska ændres?
Avatar billede s0mmer Nybegynder
14. februar 2005 - 10:41 #7
det klare self med
$tjek = $db->SendSQL("SELECT * FROM gipzone WHERE brugernavn='$_POST[brugernavn]'");

detox -> send svar og du får points
Avatar billede detox Nybegynder
14. februar 2005 - 18:22 #8
Jo, men det er værd at overveje sandbox's forslag med at lave et UNIQE INDEX på brugernavn feltet. Og slap nu lidt af med pointene ;O)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester