Avatar billede webcreator Nybegynder
14. august 2003 - 22:52 Der er 22 kommentarer og
1 løsning

Tjek om bruger eksistere.

Hej alle.

Det er ved at være sent, og jeg har noget PHP som driller. Jeg skulle tjekke, om en bruger allerede eksistere.

Er det i øvrigt dumt, at bruge CaseSensitive i den forbindelse (til brugernavn) ?

Mit script :

$tmp_usr  = strtoupper($user); # Omdanner brugerens brugernavn til STORE BOGSTAVER
$tmp_mail = strtoupper($mail);  # Omdanner brugerens email adresse til STORE BOGSTAVER
                               
$dta = mysql_query("select * from users") or die(mysql_error());
                               
while ($data = mysql_fetch_array($dta)) {
                                   
  $dbuser = strtoupper($data["user"]);
  $dbmail = strtoupper($data["mail"]);
                                   
  if ($dbuser != $tmp_usr) {
                                                                       
    if ($maildb != $tmp_mail) {
                                     
    # Hvis alt gik godt, lagres data i databasen
   
    } else {
      $fejl = true;
      $uds = "E-mail adresse i brug";
    }

  } else {
    $fejl = true;
    $uds = "Brugernavn optaget";
  }

} # afslutning på while
Avatar billede webcreator Nybegynder
14. august 2003 - 22:54 #1
Hm, sikkert fordi jeg skal stoppe WHILE'en. Prøver lige med break.
Avatar billede erikjacobsen Ekspert
14. august 2003 - 22:57 #2
mere sandsynligt du skal putte en WHERE på din SELECT.

Der er ingen grund til at løbe databasen igennem i PHP, når SQL kan
gøre det for dig.
Avatar billede webcreator Nybegynder
14. august 2003 - 22:57 #3
Virkede ski :)
Avatar billede jara06 Nybegynder
14. august 2003 - 22:58 #4
ja.

Jeg er ikke lige helt med hvad det var du ville der, men jeg ville ikke lave brugernavne til casesensitive. Jeg ved hvor irriterende det er, et brugernavn enten kun kan være med stort eller småt, og at det skal være cs... især når man rammer forkert af og til ..
Desuden.. hvilke fordele ville det give, udover at være til gene for visse brugere ? :)
Avatar billede webcreator Nybegynder
14. august 2003 - 22:58 #5
Erik > Har jeg også tænkt på. Men feltet "user" er binary. Så hvordan tages der højde for det ?

Hvis jeg bruger :

$dta = mysql_query("select * from users where user = '$user' OR mail = '$mail") or die(mysql_error());

Så tages der ikke højte for, at brugernavnet teST kan registreres, hvis test allerede eksistere.
Avatar billede webcreator Nybegynder
14. august 2003 - 22:59 #6
Jara > Kan du måske have ret i. Ok, tror jeg laver det om så. Skifter mit user-felt ud med et ikke-binary. Det gør det hele meget nemmere :)
Avatar billede webcreator Nybegynder
14. august 2003 - 23:04 #7
Ah, det hele er meget nemmere nu, ja :-)
Avatar billede jara06 Nybegynder
14. august 2003 - 23:05 #8
hehe.
Jeg ville bruge:
$dta = mysql_query("select * from users where user = '". $user ."' OR mail = '". $mail ."") or die(mysql_error());

men det har nok også en relation til dét, at folk siger jeg til tider kan være ". mærkelig ."  ;-)
Avatar billede webcreator Nybegynder
14. august 2003 - 23:07 #9
Hehe, jo tak. Kan ikke se hvad "opbremsningen" skal gøre godt for :-D
Avatar billede jara06 Nybegynder
14. august 2003 - 23:16 #10
tja, det er bare mig

$bla = "php";

$txt = "her er html og her er ". $php .". <- punktum tilsidst og to gange gåseøjne: \"<- | ->\" \n og linieskift ^^  :)";

sådan har jeg altid gjort, ved ikke helt hvorfor :D
Avatar billede webcreator Nybegynder
14. august 2003 - 23:18 #11
Jeg er vist stødt på et mindre problem :

Bør flg. ikke KUN give noget, hvis en post eksistere med kriterierne opfyldt ?
$dta = mysql_query("select * from users WHERE user = '$user'") or die(mysql_error());
Avatar billede webcreator Nybegynder
14. august 2003 - 23:18 #12
Hehe :)
Avatar billede webcreator Nybegynder
14. august 2003 - 23:19 #13
Hvis jeg skriver :
$dbuser = $data["user"];
Så hentes den indholdet af $user (og denne værdi eksistere ikke i DBen)
Avatar billede erikjacobsen Ekspert
14. august 2003 - 23:20 #14
jo, det bør kun give noget i det tilfælde
Avatar billede webcreator Nybegynder
14. august 2003 - 23:21 #15
.. og jeg bruger flg. fetch :
$data = mysql_fetch_array($dta);
Avatar billede webcreator Nybegynder
14. august 2003 - 23:21 #16
Det er skummelt.
Avatar billede webcreator Nybegynder
14. august 2003 - 23:21 #17
if ($dbuser == "") {
  echo "PASSED";
}

$dbuser burde altså være tom. Men den skriver passed.
Avatar billede webcreator Nybegynder
14. august 2003 - 23:27 #18
Hrfm. Man skal ikke bytte om på maildb og dbmail, vel :-)
Mindre fejl i mine variabler.
Avatar billede webcreator Nybegynder
14. august 2003 - 23:30 #19
Sig mig engang - duer flg. ikke :
$dta = mysql_query("select * from users WHERE user = '$user' OR mail = '$mail'") or die(mysql_error());

På jævnt dansk vil jeg tjekke, om der er en post, som allerede optager enten det indtastede eller mail adresse.
Avatar billede webcreator Nybegynder
14. august 2003 - 23:39 #20
Bør password ikke være CaseSensitive ? Det øger mig bekendt sikkerheden pænt.
Avatar billede webcreator Nybegynder
14. august 2003 - 23:40 #21
(Jeg lavede ovenstående MySQL query om til 2 i stedet. Sig endelig til, hvis det kan gøres smartere :)
Avatar billede webcreator Nybegynder
16. august 2003 - 10:45 #22
Ok. Vil gerne lukke. Smid lidt svar. Så lever jeg med to query'er
Avatar billede webcreator Nybegynder
28. august 2003 - 22:03 #23
.
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