Avatar billede cmau Nybegynder
17. februar 2005 - 09:08 Der er 4 kommentarer og
1 løsning

tjek brugernavnet

Hejsa... Nogle der kan lave så den tjekker $brugernavn. Der må ikke være:

Mellemrum før brugernavnet
Mellemrum efter brugernavnet
2 mellemrum midt i navnet

Der må godt være:

Mellem rum i navnet, som fx as d eller a sd

Også må brugernavnet max være 20 bogstaver/tal
Avatar billede greew Nybegynder
17. februar 2005 - 10:22 #1
noget lignende det her ?? (jeg har ikke testet den endnu)

function check_brugernavn($brugernavn) {

  $error = new Array();
  $i = 0;

  if ($brugernavn != trim($brugernavn)) {
    $error[$i] = "Der er mellemrum før/efter brugernavnet!";
    $i++;
  }

  if (strpos($brugernavn, "  ") != false) {
    $error[$i] = "Der er to mellemrum i brugernavnet!";
    $i++;
  }

  if (strlen($brugernavn) > 20) {
    $error[$i] = "Brugernavnet er over 20 tegn!";
    $i++;
  }

  return $error;
}
Avatar billede apache999 Nybegynder
17. februar 2005 - 10:36 #2
Blev nødt til at lave 2 regex-patterns(regular expressions er ikke min force). Har desuden indført en regel om, at et brugernavn skal være på mindst 2 tegn, for ellers knækker det første pattern.

$pattern1 = "^[a-zA-ZæøåÆØÅ0-9]{1}[a-zA-ZæøåÆØÅ0-90-9 ]{0,18}[a-zA-ZæøåÆØÅ0-90-9]{1}$";
$pattern2 = "  ";

if(ereg($pattern1,$brugernavn)) {
  if(!ereg($pattern2,$brugernavn)) {
    echo "$brugernavn duer<p/>";
  } else {
    echo "$brugernavn faldt for pattern 2<p/>";   
  }   
} else {
  echo "$brugernavn faldt for pattern 1<p/>";   
}

Har testet på nedenstående array med det forventede, korrekte resultat

$brugernavn[] = "alfa beta";
$brugernavn[] = "alfa betæØÅØæø213";
$brugernavn[] = "alfa  beta";
$brugernavn[] = " alfa beta";
$brugernavn[] = "alfa beta ";
$brugernavn[] = "alfa betahghhdhhheggd";
$brugernavn[] = "a";
Avatar billede apache999 Nybegynder
17. februar 2005 - 10:42 #3
For god ordens skyld (har lige tilføjet en med specialtegn, der selvfølgelig også bliver forkastet):

$brugernavn[] = "alfa beta"; //OK
$brugernavn[] = "alfa betæØÅØæø213";//OK
$brugernavn[] = "alfa  beta";//ikke OK
$brugernavn[] = " alfa beta";//ikke OK
$brugernavn[] = "alfa beta ";//ikke OK
$brugernavn[] = "alfa betahghhdhhheggd";//ikke ok
$brugernavn[] = "a";//ikke ok
$brugernavn[] = "alfa&/";//ikke ok
Avatar billede cmau Nybegynder
17. februar 2005 - 11:12 #4
Brugte noget af greew's  og fik lavet:

<?
if(isset($_POST[submit])) {

$brugernavn = $_POST[brugernavn];

$pass_len = 15;
$allchar = "abcdefghijklmnopqrstuwzx0123456789!#¤%&/()=?`´@£$?{[]}|*-+";
mt_srand ((double) microtime() * 1000000);
for ($i = 0, $str = "", $sz = strlen($allchar); $i < $pass_len; ++$i)
$kodeord .= $allchar[mt_rand(0, $sz)];

$kodeord_md5 = md5($kodeord);
$ip = $_SERVER[REMOTE_ADDR];
$email = $_POST[email];
$email2 = $_POST[email2];
$dato = date("d-m-Y H:i:s");

$foed_dag = $_POST[foed_dag];
$foed_maan = $_POST[foed_maan];
$foed_aar = $_POST[foed_aar];
$koen = $_POST[koen];

$result = mysql_query("SELECT brugernavn FROM woox_brugere WHERE brugernavn = '$brugernavn'") or die(mysql_error());

if(mysql_num_rows($result) > 0) {

echo '&nbsp;<br><font color="#FF000">Brugernavnet er optaget!</font><br>&nbsp;';

} elseif ($brugernavn != trim($brugernavn)) {

echo '&nbsp;<br><font color="#FF000">Du må ikke have mellemrum før eller efter dit brugernavn!</font><br>&nbsp;';

} elseif (strpos($brugernavn, "  ") != false) {

echo '&nbsp;<br><font color="#FF000">Du må ikke have 2 mellemrum efter hinanden i dit brugernavn!</font><br>&nbsp;';

} elseif (strlen($brugernavn) > 15) {

echo '&nbsp;<br><font color="#FF000">Dit brugernavn må max være 15 tegn/bogstaver langt!</font><br>&nbsp;';

} elseif(!preg_match('#^[a-zA-ZæøåÆØÅ0-9 ]+$#',$brugernavn)) {

echo '&nbsp;<br><font color="#FF000">Du har ulovlige tegn i dit brugernavn!</font><br>&nbsp;';

} elseif($email != $email2){

echo '&nbsp;<br><font color="#FF000">De 2 e-mails var ikke ens!</font><br>&nbsp;';

} elseif(!preg_match("/^([\w|\.|\-|_]+)@([\w||\-|_]+)\.([\w|\.|\-|_]+)$/i",$email)) {

echo '&nbsp;<br><font color="#FF000">Din e-mail er ikke gyldig!</font><br>&nbsp;';

} else {

$tekster = mysql_query("SELECT * FROM woox_reklamer_tekster WHERE breve = 'ja' ORDER BY RAND() LIMIT 1") or die(mysql_error());
$tekster = mysql_fetch_array($tekster);

$besked = "Hej $brugernavn

Her er dine login infomationer til WooX.DK:

Brugernavn: $brugernavn
kode: $kodeord

Før du kan logge ind på din bruger, skal du trykke på dette aktiverings link: http://new.woox.dk/aktiver.php?brugernavn=$brugernavn&kode=$kodeord_md5

Hilsen WooX.DK

______________________________________________________________

$tekster[tekst] - http://new.woox.dk/?ud=$tekster[id]";

$woox = "no-replay@woox.dk";
$robot = "Mail robot - WooX.DK";

mail('','Bruger - WooX.DK',$besked,"BCC: $email\nFrom: $robot <$woox>");

mysql_query("INSERT INTO woox_brugere (brugernavn, kode, ip, email, dato, foed_dag, foed_maan, foed_aar, koen) VALUES ('$brugernavn','$kodeord_md5','$ip','$email','$dato','$foed_dag','$foed_maan','$foed_aar','$koen')") or die(mysql_error());

echo "&nbsp;<br>Din bruger blev oprettet korrekt. Før du kan logge ind på din nye bruger, skal du tjekke din e-mail og trykke på aktiverings linket.<br>&nbsp;";

}
} else {

?>

greew smider du svar?
Avatar billede greew Nybegynder
17. februar 2005 - 12:13 #5
værsågod
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