25
Tags:
php
Skrevet af
Bruger #15344
@ 14.01.2010
Indsæt i databasenVi har nu udtrykket de data brugeren indtastede i systemet og mangler altså kun at indsætte brugere i databasen.
Til filen indsaet.php tilføjes:
- mysql_connect("host","brugernavn","password");
- mysql_select_db("database");
-
- if($errorCount == 0)
- {
- $password = MD5($password);
- $insert = mysql_query("INSERT INTO brugere (brugernavn,password) VALUES ('$brugernavn','$password')");
- if(!$insert)
- echo "Der skete en fejl. Prøv igen. <a href=\"javascript:history.back(-1)\">Tilbage</a><br>";
- else
- echo "Brugeren blev oprettet. <a href=\"index.php\">Forside</a><br>";
- }
Det første vi er nødt til for at arbejde med vores database er at oprette en forbindelse til den. Dette sker ved de første to linjer kode. Den første linje skal rettes til, så det passer med de oplysninger dit webhotel/server/lokale installation bruger. Du vil oftest finde disse oplysninger et sted i dit kontrolpanel på dit webhotel.
Anden linje fortæller hvilken database vi gerne vil arbejde med. På nogle webhoteller har man kun en database til rådighed, og så vil navnet på den nok stå oplyst samme sted som de resterende oplysninger. I andre tilfælde kan man selv oprette databaser, og så vælger du blot et passende navn.
Det næste der sker at vi tjekker hvorvidt der har været nogen fejl i brugerens indtastninger. Hvis det ikke er tilfældet ($errorCount er 0), så vil vi gerne indsætte dataene i databasen. Først vil vi dog lige kryptere passwordet, da det så ikke kan ses direkte i databasen.
Næste linje benytter sig af php-funktionen
mysql_query(), denne funktion bruges til alt der har med ændring i databasen at gøre. Om det så gælder udtagning, indsætning, opdatering eller sletning af data. Funktionen tager en SQL-kommando som argument. I dette tilfælde benytter vi
INSERT INTO der indsætter data i tabellen. Den første parantes angiver de felter i tabellen vi vil indsætte data i, mens den anden tabel angive hvilke data der skal indsættes i felterne.
Til sidste tjekkes det, at vores MySQL-kommando ikke gav en fejl.
Det er nu muligt at oprette en bruger som indsættes i vores MySQL-tabel.
Login
HTML-delenTil at logge ind bruges en simpel html-form der minder meget om oprettelsesformen.
login.htm- <html>
- <head>
- <title>Login</title>
- </head>
-
- <body>
- <h1>Login</h1>
- <form action="login.php" method="post">
- Brugernavn: <input type="text" name="brugernavn">
- <br>
- Password: <input type="password" name="password">
- <br>
- <input type="submit" value="Opret">
- </form>
- </body>
- </html>
Formen ligner den vi brugte til oprettelsen, og fungerer lige sådan. Bruger-inputtet sendes igen med metoden "post", denne gang sender vi blot brugeren hen til login.php i stedet for indsaet.php.
PHP-delenPHP-delen af login-scriptet skal tjekke om brugernavn og password passer sammen, og om det indtastede brugernavn overhovedet eksisterer i vores brugertabel. I fald brugernavn og password matcher og eksisterer i vores tabel, skal brugeren registreres som logget ind.
Vi tager det en del af gangen - første tjekker vi med databasen:
login.php- <?php
- session_start();
-
- mysql_connect("host","brugernavn","password");
- mysql_select_db("database");
-
- $bruger = $_POST["brugernavn"];
- $pass = $_POST["password"];
- $error = "";
-
- $userQuery = mysql_query("SELECT id,brugernavn,password FROM brugere WHERE brugernavn='$bruger'");
-
- if(mysql_num_rows($userQuery) != 1)
- {
- $error .= "Brugeren eksisterer ikke.<br>";
- }
- else
- {
- $userArray = mysql_fetch_array($userQuery);
-
- if($userArray["password"] != MD5($pass))
- {
- $error .= "Password og brugernavn passer ikke sammen.<br>";
- }
- }
-
- ?>
Koden her er lidt lang, men vi gennemgår den linje for linje, så det skal nok gå.
Første linje lader vi dog lige ligge til lidt senere.
De to næste linje kender vi fra oprettelsen. De forbinder til databasen.
Herefter defineres variabler til vores bruger-input, nøjagtigt som i oprettelses-delen.
Den første nye del i koden er SQL-kommandoen i linje 11. Vi bruger igen den indbyggede funktion mysql_query(). Denne gang vil vi gerne have data ud af vores tabel. Dette gøres med
SELECT id,brugernavn,password FROM brugere, her vælges 3 felter fra tabellen brugere. I stedet for at vælge specifikke felter kan man bruge SELECT * FROM, hvorved alle felter vælges.
Næste del af SQL-kommandoen starter med
WHERE, hvilket fortæller databasen at vi kun vil have nogle bestemte rækker fra tabellen. I dette tilfælde de rækker hvor brugernavnsfeltet er ens med det brugernavn der er blevet indtastet.
Vi bruger nu endnu en indbygget PHP-funktion, nemlig
mysql_num_rows(), som tæller hvor mange rækker der blev fundet ved den query vi giver den som argument. Hvis ikke den finder en række eksisterer brugeren ikke.
Findes der derimod en række med det brugernavn der er tastet ind, så vil vi gerne have resten af de info der er i den række. Dette gøres med funktionen
mysql_fetch_array, der giver en tabel-række som et array med feltnavnene som nøgle (dvs. indholdet i et felt kan tilgås ved $array['feltnavn']).
Det sidste der tjekkes er om det password der er indtastet stemmer overens med det password der står i databasen. Hvis ikke det gør det angiver vi en fejl i fejlvariablen.
SessionsTil dette login-system bruges sessions til at registrere at en bruger er logget ind. Der findes også en anden metode til dette, nemlig cookies, som dog er lidt mere besværlig.
Den første linje i login.php - "session_start();" - fortæller at vi på denne side anvender sessions. Denne skal bruges på alle sider for at kunne se at brugeren er logget ind.
Den sidste del af login-koden tilføjes:
login.php- if($error != "")
- {
- echo $error . "<a href=\"javascript:history.back(-1);\">Tilbage</a>";
- }
- else
- {
- $_SESSION["logged_in"] = 1;
- $_SESSION["user_id"] = $userArray["id"];
- header("Location: user.php");
- }
Koden er rimeligt simpel. Først tjekker vi om vores fejlvariabel indeholder nogen fejl. Hvis den gør det udskrives fejlene og en tilbageknap.
Hvis det ikke er tilfældet skal vi have sat de sessions der viser at vi nu er logget ind. Dette gøres med
$_SESSION["navn"], hvor 'navn' er navnet på den sessions vi vil sætte, så vi kan finde den igen senere. Vi sætter to sessions. En der viser at man er logget ind, og en der indeholder bruger-id'et. Denne session identificerer altså brugeren.
Til sidst sendes en header der sørge for at sende brugeren videre til en ny side, nemlig user.php. Dette er den første beskyttede side man kommer til efter at være logget ind og kan naturligvis ændres.
Beskyttede sider
For at sørge for, at det kun er brugere der er logget ind der kan se en side tilføjes følgende til siden:
- <?
- session_start();
-
- if($_SESSION["logged_in"] == 1)
- {
- $userQuery = mysql_query("SELECT * FROM brugere WHERE id='$_SESSION[user_id]'");
- $userArray = mysql_fetch_array($userQuery);
-
- // Eksempel på indhold
-
- echo "Hej " . $userArray["brugernavn"] . "!
- <br>
- og velkommen til denne beskyttede side.";
- }
- else
- {
- echo "Du skal være logget ind for at se denne side.";
- }
- ?>
Det første der sker er at session'en startes, så vi kan bruge vores _SESSION-variabler. Derefter tjekkes det hvorvidt brugeren er logget ind, og hvis det er tilfældet hentes brugerens data ud fra databasen, klar til brug på siden.
Opsamling
Loginsystemets bestanddele er nu færdigt, der mangler blot koblingen mellem de forskellige sider. Den kunne se sådan her ud:
- <html>
-
- <head>
- <title>Simpelt loginsystem</title>
- </head>
-
- <body>
-
- <h1>Forside</h1>
- Velkommen til simple dette login-system.
- <br><br>
- <a href="opret.htm">Opret bruger</a>
- <br>
- <a href="login.htm">Login</a>
-
- </body>
- </html>
Test systemet og leg lidt rundt med designet. Du kan også tilføje ekstra felter til din brugertabel, fx alder og køn. Du kan tilføje felterne i oprettelsesformularen og udskrive dem på en side, eller lave statistik over gennemsnitsalder og kønsfordeling.
Der er tusinder af muligheder, ud fra dette simple grundlag.
Afsluttende kommentar
Artiklen her er også at finde på min hjemmeside
Silwing.dk.
Dette er første udgave af artiklen, så al feedback er mere end velkommen.
Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.
Del også gerne artiklen med dine Facebook venner:
Kommentarer (30)
Jeg har lige en hurtig kommentar.
Jeg kan se at du bruger md5 som faktisk kan knækkes ret nemt.
Burde man ikke bruge sha1 for at få en god sikkerhed?
Velformuleret og velstruktureret. Et godt, hurtigt, simpelt og lige til stykke tekst at smide i hovedet på PHP-begyndere.
Lige et par forslag til forbedringer med på vejen:
Du bruger åbningstagget <? i de fleste af dine filer. Det er efterhånden blevet en meget udbredt best practice altid at bruge åbningstagget <?php istedet, da det er mere generisk - mange hostingfirmaer har deaktiveret shorttags, så det smarteste er at vænne sig til at bruge <?php - hvis ikke for din egen, så for folk du eventuelt på et tidspunkt deler noget kode meds skyld.
Du er heller ikke altid helt konsistent med dine if-sætninger. Folk med en smule hår på brystet hvad angår kodning kan sagtens identificere varierende if-sætninger og hvorfor det er bedre at bruge den ene frem for den anden, men en nybegynder, som er artiklens målgruppe, bliver som regel forvirret hvis en if/else både skrives som:
if(noget)
{
stuff();
}
else
{
other_stuff();
}
og
if(!$insert)
echo "Der skete en fejl. Prøv igen. <a href=\"javascript:history.back(-1)\">Tilbage</a><br>";
else
echo "Brugeren blev oprettet. <a href=\"index.php\">Forside</a><br>";
i den samme artikel.
Fin nok artikel, men der er dog et enkelt sted, hvor der kan ende med at dukke en sikkerhedsfejl op.
Ved $bruger tilføjer du ikke selv nogen backslashes (\), og selvom den normalt tilføjer dette af sig selv, er det muligt at slå det fra, hvilket betyder at ikke alle servere nødvendigvis sørger for det selv. Hvis serveren ikke gør dette, vil jeg bare kune skrive a' OR '1' = '1 eller noget værre endnu, og vupti, jeg er logget ind på siden.
Tak for feedbacken. Regner med at tilføje opdateringer til guiden når jeg får tid
Kan godt se problemet med sql-injections, jeg overvejede også at medtage det. Det største problem her er at artiklen er for absolut begyndere, så jeg vil også helst begrænse den, så det ikke bliver for meget på en gang. Det kan være jeg skal skrive lidt om sikkerhed i min afslutning, så man selv kan læse videre og forbedre det
.
Hej
Jeg er ny, og har "leget" lidt med din artikel.
Den er fin og nem at forstå. Men ...
Jeg har ledt rundt på nettet, men kan ikke helt finde ud af hvorfor jeg får denne fejlkode:
Warning: Cannot modify header information - headers already sent by (output started at /customers/xxxx.dk/xxxx.dk/httpd.www/Test/login.php:1) in /customers/xxxx.dk/xxxx.dk/httpd.www/Test/login.php on line 35
Hvad her jeg gjort forkert ?
Flemming, prøv at tjekke om du eventuelt har mellemrum, linjeskift eller lignende før den første <?php ... ?> blok. Ethvert tegn foran her vil betyde udskrift til browseren, og derved give den fejl du omtaler.
Jep korrekt. Tak
Jeg får følgende fejlmeddelelser ved login.php til user.php:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /data/cluster/free1go/d/o/www.donl.1go.dk/brugersystem1/user.php:1) in /data/cluster/free1go/d/o/www.donl.1go.dk/brugersystem1/user.php on line 2
Warning: mysql_query(): Access denied for user 'root'@'localhost' (using password: NO) in /data/cluster/free1go/d/o/www.donl.1go.dk/brugersystem1/user.php on line 6
Warning: mysql_query(): A link to the server could not be established in /data/cluster/free1go/d/o/www.donl.1go.dk/brugersystem1/user.php on line 6
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /data/cluster/free1go/d/o/www.donl.1go.dk/brugersystem1/user.php on line 7
Hvad kan der være gået galt?
Mads VL - som Flemming også fik at vide så har du muligvis er mellemrum eller lign. foran dit <?. Den siger i hvert fald at den ikke kan sende headeren i linje 2, fordi der allerede er udskrevet noget til browseren i linje 1.
Den næste fejl skyldes en fejl idet du forsøger at connecte til databasen. Den vil ikke give dig adgang. Formentlig er dette fordi du har skrevet et forkert host/brugernavn/password i
mysql_connect('host','brugernavn','password');
De sidste to fejl går væk når du får kontakt til databasen
Okay har rettet det som du sagde, men for nu kun disse fejlmeddelser når jeg prøver at logge brugeren ind:
Warning: mysql_query(): Access denied for user 'root'@'localhost' (using password: NO) in /data/cluster/free1go/d/o/www.donl.1go.dk/brugersystem1/user.php on line 7
Warning: mysql_query(): A link to the server could not be established in /data/cluster/free1go/d/o/www.donl.1go.dk/brugersystem1/user.php on line 7
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /data/cluster/free1go/d/o/www.donl.1go.dk/brugersystem1/user.php on line 8
Hej !
og velkommen til denne beskyttede side.
Man kan sagtens oprette sig i databasen, men når man logger ind får man ovenstående.. Den siger også kun "Hej !" i stedet for "Hej (brugernavn)!"
adressen er
http://donl.1go.dk/brugersystem1/index.htm hvis det er til nogen hjælp
Okay har rettet det som du sagde, men for nu kun disse fejlmeddelser når jeg prøver at logge brugeren ind:
Warning: mysql_query(): Access denied for user 'root'@'localhost' (using password: NO) in /data/cluster/free1go/d/o/www.donl.1go.dk/brugersystem1/user.php on line 7
Warning: mysql_query(): A link to the server could not be established in /data/cluster/free1go/d/o/www.donl.1go.dk/brugersystem1/user.php on line 7
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /data/cluster/free1go/d/o/www.donl.1go.dk/brugersystem1/user.php on line 8
Hej !
og velkommen til denne beskyttede side.
Man kan sagtens oprette sig i databasen, men når man logger ind får man ovenstående.. Den siger også kun "Hej !" i stedet for "Hej (brugernavn)!"
adressen er
http://donl.1go.dk/brugersystem1/index.htm hvis det er til nogen hjælp
Okay har rettet det som du sagde, men for nu kun disse fejlmeddelser når jeg prøver at logge brugeren ind:
Warning: mysql_query(): Access denied for user 'root'@'localhost' (using password: NO) in /data/cluster/free1go/d/o/www.donl.1go.dk/brugersystem1/user.php on line 7
Warning: mysql_query(): A link to the server could not be established in /data/cluster/free1go/d/o/www.donl.1go.dk/brugersystem1/user.php on line 7
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /data/cluster/free1go/d/o/www.donl.1go.dk/brugersystem1/user.php on line 8
Hej !
og velkommen til denne beskyttede side.
Man kan sagtens oprette sig i databasen, men når man logger ind får man ovenstående.. Den siger også kun "Hej !" i stedet for "Hej (brugernavn)!"
adressen er
http://donl.1go.dk/brugersystem1/index.htm hvis det er til nogen hjælp
Ah... Kan godt se jeg har lavet en fejl
my bad..
På din beskyttede side (user.php) skal du naturligvis også connecte til databasen ligesom på siden login.php.
Tilføj disse to linjer efter din session_start(); i user.php. Husk naturligvis at rette host/brugernavn/password/database til dine egne værdier.
mysql_connect("host","brugernavn","password");
mysql_select_db("database");
Det giver god mening i hvert fald.. det vil jeg gøre
tak for hjælpen !
Dejlig guide og glæder mig til at hoppe over den, men eftersom du efterspørger rettelser så ville jeg lige tilføje at der er lidt fejl i din tekst i det sidste kode eksempel:
"Velkommen til simple dette login-system"
hvor der lige skal byttes rundt på to ord
Men ellers rigtig god guide, der helt får mig til at ville prøve at programmere i php igen.
Hey, super artikel, tusind tak!!
Et spørgsmål, jeg kan ikke få min login.php til at redirecte til user.php, efter jeg logger ind bliver den bare på login.php og der er intet på siden... - jeg ved ikke hvorfor!
Jeg har stort set bare kopieret alle koder fra din artikel, men det virker stadig ikke - nogle idéer til hvorfor dette kunne være??
Nicholas
Hej .. (:
Jeg har længe forsøgt at lære PHP, men der findes absolut ingen brugbare guides til nybegyndere. I hvert fald ikke til mig.
Så, nu håbede jeg lige, da jeg så din artikel. Især fordi jeg netop står og skal bruge et loginsystem.
Men, selvfølgelig. Jeg kommer til det sted der omhandler MySQL - og pludselig skal man lave nogle kolonner og nogle rækker, og sætte hak i ting og sager? Jeg fatter absolut ingenting. Hvad snakker du om? Kan jeg få lidt hjælp her? ..
Det her er en rigtig god guide, og nok den bedste jeg har set længe. Jeg er selv forholdsvis ny til PHP bortset fra, at jeg efterhånden kan lave "kontaktforme". Jeg lånte derfor bogen "Start på PHP5", som giver en udmærket forståelse af, hvordan det hele fungerer. Og der er også et afsnit omkring MySql. Problemet med bogen er bare, at den ikke altid, specielt til sidst, bruger nogle særlig gode metoder. Der bliver brugt 10x så meget kode, som her. Efter jeg er blevet færdig med bogen, læste jeg denne artikel, og den er rigtig god - med lidt tilføjelser som "addslashes", for sikkerhedens skyld, vil jeg nok fremover bruge dette som grundform for mine login-systemer. Men hvis en af jer kloge hoveder, vil præcisere hvad "MD5" helt præcist gør, vil jeg blive glad - og nu snakkede Brun0 om noget med sha1?
Thumbs up to the auother!
Mvh.
Christian Bundgaard / Dev
PS: Ida, gå ind på phpmyadmin - som du højst sandsynligt har adgang til, hvis du har et webhotel - og gå ind på din database. Der er en fane, der hedder SQL, og der indsætter du bare koden og trykker OK/Go 1-2 gange.
super tutorial
har slev afprøvet den og virker glimrende,
ville dog bruge sha1 istedet som BrunO også siger
5/5
Har nu prøvet at eksperimentere med det, men det virker ikke for mig. Det er nok en eller anden dum fejl, men hvis der er en, der kan finde den, vil jeg blive glad
Når jeg opretter en bruger, kommer den til en tom side.
Her er koderne - først opret.htm og dernæst indsaet.php
<html>
<head>
<title>Login system</title>
</head>
<body>
<h1>Opret bruger</h1>
<form action="indsaet.php" method="post">
Brugernavn: <br/>
<input type="text" name="brugernavn"> <br/>
Password: <br/>
<input type="password" name="password"> <br/>
Gentag password: <br/>
<input type="password" name="gentag"> <br/>
<input type="submit" value="Opret">
</form>
</body>
</html>
<?
$brugernavn = $_POST["brugernavn"];
$password = $_POST["password"];
$gentag = $_POST["gentag"];
$errorCount = 0; // Sikkerhedstjek. Hvis der er en ting, der ikke er som det skal, forhøjes tallet med 1. Så tjekker man til sidst.
if($brugernavn == "")
{
echo "Du skal indtaste et brugernavn.<br>";
$errorCount++;
}
if($password == "")
{
echo "Du skal indtaste et brugernavn. <br>";
$errorCount++;
}
if($gentag == "" || $gentag != $password)
{
echo "De to passwordfelter skal have ens indhold. <br>";
$errorCount++;
}
mysql_connect("*****", "*****", "*****");
mysql_select_db("*****");
if($errorCount == 0)
{
$password = sha1($password);
$insert = mysql_query("INSERT INTO brugere (brugernavn, password) VALUES ('$brugernavn', '$password')");
if(!$insert)
{
echo "Der skete en fejl. Prøv venligst igen - <a href=\"javascript:history.back(-1)\">gå tilbage?</a><br>";
}
else
{
echo "Brugeren blev oprettet. <a href=\"index.php\">Gå til forsiden?</a><br>";
}
?>
Jeg bliver MEGET glad, hvis der er en der kan løse det, da det er mit første loginsystem, og jeg vil rigtig gerne lære det
Mvh.
Christian
Problem løst. Der var glemt en "}" til sidst ^^
Hey!
Det er en super artikel, og det virker super, men der er dog ét problem, og det er at man kan oprette den samme bruger 2 eller flere gange med samme brugernavn o_o Hvordan forhindre jeg det? Læg venligst en/et kode/script til dette
Hej, det er en rigtig god artikel, dog forvirrende det med at du ikke kalde fil navnene det samme i alle koderne, men skidt pyt da det jo er til at forstå.
Men jeg er løbet ind i samme problem som Nicholas Bendt.
Det er somom at den glemmer at jeg er logget ind når går hen på en ny side altså user.php
Hej Anton
For at sørge for at man ikke kan oprette to brugere med samme brugernavn tilføjer du følgende kode på linjerne mellem
mysql_select_db() og
if($errorCount == 0):
$bruger = mysql_query("SELECT * FROM brugere WHERE brugernavn='$brugernavn'");
if(mysql_num_rows($bruger) > 0)
{
echo "Brugernavnet er allerede taget.<br>";
$errorCount++;
}
Det koden gør er at lede efter en bruger med det valgte brugernavn i databasen.
mysql_num_rows tæller hvor mange rækker en
mysql_query har fundet. Hvis den finder nogen rækker med det brugernavn, så er brugernavnet optaget og den udskriver en fejl.
Bemærk at ovenstående skal indsættes i indsaet.php. Fik jeg ikke lige skrevet.
Og tak for rosen til alle jer andre.
I stedet for at gøre som Randi H. foreslår, hvad så med at gøre kombinationen af brugernavn og koderord unik i tabellen.
Test om indsættelse forårsager fejlen, der returneres ved forsøg på oprettelse af en række med et gentaget unikt index.
Hey, super artikel, tusind tak!!
Et spørgsmål, jeg kan ikke få min login.php til at redirecte til user.php, efter jeg logger ind bliver den bare på login.php og der er intet på siden... - jeg ved ikke hvorfor!
Jeg har stort set bare kopieret alle koder fra din artikel, men det virker stadig ikke - nogle idéer til hvorfor dette kunne være??
Nicholas
Hej
Jeg har det samme problem.
Når jeg så istedet submitter login.php fra login.htm, får jeg at vide at brugeren ikke eksisterer.
Kan ikke lige gennemskue hvor fejlen ligger. Håber der er en barmhjertig sjæl der kan hjælpe mig.
Tage
Først og fremmest tak for en god artikel - jeg er dog stødt på et enkelt problem:
Jeg får følgende fejlmeddelse, når jeg logger ind og går til user siden.
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/user.php on line 7
Derefter kommer indholdet på user-siden op dog uden at skrive brugernavnet:
Hej !
og velkommen til denne beskyttede side.
Jeg kan se at det har noget at gøre med disse linjer i koden.
- $userQuery = mysql_query("SELECT * FROM brugere WHERE id='$_SESSION[user_id]'");
- $userArray = mysql_fetch_array($userQuery);
Men hvad skal jeg gøre for at løse det. Som jeg forstår det forventer mysql_fetch_array en ressource, men får en boolean? Jeg kan ikke helt se hvad jeg kan gøre ved det?
Venlig Hilsen
Jeppe
Er ikke noget sikkerhed for SQL injection! Pas på med det!
Fantastisk, intet mindre, jeg har længe søgt informationer om mysql og hvordan jeg fra en webside kan sende info.
lavede filerne imens jeg læste igennem første gang og alt virkede.
Jeg har ikke tidligere set så flot en gennemgang uden unødigt sludder af noget som helst programmering, de fleste andre kommer med meget forvirrende materiale ind i mellem.
TAK
mvh
Keld
Du skal være
logget ind for at skrive en kommentar.