Gå til innhold

Problemer med login


Anbefalte innlegg

Videoannonse
Annonse

Har hengt på php.net hele dagen og prøvd å finne ut av ereg(), og hvordan eg kan få sjekkingen til slik eg vil ha det...

 

Målet er at de skal kunne bruke bokstaver A-Z og tall 0-9 + _ og - i brukernavn. Altså ikke kunne bruke spesialtegn og mellomrom. I tillegg skal det være minst 4 tegn og max 16.

 

Testet med:

 if (ereg('^[[:alnum:]]+$', $_POST['username'])) 

 

Som gjorde at en bare kunne bruke alfanumeriske tegn, som eg gikk ut ifra er kun a-z og 0-9. Men det går fremdeles an å skrive tegn som feks ! og # , som eg ikke ville at skulle være mulig...

 

Noen som vet?

Lenke til kommentar

Du skal ha med en pluss der, men det skal ikke ha noe å si i forhold til at du kan legge til andre teng.

Få se hvordan du bruker koden og hvilke variabler som går gjennom.

 

EDIT:

Test denne så for du se hva den slipper gjennom av spesialtegn:

<?php
$variabel = "| § ! # ¤ % & / ( ) = ? ` ´ + @ £ $ € { [ ] } ^ ~ ¨ ' * - _ . : ,; < >";
$variabel = explode(" ", $variabel);

foreach($variabel as $tegn){
 echo $tegn.": ";
 if(eregi("^[a-zæøå0-9_-]+$",$tegn))
   echo "True";

 echo "<br>\n";
}
?>

Endret av ????????
Lenke til kommentar

Den printer ut kun _ og - som spesialtegn, men slik som eg bruker det så sjekker den jo bare om det som bruker skriver inn inneholder tegnene, ikke om den inneholder noe annet enn tegnene?

 

Eg vet ikke hvordan eg kan bruke den til å sperre for de tegnene eg ikke vil ha med...

Endret av _TT_
Lenke til kommentar

RoyalSheep: flott, ulogiske bruker feil er roten til alt ondt ;)

 

????: $variabel = "| § ! # ¤ % & / ( ) = ? ` ´ + @ £ $ € { [ ] } ^ ~ ¨ ' * - _ . : ,; < >"; <-- den hadde aldri jeg giddet å sette sammen, jeg er imponert :)

 

_TT_: kan du ikke paste 10 linjer kode som viser hvordan du bruker dette?

Lenke til kommentar

Den er sann hvis brukernavnet inneholder tegnene i klammeparantesen, altså sann også hvis brukernavnet inneholder spesialtegn. Den vil feks godta lsad"#¤.

 

Men eg har testet det ut litt og fannt ut at eg trur følgende kode fungerer. Den har sikkert litt unødvendig kode, men hva syns dere?

 

 <?
$item = $_POST['user'];
$escaped_item = mysql_escape_string($item);

if (ereg("^[a-z0-9_-]{4,16}$", $_POST['user'])){
}
elseif (!ereg("^[a-z0-9_-]+$", $_POST['user'])){
 echo 'Please enter a valid username. <br>';
 echo 'Only use characters a-z, numbers 0-9, _ and -. <br>';
 echo 'Username must be min. 4 characters and max. 16 characters';
 exit;
}
elseif(!$item != escaped_item){
 echo 'Please enter a valid username. <br>';
 echo 'Only use characters a-z, numbers 0-9, _ and -.<br>';
 echo 'Username must be min. 4 characters and max. 16 characters';
 exit;
}
else
{
 echo 'Please enter a valid username.<br>';
 echo 'Only use characters a-z, numbers 0-9, _ and -.<br>';
 echo 'Username must be min. 4 characters and max. 16 characters';
 exit;
} 

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...