Avatar billede langkiller Nybegynder
21. april 2010 - 15:06 Der er 20 kommentarer og
1 løsning

Undgå identiske brugernavne?

$brugernavn = $_POST["brugernavn"];
$password = $_POST["password"];
$gentag = $_POST["gentag"];

$errorCount = 0;

if($brugernavn == "")
{
    echo "Du skal indtaste et brugernavn.<p> <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    $errorCount++;
}
if($password == "")
{
    echo "Du skal indtaste et password.<p> <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    $errorCount++;
}
if($gentag == "" || $gentag != $password)
{
    echo "De to passwordfelter skal have ens indhold.<p> <a href=\"java script:history.back(-1)\">Tilbage</a>";
    $errorCount++;
}


if($errorCount == 0)
{

  mysql_connect("chopin.1go.dk","free92171","dingdong");
  mysql_select_db("free92171");

  $password = MD5($password);
  $insert = mysql_query("INSERT INTO brugere (brugernavn,password) VALUES ('$brugernavn','$password')");

  if(!$insert)
    echo "Der skete en fejl. Prøv igen. <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
  else
    echo "Brugeren blev oprettet. <a href=\"index.php\">Forside</a><br>";
}



Hvordan kan jeg fortælle brugeren at brugernavnet er optaget hvis det allerede eksisterer i databasen. har prøvet en masse forskellige metoder, men intet ser ud til at virke. Nogen som har en løsning?

Mvh. Mads
Avatar billede michael_stim Ekspert
21. april 2010 - 15:10 #1
Se om du kan få co-admin til at lukke dette spørgsmål, mm du vil dele password osv.
Avatar billede showsource Seniormester
21. april 2010 - 15:13 #2
Og ellers, så lad feltet brugernavn være UNIQUE
Så vil en INSERT fejle hvis navnet findes i forvejen.
Avatar billede michael_stim Ekspert
21. april 2010 - 15:18 #3
Eller noget á la (OBS ikke testet, tænkt igennem, set efter fejl osv):

$sql="SELECT brugernavn FROM dinTabel WHERE brugernavn='". $_POST['brugernavn']."'";
$result=mysql_query($sql);
Og så bruge:

if(mysql_num_rows($result)==0){
din insert
}
else{
echo "Brugernavnet er taget.";
}
Avatar billede public2 Nybegynder
21. april 2010 - 15:21 #4
Hvad med bare at matche det indtastede brugernavn op mod databasen?

if ...
$_POST['brugernavn'] != $row['brugernavn']
then ...

Og derudover kan du lave flere tjek og sikkerhedsmekanismer, som showsource forklarer, med at lave dit brugernavn felt UNIQUE i din database.
Avatar billede langkiller Nybegynder
21. april 2010 - 15:22 #5
man kan ikke sætte feltet som UNIQE i phpadmin tror jeg? .. har aldrig set det før i hvert fald.. :O
Avatar billede michael_stim Ekspert
21. april 2010 - 15:25 #6
Jo det kan man godt ;o)
Avatar billede showsource Seniormester
21. april 2010 - 15:29 #7
Jo, det kan du
Der er en tekst:
"Dan et indeks på"
og derefter formfelt hvor der står et, og en knap at klikke på.

Her vælger du UNIQUE samt vælger feltet brugernavn.

Men ellers er det blot:

ALTER TABLE brugere ADD UNIQUE (brugernavn)
Avatar billede michael_stim Ekspert
21. april 2010 - 15:29 #8
Der kan også være et icon med et u på når du opretter tabellen.
Avatar billede kentora Nybegynder
21. april 2010 - 15:33 #9
Hvis du sætter som Unique vil insert vist nok fejle med en grim fejl, mens du ved at checke om det findes i DB kan skrive din egen fejlmelding...
Avatar billede langkiller Nybegynder
21. april 2010 - 15:34 #10
Michael prøvede lige dit første eks. og rettede lidt til så det passede ind, men får følgende

Warning: mysql_query(): Access denied for user 'root'@'localhost' (using password: NO) in /data/cluster/free1go/p/o/www.postballerup.1go.dk/indsaet.php on line 86

Warning: mysql_query(): A link to the server could not be established in /data/cluster/free1go/p/o/www.postballerup.1go.dk/indsaet.php on line 86

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /data/cluster/free1go/p/o/www.postballerup.1go.dk/indsaet.php on line 107


(Og brugeren blev oprettet?)



Ja ups! Må nok hellere få lukket den snart :) tak !
Men det er ingen katastrofe, da det kun er et eksamensprojekt under udvikling så ingen fortrolige oplysninger at hente :P
Avatar billede michael_stim Ekspert
21. april 2010 - 15:36 #11
Du har ikke hul igennem til serveren.
Avatar billede langkiller Nybegynder
21. april 2010 - 15:37 #12
Fandt selv fejlen.. Skulle jo self connecte til databasen før jeg kunne tjekke om det fandtes der .. Doh!

Tak for hjælpen Michael. Hvis du lægger et svar så får du point og så må tråden hellere blive lukket :)
Avatar billede michael_stim Ekspert
21. april 2010 - 15:38 #13
Men co-admin til at fjerne spørgsmålet og opret et nyt uden password osv. En database kan misbruges på andre måder end bare at læse data ;o)
Avatar billede langkiller Nybegynder
21. april 2010 - 15:38 #14
Præcis ;)
Avatar billede michael_stim Ekspert
21. april 2010 - 15:39 #15
Jeg samler ikke på point ;o)
Avatar billede langkiller Nybegynder
21. april 2010 - 15:39 #16
Okay :) fair nok så! Tak alligevel. du har reddet mit 12 tal.. forhåbenlig xD
Avatar billede michael_stim Ekspert
21. april 2010 - 15:43 #17
Så skal det nok være lidt bedre kode ;o) Men det kan jo være du ender med et stort 00 (hvis det hedder det idag), hvis din tabel er tom, når du skal fremvise det ;o)
Avatar billede michael_stim Ekspert
21. april 2010 - 15:45 #18
Eller den er fyldt med "forbudte" billeder og lignende ;o) Så får du slet ikke din uddannelse, mm du afslutter den fra hotel gitterly :D
Avatar billede langkiller Nybegynder
21. april 2010 - 16:19 #19
Hvordan bedre kode ? er altid åben for gode råd.

(det er it linjen på hhx jeg skal til eksamen i, så niveauet er ikke det højeste og har allerede lavet mere end der forventes.)

:)

Den ligger på nettet (postballerup.1go.dk)
Avatar billede michael_stim Ekspert
21. april 2010 - 17:04 #20
F eks med noget ajax, så det bliver mere brugervenligt.
Avatar billede langkiller Nybegynder
26. august 2010 - 13:45 #21
havde fuldstændig glemt at få lukket tråden

tak for hjælpen :)
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