04. januar 2004 - 01:43
Der er
62 kommentarer og 1 løsning
Validering af to værdier
Hej Jeg har følgende: $q_phonebook = mysql_query("insert into userphonebook (userid,name,phonenumber) values ('$userid','$_GET[name]','$_GET[phonenumber]')"); $_GET[name] må kun indeholde a-z,A-Z,0-9 $_GET[phonenumber] må max være 8 chars lang, og bestå af 0-9 Burde være meget simpel, jeg fatter det bare ikke.. Mange tak.
Annonceindlæg fra DE-CIX
Edge computing: behandling ved kilden
Edge computing revolutionerer den måde, data behandles på, ved at bringe kapacitet og ydeevne tættere på dér, hvor der er behov for det.
15. april 2025
04. januar 2004 - 01:48
#1
$_GET['name'] $_GET['phonenumber'] læg mærke til '
04. januar 2004 - 01:49
#2
Prøv at læs mit spørgsmål?
04. januar 2004 - 01:51
#3
Altså $_GET[name] og $_GET[phonenumber] skal kun smides i databasen, hvis de opfylder betingelserne?
04. januar 2004 - 01:51
#4
Præcist.
04. januar 2004 - 01:52
#5
Har læst det men åbentbart ikke forstået det... jeg går ud fra din query ikke indsætter værdierne i DB. tænkte at det kunne hjælpe dig....men åbentbart ikke
04. januar 2004 - 01:52
#6
interkriller, kig "emne", og "bla bla må kun indeholde"
04. januar 2004 - 01:54
#7
gik ud fra det var din beskrivelse af værdierne i DB.... jeg trækker følehornene til mig..
04. januar 2004 - 01:54
#8
Kan ikke lige huske php-syntaksen for RegExps, men noget i stil med $regName = "^\w$"; $regPhone = "^\d{8}$"; if($_GET[name].match($regName)&&$_GET[phonenumber].match($regPhone)){ //din indsætningsblok }
04. januar 2004 - 01:59
#10
roenving, Fatal error: Call to undefined function: match() in numbersadd.php on line 7
04. januar 2004 - 02:01
#11
match() er vist også javascript syntax, bare smid dem ind i ereg()
04. januar 2004 - 02:02
#12
if(preg_match($regName,$_GET[name])&&preg_match($regPhone,$_GET[phonenumber])){
04. januar 2004 - 02:03
#13
$regName = "^\w$"; $regPhone = "^\d{8}$"; if(preg_match($regName,$_GET[name])&&preg_match($regPhone,$_GET[phonenumber])){ $q_phonebook = mysql_query("insert into userphonebook (userid,name,phonenumber) values ('$userid','$_GET[name]','$_GET[phonenumber]')"); } Giver: Warning: No ending delimiter '^' found in numbersadd.php on line 7
04. januar 2004 - 02:08
#14
hvis du bruger preg() $regName = "/^\w$/"; $regPhone = "/^\d{8}$/";
04. januar 2004 - 02:12
#15
if(eregi("^[a-z1-9]+$", $_GET['name']) && eregi("^[1-9]{8}$", $_GET['phonenumber'])) { echo "ja"; } else { echo "nej"; }
04. januar 2004 - 02:15
#16
if(eregi("^[a-z1-9]+$", $_GET['name']) && eregi("^[1-9]{8}$", $_GET['phonenumber'])){ $q_phonebook = mysql_query("insert into userphonebook (userid,name,phonenumber) values ('$userid','$_GET[name]','$_GET[phonenumber]')"); }
04. januar 2004 - 02:15
#17
-- og du mener vel alle cifre i begge tilfælde, nak-m ?-) -- til det findes der special-tegnet \d !-)
04. januar 2004 - 02:16
#18
-- og \w betyder alle bogstaver (de engelske a-z), både store og små samt cifrene og _ (underscore, som jo også tillades i stort set alle sammenhænge !-)
04. januar 2004 - 02:18
#19
roenving: din lurepels ;) forresten skulle det jo være 0-9 ikke 1-9: if(eregi("^[a-z0-9]+$", $_GET['name']) && eregi("^[0-9]{8}$", $_GET['phonenumber'])){ $q_phonebook = mysql_query("insert into userphonebook (userid,name,phonenumber) values ('$userid','$_GET[name]','$_GET[phonenumber]')"); }
04. januar 2004 - 02:19
#20
Men spørgsmålet er om der må være mellemrum i navnet?
04. januar 2004 - 02:19
#21
<ole> roenving >> \d giver en masse ud over 0-9, så det kan ikke bruges her :) nak-m >> Prøv med preg-funktionerne i stedet - de er som oftest langt hurtigere og mere effektive end ereg /mvh </bole>
04. januar 2004 - 02:21
#22
Hvad giver \d mere en cifre ?-)
04. januar 2004 - 02:21
#23
I øvrigt tillader \w osse "æøå" (i hvert fald på min maskine).
04. januar 2004 - 02:22
#24
\d matcher ethvert positivt eller negativt decimal-tal. Kan hurtigt gå hen og blive et pudsigt tlf-nummer ;o)
04. januar 2004 - 02:25
#25
-- gør den det i php ?-) -- det ville da være mystisk, for RegExp er tegnbaseret og fuldstændig uinteresseret i, hvad tegnene repræsenterer !-)
04. januar 2004 - 02:29
#26
denne bruger preg_match: if(preg_match("/^[a-z0-9]+$/", $_GET['name']) && preg_match("/^[0-9]{8}$/", $_GET['phonenumber'])) { $q_phonebook = mysql_query("insert into userphonebook (userid,name,phonenumber) values ('$userid','$_GET[name]','$_GET[phonenumber]')"); }
04. januar 2004 - 02:30
#27
-- og jeg kan se at Gecko matcher også de landespecifikke tegn med \w, men det gør IE ikke ... -- men den hopper ikke på punktummer og kommaer !-)
04. januar 2004 - 02:31
#28
- i \d sæ'fø'li'
04. januar 2004 - 02:32
#29
ups! : if(preg_match("/^[a-zA-Z0-9]+$/", $_GET['name']) && preg_match("/^[0-9]{8}$/", $_GET['phonenumber'])) { $q_phonebook = mysql_query("insert into userphonebook (userid,name,phonenumber) values ('$userid','$_GET[name]','$_GET[phonenumber]')"); } den var vidst case-sensitive :)
04. januar 2004 - 02:32
#30
nak-m -> Så mangler du bare de store bogstaver A-Z ;o)
04. januar 2004 - 02:33
#31
Nå, der var de :o)
04. januar 2004 - 02:34
#32
når vi nu er ved det /^[a-z0-9]+$/i matcher både store og små bogstaver
04. januar 2004 - 02:39
#33
squashguy: kan man med fordel skrive "i" i stedet for "A-Z" ? er der nogen egentlig forskel?
04. januar 2004 - 02:42
#34
Det giver et mindre søge pattern. Om det afvikles hurtigere, ved jeg ikke lige.
04. januar 2004 - 02:50
#35
Det er da i hvert fald taget til efterretning - og værsgo: if(preg_match("/^[a-z0-9]+$/i", $_GET['name']) && preg_match("/^[0-9]{8}$/", $_GET['phonenumber'])) { $q_phonebook = mysql_query("insert into userphonebook (userid,name,phonenumber) values ('$userid','$_GET[name]','$_GET[phonenumber]')"); }
04. januar 2004 - 02:52
#36
-- må jeg lige høre, om i får nogen forskel på \d og [0-9] i php ?-)
04. januar 2004 - 02:52
#37
har prøvet- giver det samme.
04. januar 2004 - 02:54
#38
også med ., og andre lovlige nummer-tegn ?-)
04. januar 2004 - 02:55
#39
afviser -., med \d
04. januar 2004 - 02:55
#40
Jeg kan ikke registrere nogen forskel.
04. januar 2004 - 02:59
#41
http://dk2.php.net/manual/en/pcre.pattern.syntax.php \d
any decimal digit
\D
any character that is not a decimal digit
\s
any whitespace character
\S
any character that is not a whitespace character
\w
any "word" character
\W
any "non-word" character
/mvh
04. januar 2004 - 03:00
#42
dvs. det er kortere at bruge \d (det kortere søgepattern !-), for jeg mener at RegExp internt er ret godt optimeret, hvis det er implementeret ordentligt, og det går jeg ud fra, at det er i php !o] -- altså: if(preg_match("/^[a-z\d]+$/i", $_GET['name'])&&preg_match("/^\d{8}$/", $_GET['phonenumber'])) { -- ergo det jeg skrev 01:54:34 bortset fra mit ukendskab til at php også bruger // !-)
04. januar 2004 - 03:15
#43
se'fø'li ... jeg æder mine ord *gulp* :)
04. januar 2004 - 03:18
#44
Men en hel anden ting er: Må man ikke hedde noget så ordinært som Hubert-Gilbert eller Karl Hulda? Skal man ikke tage hensyn til mellemrum og bindestreg - eller for den sags skyld accenter, som i Desireè?
04. januar 2004 - 03:20
#45
Ehhhh .... det er vist en acute og ikke en grave ... Desireé :)
04. januar 2004 - 03:21
#46
Tjah ... -- det var jo sådan set derfor jeg startede med \w, men uden at være opmærksom på, at den virker så forskelligt !-) -- og, ha, ole, der fik jeg ram på dig, det er vist første gang, du har fået den på den måde af mig *lol*
04. januar 2004 - 03:21
#47
olebole: Jo, hvis det er brugerens rigtige navn, og ikke et alias, burde det være muligt at skrive sit navn rigtigt.
04. januar 2004 - 03:22
#48
Og måske foretrækker brugeren at skrive sit navn som: Clausen, Ole *g*
04. januar 2004 - 03:26
#49
Og hvad hvis brugeren vil skrive det sådan: Ursüla_§!"#¤%&/(?^_Ivérsøn
04. januar 2004 - 03:28
#50
-- ah, der må vel være grænser, og de går vel cirka ved ovenstående !-)
04. januar 2004 - 03:34
#51
Så en rimelig RegExp er vel: /^[\w \,\.]+$/i, så burde den i en menneskelig browser svare det rigtige ... -- men ikke i IE ,-\
04. januar 2004 - 03:36
#52
Nej, det er zq første gang i år, jeg har fået den bagfra .... *SVIN* ...!!! :D
04. januar 2004 - 03:37
#53
roenving >> psssst ......... hvem kymrer sig om browsere? Vi taler PHP ...... du ved - på serveren ;o)
04. januar 2004 - 03:42
#54
Yes, men jeg ved jo ikke lige hvordan sådan en svarer ... -- og har det betydning, hvilket styresystem, som er bagved ?-)
04. januar 2004 - 03:49
#55
Jeg finder denne rimelig: if(preg_match("/^[ \w]+$/", $_GET['name']) && preg_match("/^[0-9]{8}$/", $_GET['phonenumber'])) { $q_phonebook = mysql_query("insert into userphonebook (userid,name,phonenumber) values ('$userid','$_GET[name]','$_GET[phonenumber]')"); }
04. januar 2004 - 03:51
#56
Vel if(preg_match("/^[ \w]+$/", $_GET['name']) && preg_match("/^\d{8}$/", $_GET['phonenumber'])) {
04. januar 2004 - 03:52
#57
så lad gå ;)
04. januar 2004 - 03:55
#58
klokken er næsten 4 om natten, og min mailbox bliver spammed på det groveste =)
04. januar 2004 - 04:03
#59
roenving >> Nej OS'et burde ikke betyde noget. Kun PHP's implementering af RegExp
04. januar 2004 - 20:45
#60
Hej, mange tak for de gode svar, jeg kigger på det i løbet af ugen, jeg har ikke til at rode mere med det idag - men læg nogle svar, så fyrer jeg lige nogle points efter jer, og lidt ekstra points oveni hatten! Jeg takker mange gange.
Slettet bruger
05. januar 2004 - 01:36
#61
Hvorvidt PHP tager et tegn som en word-character afhænger af locale-opsætningen. Hvis serveren kører med amerikansk locale, vil den nok ikke matche æøå med en \w
05. januar 2004 - 01:37
#62
well, strlen() og is_integer() på $_GET['phonenumber'] er nok hurtigere end noget andet.
05. januar 2004 - 01:41
#63
Så er vi vidst nede i marginalerne ;o)
Vi tilbyder markedets bedste kurser inden for webudvikling