Avatar billede Morten Professor
06. november 2015 - 21:41 Der er 32 kommentarer og
1 løsning

if ($ip == NULL )

Hej Eksperter

Jeg har et problem med at få et nyt id feks. Ip

når jeg bruger if ($ip == NULL )
Vil den ikke sætte et nyt ind selvom det ikke er der.

>= <= != virker ikke til det jeg skal med det.

Med venlig hilsen
Morten
Avatar billede olsensweb.dk Ekspert
06. november 2015 - 22:01 #1
har du prøvet at echo £ip før den test ?? så du ved om betingelsen skal være sand
findes variablen $ip ??

if(isset($ip) ){
    echo $ip; // test
    if ($ip == NULL ){
    echo "øf"; // test
    }
    if ($ip == ""){
    echo "gris";
    }
}
else{
    echo "ip findes ikke";
}
Avatar billede jakobdo Ekspert
06. november 2015 - 22:43 #2
Som Ronols er inde på, så prøv at print $ip inden og se hvad den rent faktisk er.
Brug f.eks.:

echo '<pre>';
var_dump($ip);
echo '</pre>';

Så kan du nemt se hvad $ip indeholder.
Avatar billede Morten Professor
07. november 2015 - 11:24 #3
Den kommer kun ind når jeg laver $ip >= NULL
Avatar billede Morten Professor
07. november 2015 - 11:25 #4
Det er under insert
Avatar billede Morten Professor
07. november 2015 - 11:26 #5
Min kode:

<?php
/* Select et prepared statement */
if ($stmt = $hellestrik->prepare('SELECT ip, hits, besoeg, `datetime` FROM `tbl_besogstaeller` WHERE ip = ?')) {

    /* Bind parametre */
    $stmt->bind_param('s', $ip);

    /* Sæt værdier på parametrene */
    $ip = $_GET['privat'];

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Bind resultatet */
    $stmt->bind_result($ip, $hits, $besoeg, $datetime);

    /* Hent rækker og udskriv data */
    while ($stmt->fetch()) {
    echo $ip;
    echo $hits;}
   
    if ($ip >= NULL ){
/* Opret et prepared statement */
if ($stmt = $hellestrik->prepare('INSERT INTO `tbl_besogstaeller` (ip, hits, besoeg, `datetime`) VALUES (?, ?, ?, ?)')) {

    /* Bind parametre */
    $stmt->bind_param('siis', $ip, $hits, $besoeg, $datetime);

    /* Sæt værdier på parametrene */
    $ip = $_GET['privat'];
    $hits = 1;
    $besoeg = 1;
    $datetime = date('Y-m-d H:i:s');
    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Luk statement */

}}}
    if ($hits >= 0){
    {
        if ($stmt = $hellestrik->prepare('UPDATE `tbl_besogstaeller` SET `hits`=? WHERE `ip`= '.$ip)) {

    /* Bind parametre */
    $stmt->bind_param('i', $hits);

    /* Sæt værdier på parametrene */
    $hits = $hits+1;

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Luk statement */
   

} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
}
    }};
?>
Avatar billede olsensweb.dk Ekspert
07. november 2015 - 13:28 #6
jeg tror det er nemmere for os andre og sikkert også for dig, hvis du formaterede coden korrekt med indrykninger.
hvis din editor ikke kan lave autoformatering kan jeg anbefale https://netbeans.org/

når du ligger code her på eksperten, så pak det ind i en blå box
(div)(pre)her skal din code stå(/pre)(/div)
nb: paranteserne skal være de kantede, så () skal []
læs guiden http://www.eksperten.dk/guide/1325
det gør indlægget nemmere at læse

står der det rigtige i denne udskrift ??
   
while ($stmt->fetch()) {
    echo $ip;
    echo $hits;
}

hvad står der hvis IP findes ??
hvad står der hvis IP ikke findes ??

det du vil gøre kan skrives og tested kort som jeg skrev i http://www.eksperten.dk/spm/1007095#reply_8200129
det du gør er at vælte hele lortet sammen, og så ryger overblikket

du kan gøre din code nemmere at læse / vedligeholde / genbruge / teste hvis du opbyggede det i functioner.

<?php
require_once("model.php"); // her ligger connection og alle sql funktioner
$privat_ip = $_GET['privat'];
$status = besogstaeller_IsIpCreated($hellestrik, $privat_ip);
if ($status == 0) { // ip addresen findes ikke
    besogstaeller_Create($hellestrik, $privat_ip);
} else { // ip addresen findes, så skal den opdateres med et hit mere
    besogstaeller_Update($hellestrik, $privat_ip);
}
?>

en bonus ved at lave det det som funktioner, er at du kan spare en del af din code, og ved at placere alle sql functioner i en fil gør du det nemt at skifte database API, feks over til PDO (kan kun anbefales) 

besogstaeller_IsIpCreated er den vigtigste.
besogstaeller_Create er næsten lavet i http://www.eksperten.dk/spm/1007095#reply_8200117 skal bare pakkes ind som en function
besogstaeller_Update har du selv et bud på, der skal pakkes ind som en function

men alle functioner kan laves og testes hver for sig, uden de andre er lavet først
Avatar billede Morten Professor
07. november 2015 - 16:15 #7
Hvordan sætter jeg sådan en function op??
Med det jeg har lavet. kode som er lavet hvordan får jeg det ind i en funktion.
Har ikke prøvet det før.
Avatar billede Morten Professor
07. november 2015 - 16:40 #8
hov fandt ud af det ;o)
Avatar billede Morten Professor
07. november 2015 - 16:47 #9

/* Select et prepared statement */
function besogstaeller_IsIpCreated(){
if ($stmt = $hellestrik->prepare('SELECT ip, hits, besoeg, `datetime` FROM `tbl_besogstaeller` WHERE ip = ?')) {

    /* Bind parametre */
    $stmt->bind_param('s', $ip);

    /* Sæt værdier på parametrene */
    $ip = $_GET['privat'];

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Bind resultatet */
    $stmt->bind_result($ip, $hits, $besoeg, $datetime);

    /* Hent rækker og udskriv data */
    while ($stmt->fetch()) {
    echo $ip;
    echo $hits;}
}

require_once("testside/besoegtaeller.php"); // her ligger connection og alle sql funktioner
$privat_ip = $_GET['privat'];
$status = besogstaeller_IsIpCreated($hellestrik, $privat_ip);
if ($status == 0) { // ip addresen findes ikke
    besogstaeller_Create($hellestrik, $privat_ip);
} else { // ip addresen findes, så skal den opdateres med et hit mere
    besogstaeller_Update($hellestrik, $privat_ip);
}




Jeg får hvid side :o/
Avatar billede olsensweb.dk Ekspert
07. november 2015 - 17:44 #10
#9
$hellestrik er ikke tilgængelig inde i functionen, den skal over som parameter

$ip vil jeg tager over som parameter, da det er en uskik at bruge globale og super globale inde i functions
så denne linje
function besogstaeller_IsIpCreated(){
skal som minimun laves om til
function besogstaeller_IsIpCreated($hellestrik){

din function mangler at blive afsluttet ( } )

$status = besogstaeller_IsIpCreated($hellestrik, $ip);
det forvendtes din function retunerer noget


så din function skal formindelig se sådan ud
(utested)
   
function besogstaeller_IsIpCreated($hellestrik, $ip){
    $_id=0;
    /* Select et prepared statement */
    if ($stmt = $hellestrik->prepare('SELECT id FROM `tbl_besogstaeller` WHERE ip = ?')) {
        /* Bind parametre */
        $stmt->bind_param('s', $ip);

        /* Sæt værdier på parametrene */
        // $ip = $_GET['privat'];

        /* Eksekver forespørgslen */
        $stmt->execute();

        /* Bind resultatet */
        $stmt->bind_result($ip);

        /* Hent rækker og udskriv data */
        while ($stmt->fetch()) {
            // hvis ip addressen ligger der flere gange, er det kun den sidste der bruges
            $_id = $id;   
        }
    }
    return $_id;   
}


jeg tror jeg ville lave det som 1 af disse 2
(utested)

// retunerer 0 hvis ikke oprettet, og eller retuneres antal det ligger i tabellen (burde kun være 1)
// http://php.net/manual/en/mysqli-stmt.num-rows.php
function besogstaeller_IsIpCreated($conn, $ip) {
    $antal = 0;
    $query = "SELECT id FROM tbl_besogstaeller WHERE ip = ?";
    if ($stmt = $conn->prepare($query)) {
        $stmt->bind_param('s', $ip);
        /* execute query */
        $stmt->execute();
        /* store result */
        $stmt->store_result();
        $antal = $stmt->num_rows;
        /* close statement */
        $stmt->close();
    }
    return $antal;
}

// retunerer id på ip i tabellen
function besogstaeller_IsIpCreated($conn, $ip) {
    $_id = 0;
    $query = "SELECT id FROM tbl_besogstaeller WHERE ip = ? LIMIT 1";
    if ($stmt = $conn->prepare($query)) {
        $stmt->bind_param('s', $ip);
        /* execute query */
        $stmt->execute();
        /* Bind resultatet */
        $stmt->bind_result($id);

        /* Hent rækker og udskriv data */
        while ($stmt->fetch()) {
            $_id=$id;
        }       
        /* close statement */
        $stmt->close();
    }
    return $_id;
}
Avatar billede Morten Professor
07. november 2015 - 20:14 #11
Så fik jeg fixet det og ingen hvid side igen, noget jeg ikke forstår hvorfor bliver den ved med at komme med nyt ip altså det samme igen og igen, hits tæller ikke op
Avatar billede olsensweb.dk Ekspert
07. november 2015 - 20:36 #12
#11
hvad står der i $status ??
prøv med en ip addresse der står i databasen
prøv med en ip addresse der IKKE står i databasen

(utested)
   
require_once("testside/besoegtaeller.php"); // her ligger connection og alle sql funktioner
// $privat_ip = $_GET['privat'];

$privat_ip = "8.8.8.8"; // forvendter 0
// $privat_ip = "62.44.135.217"; // forvendter tal størrer end 0

$status = besogstaeller_IsIpCreated($hellestrik, $privat_ip);
echo $status;

/*
// udkommenteret pgs det kun er besogstaeller_IsIpCreated der skal testes

if ($status == 0) { // ip addresen findes ikke
    besogstaeller_Create($hellestrik, $privat_ip);
} else { // ip addresen findes, så skal den opdateres med et hit mere
    besogstaeller_Update($hellestrik, $privat_ip);
}
*/


har du slået error_reporting og display error til ?? (hvis ikke så gør det)
Avatar billede Morten Professor
07. november 2015 - 20:48 #13
Den kommer med det første ip som ip 62 ikke 8.8.8.8
Avatar billede Morten Professor
07. november 2015 - 20:48 #14
Den der erro report hvordan slår jeg det til
Avatar billede Morten Professor
07. november 2015 - 20:51 #15
Jeg lavede sådan en echo error_reporting(0); men ingen udslag
Avatar billede Morten Professor
07. november 2015 - 20:52 #16
error_reporting(-1); og med denne
Avatar billede Morten Professor
07. november 2015 - 20:54 #17
når jeg så gør det med en ny ip kommer den på samme måde
Avatar billede olsensweb.dk Ekspert
07. november 2015 - 21:20 #18
lav en helt tom fil der ser sådan ud:

test_stub.php

<?php
ini_set("display_startup_errors", "on");
ini_set("display_errors", "on");
ini_set("html_errors", "false");
error_reporting(-1); // -1 viser alle slags fejl beskeder
ini_set("ignore_repeated_errors", 0);


function besogstaeller_IsIpCreated($hellestrik, $ip){
    $_id=0;
    /* Select et prepared statement */
    if ($stmt = $hellestrik->prepare('SELECT id FROM `tbl_besogstaeller` WHERE ip = ?')) {
        /* Bind parametre */
        $stmt->bind_param('s', $ip);       

        /* Eksekver forespørgslen */
        $stmt->execute();

        /* Bind resultatet */
        $stmt->bind_result($id); // her var en trykfejl

        /* Hent rækker og udskriv data */
        while ($stmt->fetch()) {
            // hvis ip addressen ligger der flere gange, er det kun den sidste der bruges
            $_id = $id;   
        }
    }
    return $_id;   
}


$hellestrik = new mysqli("localhost", "root", "", "test");

$privat_ip = "8.8.8.8"; // forvendter 0
// $privat_ip = "62.44.135.217"; // forvendter tal størrer end 0

$status = besogstaeller_IsIpCreated($hellestrik, $privat_ip);
echo $status;
?>

hvad står der i status ??
hvis den skriver 0 er det OK
prøv derefter at rette
$privat_ip = "8.8.8.8";
til
$privat_ip = "62.44.135.217";
hvad skriver den så i $status ??
hvis dens kriver et tal > 0 kontroller i databasen om det id passer med ip addressen (det formoder jeg)

hvis det mod forvendtning ikke virker så lav et sql dump af din tbl_besogstaeller og lig det herind
Avatar billede Morten Professor
07. november 2015 - 21:33 #19
Den siger

Warning: mysqli::mysqli(): (28000/1045): Access denied for user 'root'@'localhost' (using password: NO) in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/test_stub.php on line 33 Warning: mysqli::prepare(): Couldn't fetch mysqli in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/test_stub.php on line 13 0
Avatar billede Morten Professor
07. november 2015 - 21:39 #20
{div]

-- phpMyAdmin SQL Dump
-- version 4.1.12
-- http://www.phpmyadmin.net
--
-- Vært: localhost:3306
-- Genereringstid: 07. 11 2015 kl. 21:38:46
-- Serverversion: 5.5.45-cll-lve
-- PHP-version: 5.4.33

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `t65463_fluefiskersiden_webshop`
--

-- --------------------------------------------------------

--
-- Struktur-dump for tabellen `tbl_besogstaeller`
--

CREATE TABLE IF NOT EXISTS `tbl_besogstaeller` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ip` varchar(255) NOT NULL,
  `hits` decimal(10,0) NOT NULL,
  `besoeg` decimal(10,0) NOT NULL,
  `datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=99 ;

--
-- Data dump for tabellen `tbl_besogstaeller`
--

INSERT INTO `tbl_besogstaeller` (`id`, `ip`, `hits`, `besoeg`, `datetime`) VALUES
(95, '62', '1', '1', '2015-11-07 20:11:33'),
(96, '62', '1', '1', '2015-11-07 20:15:38'),
(97, '62', '1', '1', '2015-11-07 20:15:42'),
(98, '62', '1', '1', '2015-11-07 20:31:10');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
[/div]
Avatar billede Morten Professor
07. november 2015 - 21:40 #21
doh undskyld
[div]
-- phpMyAdmin SQL Dump
-- version 4.1.12
-- http://www.phpmyadmin.net
--
-- Vært: localhost:3306
-- Genereringstid: 07. 11 2015 kl. 21:38:46
-- Serverversion: 5.5.45-cll-lve
-- PHP-version: 5.4.33

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `t65463_fluefiskersiden_webshop`
--

-- --------------------------------------------------------

--
-- Struktur-dump for tabellen `tbl_besogstaeller`
--

CREATE TABLE IF NOT EXISTS `tbl_besogstaeller` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ip` varchar(255) NOT NULL,
  `hits` decimal(10,0) NOT NULL,
  `besoeg` decimal(10,0) NOT NULL,
  `datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=99 ;

--
-- Data dump for tabellen `tbl_besogstaeller`
--

INSERT INTO `tbl_besogstaeller` (`id`, `ip`, `hits`, `besoeg`, `datetime`) VALUES
(95, '62', '1', '1', '2015-11-07 20:11:33'),
(96, '62', '1', '1', '2015-11-07 20:15:38'),
(97, '62', '1', '1', '2015-11-07 20:15:42'),
(98, '62', '1', '1', '2015-11-07 20:31:10');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
[/div
Avatar billede Morten Professor
07. november 2015 - 21:53 #22
Den gør det samme ved ændring af ip
Avatar billede olsensweb.dk Ekspert
07. november 2015 - 22:05 #23
#19, du har ikke skrevet de rigtige informationer til din database connection

#20/21
sjov ip addresse du har i db. (mangler ligesom en del tal)

   
<?php
ini_set("display_startup_errors", "on");
ini_set("display_errors", "on");
ini_set("html_errors", "false");
error_reporting(-1); // -1 viser alle slags fejl beskeder
ini_set("ignore_repeated_errors", 0);


function besogstaeller_IsIpCreated($conn, $ip){
    $_id=0;
    /* Select et prepared statement */
    if ($stmt = $conn->prepare('SELECT id FROM `tbl_besogstaeller` WHERE ip = ?')) {
        /* Bind parametre */
        $stmt->bind_param('s', $ip);

        /* Sæt værdier på parametrene */
        // $ip = $_GET['privat'];

        /* Eksekver forespørgslen */
        $stmt->execute();

        /* Bind resultatet */
        $stmt->bind_result($id);

        /* Hent rækker og udskriv data */
        while ($stmt->fetch()) {
            // hvis ip addressen ligger der flere gange, er det kun den sidste der bruges
            $_id = $id;   
        }
    }
    return $_id;   
}

$hellestrik = new mysqli("localhost", "root", "", "test");
// $privat_ip = "8.8.8.8"; // retunerer 0 OK
// $privat_ip = "62.44.135.217"; // forvendter tal størrer end 0
$privat_ip = "62"; // retunerer 98 OK

$status = besogstaeller_IsIpCreated($hellestrik, $privat_ip);
echo $status;
?>

så funktionen virker efter hensigten, så kan du godt ligge den over i dit project, og slette din test_stub.php, skal ikke bruges mere
Avatar billede olsensweb.dk Ekspert
07. november 2015 - 22:08 #24
man kunne tro du har indsat ip som integer!! bare et gæt
Avatar billede Morten Professor
07. november 2015 - 22:16 #25
Hehe ja den tager kun de to tal, og det gør den altid.

Men hvad er det den gør der forhindre at gøre det rigtige.
Den bliver ved med at komme med flere af den samme id.
Hvad gør jeg galt.

den er ikke integreret den får det fra min min ip.
når jeg bevæger mig rundt på siden.
Avatar billede Morten Professor
07. november 2015 - 22:17 #26
id* = ip
Avatar billede Morten Professor
07. november 2015 - 22:25 #27
Er det her den er gal??

<?php
/* Select et prepared statement */
function besogstaeller_IsIpCreated($hellestrik){
if ($stmt = $hellestrik->prepare('SELECT ip, hits, besoeg, `datetime` FROM `tbl_besogstaeller` WHERE ip = ?')) {

    /* Bind parametre */
    $stmt->bind_param('s', $ip);

    /* Sæt værdier på parametrene */
    $ip = $_GET['privat'];

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Bind resultatet */
    $stmt->bind_result($ip, $hits, $besoeg, $datetime);

    /* Hent rækker og udskriv data */
    while ($stmt->fetch()) {
    echo $ip;
    "<br/>";
    echo $hits;}
}
/* Opret et prepared statement */
function besogstaeller_Create($hellestrik){

if ($stmt = $hellestrik->prepare('INSERT INTO `tbl_besogstaeller` (ip, hits, besoeg, `datetime`) VALUES (?, ?, ?, ?)')) {

    /* Bind parametre */
    $stmt->bind_param('siis', $ip, $hits, $besoeg, $datetime);

    /* Sæt værdier på parametrene */
    $ip = $_GET['privat'];
    $hits = 1;
    $besoeg = 1;
    $datetime = date('Y-m-d H:i:s');
    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Luk statement */
}

function besogstaeller_Update($hellestrik){
        if ($stmt = $hellestrik->prepare('UPDATE `tbl_besogstaeller` SET `hits`=? WHERE `ip`= '.$ip)) {

    /* Bind parametre */
    $stmt->bind_param('i', $hits);

    /* Sæt værdier på parametrene */
    $hits = $hits+1;

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Luk statement */
   

} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
}
    }}}
?>
Avatar billede olsensweb.dk Ekspert
07. november 2015 - 22:26 #28
>id* = ip
det var tryg fejlen er rettet i #18

>Hehe ja den tager kun de to tal, og det gør den altid.
så er der fejl i din insert, eller de data du sender til din insert
Avatar billede Morten Professor
07. november 2015 - 22:41 #29
Jeg kan simpelhen ikke finde den fejl.
Avatar billede Morten Professor
07. november 2015 - 22:45 #30
Nu fik jeg alle tallene med men virker stadig ikke :o(
Avatar billede olsensweb.dk Ekspert
08. november 2015 - 13:41 #31
#20 #21
`hits` decimal(10,0) NOT NULL,
`besoeg` decimal(10,0) NOT NULL,

hvorfor er dette decimal ?? du kan ikke have halve hits, eller halve besoeg, de skal være "INT"
du bør sette ip til at være UNIQUE

#27
retunerer besogstaeller_IsIpCreated noget ?? (svar nej)
det er en uskik at bruge global og super globale($_POST, $_GET) inde i functioner, de skal over som variable

alt hvad der er inde i en function bliver inde i functionen, og glemmes når functionen forlades.
skal du bruge data fra function udenfor skal de retuneres

de andre functioner har jeg ikke kigget på ennu

du fik en velfungerende besogstaeller_IsIpCreated i #23 brug den.

#30
hvad virker ikke ??

lav en test stub til hver function og test den, når den virker efter hensigten ligges functionen over i projected
Avatar billede Morten Professor
21. december 2015 - 17:11 #32
ronols vil du smide et svar?

Det er ordnet, har bare ikke fået det her spørgsmål lukket.
Avatar billede olsensweb.dk Ekspert
21. december 2015 - 18:44 #33
svar
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