Avatar billede komet Nybegynder
31. januar 2005 - 08:45 Der er 14 kommentarer og
1 løsning

Funktionerne if_string og if_numeric

Hejsa jeg er igang med og lave et login system i PHP, og det skal lige lige siges jeg er nybegynder i PHP. Jeg kan ikke få funktionerne if_string og if_numeric til og virke ordenligt.

Her er min kode

<?php
//Connecter til MySQL databasen
mysql_connect("localhost", "root", "kommet");
mysql_select_db("skp");
//Password fra data'erne som er blevet indtastet i bruger.php bliver gemt i de 4 variabler
$navn = $_POST['navn'];
$fødselsdag = $_POST['fødselsdag'];
$password = $_POST['password'];
$kort = $_POST['kort'];
$name = 'Du skal skrive et navn';
$tekst = 'Du må ikke bruge tal, kun bogstaver';
$birth = 'Du skal skrive en fødselsdag';
$tal = 'Du må ikke bruge bogstaver, kun tal';
$pass = 'Du skal skrive et password';
$card = 'Du skal skrive et kort nummer';
if ($navn =='' ) {
    echo "<script>window.location.href='/login/fejl/fejlbruger.php?var=$name';</script>";
}
elseif (!is_numeric($navn)) {
    echo "<script>window.location.href='/login/fejl/fejlbruger.php?var=$tekst';</script>";
}
elseif ($fødselsdag =='') {
    echo "<script>window.location.href='/login/fejl/fejlbruger.php?var=$birth';</script>";
}
elseif (!is_string($fødselsdag)) {
    echo "<script>window.location.href='/login/fejl/fejlbruger.php?var=$tal';</script>";
}
elseif ($password =='' ) {
    echo "<script>window.location.href='/login/fejl/fejlbruger.php?var=$pass';</script>";
}
elseif ($kort =='' ) {
    echo "<script>window.location.href='/login/fejl/fejlbruger.php?var=$card';</script>";
}
//Hvis der bliver skrevet noget i form action, bliver det nye password sat ind i databasen i stedet for det gamle
else {
mysql_query("INSERT INTO skp (Navne, Password, Kort, Fødselsdag) VALUES ('$navn', '$fødselsdag', '$password',  '$kort')") or die(mysql_error()); }
print "<script>document.location.href='admin.php';</script>";
?>

Det jeg skal bruge det til er, at man ikke skal kunne skrive tal der hvor man skriver sit navn. Og ikke skrive bogstaver der hvor man skal skrive sin fødselsdag. Nogen der ved hva der er galt med koden???
Avatar billede bromer Nybegynder
31. januar 2005 - 09:01 #1
En streng kan godt indeholde tal. Prøv at se på http://dk.php.net/manual/en/function.preg-match.php og dens lige. Tag dig tid til at læse: http://dk.php.net/manual/en/reference.pcre.pattern.syntax.php
Avatar billede komet Nybegynder
31. januar 2005 - 09:40 #2
Hmm nu har jeg læst de 2 link, og det forstår jeg ikke meget af. Du har ikke et link der er lidt nemmere og forstå. Altså på begynder niveau??
Avatar billede komet Nybegynder
31. januar 2005 - 13:36 #3
Er der ikke nogen der kan svare på spørgsmålet???
Avatar billede bromer Nybegynder
31. januar 2005 - 13:51 #4
Jeg har da svaret på spørgsmålet. Jeg synes det er en bedste løsning, så jeg synes egentlig du skal tage dig tid til at lære at bruge det istedet for en hurtig ikke så god løsning.

Rune
Avatar billede komet Nybegynder
31. januar 2005 - 14:52 #5
Jeg har læst begge link og søgt rundt på php.net. Men synes det virker meget uoverskueligt derinde. Men jeg prøver igen, selvfølgelig har du ret det er den bedste løsning og lære det ordenligt.
Avatar billede komet Nybegynder
31. januar 2005 - 14:54 #6
Hva er PCRE???
Avatar billede alister_crowley Nybegynder
31. januar 2005 - 14:56 #7
php.net er faktisk extremt overskuligt...

men her er et eksempel fra bromers forslag

$navn = "l33T haxor"; // navn som indeholder tal

if(preg_match("/([0-9]+)/",$navn))
{
  echo "Der er tal i dit navn, og det må du ikke";
}

Kaldes regulær expression :)
Avatar billede alister_crowley Nybegynder
31. januar 2005 - 15:02 #8
eller bedre

<?
$navn = "l33T haxor"; // navn som indeholder tal

if(!preg_match("/([a-zA-ZæøåÆØÅ]+)/",$navn))
{
  echo "Der er tal og/eller ulovlige tegn i dit navn, og det må du ikke";
}
?>

Så checker den også for " " værdier.
Avatar billede komet Nybegynder
31. januar 2005 - 15:17 #9
Jeg takker mange gange for begge jeres svar. Jeg vil prøve og få læst noget inde på php.net. I kender ikke andre gode steder hvor man kan læse, når man er ny begynder??? Det kan godt være lidt svært når man ikke kender alle de udtryk, der står inde på php.net
Avatar billede alister_crowley Nybegynder
31. januar 2005 - 18:46 #10
Der findes intet bedre en php.net , hvis du kodede andre sprog end php og f.eks. skulle bruge MSDN ville du opdage hvor dejlig og overskuelig php.net er i forhold.

Men hvis du kender til irc vil jeg anbefale

#php på Quakenet
#php på Efnet

De fortæller dig funtionen, og et link. Og så læser du dig til resten :)
Avatar billede plx Nybegynder
31. januar 2005 - 18:52 #11
alister, jeg synes ikke rigtig din sidste udgave virker efter hensigten..
Avatar billede jakoba Nybegynder
01. februar 2005 - 00:51 #12
der er ikke nogen af PHP's indbyggede funktioner der hedder
    if_string    (den hedder is_string (og gør vist ikke det du ønsker) ).
        http://dk2.php.net/is_string
eller
    if_numeric    (den hedder is_numeric)
        http://dk2.php.net/is_numeric

mvh JakobA
Avatar billede komet Nybegynder
01. februar 2005 - 09:26 #13
jakoba. Ja det var også is_string jeg mente. Min fejl. Ja jeg har fundet ud af de ikke virker
Avatar billede komet Nybegynder
01. februar 2005 - 11:53 #14
Til alle dem der vil lære noget om regulær expression, så kan jeg varmt anbefale http://www.regularexpressions.info den hjalp mig til og forstå det:)
Avatar billede komet Nybegynder
10. februar 2005 - 13:16 #15
Takker rigtig mange gange fir 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