Minden további leírás helyett ideollózom a mylike-dbi.cgi
azon részeit, amelyek a like-ok számának megjelenítéséért felelősek, illetve amelyek az első bejegyzés létrehozására alkalmasak.
#!/usr/bin/perl use strict; use warnings; use DBI; use Apache2::RequestRec (); use Apache2::RequestUtil (); use CGI; use CGI::Cookie; use URI::Encode; my $r = Apache2::RequestUtil->request; my $req = CGI->new($r); my $like = $req->param('like'); #print $like; my $http_referer = $ENV{'HTTP_REFERER'}; my $dbh = DBI->connect('DBI:mysql:mylike', 'mylike', 'mylike1' ) || die "Could not connect to database: $DBI::errstr"; if ($http_referer) { # LIKE BUTTON CODE WAS HERE ################## my $sth = $dbh->prepare('SELECT id FROM mylike WHERE approved = 1 and referer = ?'); $sth->execute($http_referer); my @result = $sth->fetchrow_array(); my $len = @result; #print "numof result $len\n"; $sth->finish(); if ($len == 0) { # insert data into the links table my $sql = "INSERT INTO mylike (referer) VALUES(?)"; my $stmt = $dbh->prepare($sql); # execute the query if($stmt->execute($http_referer)) { # ok #print "Mylike $http_referer inserted successfully"; } $stmt->finish(); } $sth = $dbh->prepare('SELECT counter FROM mylike WHERE approved = 1 and referer = ?'); $sth->execute($http_referer); @result = $sth->fetchrow_array(); print "$result[0] like(s)<br>\n"; # LIKE BUTTON CODE WAS HERE ################## $sth->finish(); } else { # test my $results = $dbh->selectall_hashref('SELECT * FROM mylike', 'id'); foreach my $id (keys %$results) { print "!!TEST!! ID $id: referer is $results->{$id}->{'referer'}, counter is $results->{$id}->{'counter'}\n"; } } $dbh->disconnect();
A kód magyarázata.
Kivesszük a fejlécből a HTTP_REFERER-t. Ha ez definiált, akkor “éles” működés, ha nem akkor tesztüzemmód. Tesztüzemben az alábbi kimenetet kapjuk.

Látható, hogy két REFERER szerepel az adatbázisunkban. Ezeket sorolja fel tesztüzemmódban a script.
Éles üzemnél megvizsgálja a programunk, hogy létezik-e adatbázis-bejegyzés adott REFERER-rel. Ha még nincs, létrehoz egyet 0-ás like-oltsággal. 🙂 Ezután egy sima print
utasítással kijelzi a kedvelések számát.
A következő részben megnézhetjük magának a “like” gombnak is a működését és a mögötte álló programkódot is. Ebben a forrásban ezt a
# LIKE BUTTON CODE WAS HERE ##################
részek jelölik.
A SELECT-jeinkben az approved = 1
az adminisztrátori funkció további lehetőségét hordozza magában. Tehát le lehet “tiltani” egy-egy beágyazást.
Látható a kód elején a use
kulcsszavaknál, hogy használunk egynéhány modult. 🙂 Szinte gyerekjáték a Perl programozás.
Megjegyzem, hogy ez a like megvalósítás különböző webcímű (URI) weboldalanként ad lehetőséget like-olásra. Egy webcímen belül több like nem lehet. Nem a tökély a cél, csupán a megvalósíthatóság bemutatása.