w Tornevalls Corner - För ett friare Internet Skip to content

Google!

This is a URL-scanner, that grabs the url from a selected comment on a blog, via direct urls. Using anchors to find the right comment.

Example: You want to see the posted link for this comment.

The command, to find the link for the post is in this case:
GetCommentLink(”http://tmm.tornevall.net/blog/2010/03/14/sa-gor-media-dig-pissed-off-lattast/#comment-2667″)

return(array($getlink)); // Found link successfully – returning link as an array.

The rest is numerics, if we fail – see the source!

OBSERVE

All blogs has their own design. This script does not cover them all.

Sourcecode


<?php

/*
 *    Wordpress CommentLink-Scanner v1.0.1
 *
 *    Requirements:
 *
 *    1: Something to download with. This script uses TorneEngine, where CURL makes all the job
 *       with that. Just make sure you can grab content from urls.
 *
 *    2: The webpage "must" contain a "commentheader", where the poster sent a comment.
 *       Tested live with some wordpress-blogs and all of them returned correct links if
 *       they exist. Just have in mind that the script is a bit dependent on the design
 *       on the blog you are using it, so feel free to change the code so it fits your
 *       needs. I'll try to fix this little issue later...
 *    
 */

/* Failcodes
 *
 * 999 - No anchor.
 * 996 - No, this link seems damaged.
 * 998 - Yes, I found a href, but the link may be damaged
 * 997 - No, there.s no link here
 * 995 - No matchong anchor.
 *
 */

function GetCommentLink($redirlink '')
{
    
// Load TorneEngine
    
global $tornevall;

    // Check if the redirectlink contains an anchor. If not, ignore this!
    
if (preg_match("[#]"$redirlink))
    {
        
// Grab the anchor in link
        
$anchor preg_replace("[(.*?)\#(.*?)]"'$2'$redirlink);
    }
    else
    {
        
//echo "Found no anchor in redirlink...\n";
        
return 999;    // Return "no anchor"
    
}

    // Grab the webpage with TorneEngine where the anchor should be found
    
$d $tornevall->www->get($redirlink);

    // If we got the anchor from user, start find the link...
    
if ($anchor)
    {
        
// Find that anchor on page
        
$startanchorpos stripos(strtolower($d), strtolower($anchor));
        if (
$startanchorpos > -1)
        {
            
// Ok the anchor has been found, let's find the "commentheader" for this post
            
$anchordata substr($d$startanchorpos);
            
$commheader $anchordata;
            
$commheader preg_replace("/(.*?)commentheader(.*?)<\/div>(.*)/si"'$2'$anchordata);
            if (
preg_match("/<a(.*?)href(.*?)>/i"$commheader))
            {
                
// If we found the commentheader, no use a sloppy try to get the link
                
$getlink preg_replace("/(.*?)<a(.*?)href(.*?)>(.*?)<\/a>(.*)/si"'$3'$commheader);

                // Loop the process until we find a delimiter
                
while ($strbrk == false)
                {
                    
$overflowguard++;
                    if (
$overflowguard >= 20) {break;}
                    
$getlinktest substr($getlink01);
                    
$getlink substr($getlink1);
                    
// Find the valid delimiter here
                    
if ($getlinktest == "'" || $getlinktest=='"')
                    {
                        
$strbrk true;
                        break;
                    }
                    
// After 20 characters we may consider the loop as a failure
                
}
                
// Use that delimiter to find the ending one...
                
if ($getlinktest && strpos($getlink$getlinktest) > -1)
                {
                    
$getlink substr($getlink0strpos($getlink$getlinktest));
                }
                else
                {
                    
// if we don't, this lookup has failed. This will probably only
                    // happen if the webdesigner is really crappy and something is very
                    // wrong with the webpage we're watching...
                    
$faillink true;
                }
                if (!
$faillink)
                {
                    
// When we get our link, return it
                    
$linktest explode(" "$getlink);
                    if (
sizeof($linktest) == 1)
                    {
                        
// Return the link, but as an array
                        
return(array($getlink));
                    }
                    else
                    {
                        return 
996;    // Return "no, this link seems damaged"
                    
}
                }
                else
                {
                    return 
998;        // Return "yes, I found a href, but the link may be damaged"
                
}
            }
            else
            {
                return 
997;            // Return "no, there's no link here"
            
}
        }
        else
        {
            return 
995;                // Return "no matchong anchor"
        
}
    }
}

?>


This post is for the guys at vbulletin.org, by request.

First of all, here’s the current source:

http://tmm.tornevall.net/dev/nntpgw-100312.tar

Changes made:

  • admincp/nntp_settings.php
    • Added settings for ”static email” for the from-header. Using this, will set a non-dynamic sender e-mail.
  • gateway.php
    • Added ”support” for console-runs (fix for vBulletin 4.0 that doesn’t like this)
    • ”Debug”-modes: 1 = Activate debug (not used), 2 = Unlock the script if it got stuck (this is a console thing)
    • Added some info into a logfunction to get more verbose info on connection
    • Dupechecker for threads/posts. If the xref/lastpost-value changes due to the nntpserver, this function avoids duplicate posts from the newsserver. This is extremely nice, if the newsserver used in some reason has been reset due to reinstallations, crashes etc (yes, this has happened to me – this is the fix)
    • Last-Insert-ID fixed, an old issue that happens when trying to read a new post from a forum
  • includes/functions_nntp.php
    • Small fixes, including footer changes – in some reason the original footer added to posts, made from a forum disturbed me, so this has been cleaned up so it looks more like a ”real” post on usenet. This fix was something about the signatures, so to speak.
    • Message-ID, References and From manipulated (partially referred to the static-email-setting above)
    • Another first-post-id/last-post-id fix
    • An old issue about attachments fixed here (observer that this is always accepting attachments/thumbnails). It also includes some kind of extension fix. Well, this is a very old fix and one of the first made to the script and my memory is quite blurry in this case… But I’ve never needed to change this back to it’s original state
    • require class_image.php replaced for attachments support. Also this is an old issue, and documented somewhere in the thread at vbulletin.org
  • includes/nntp.php
    • Fix for handling usenet-traffic if the webserver where the script is running, happens to run a peer for the nntp-server (sending MODE READER on connection – if the server is a peer, some servers initially are expecting MODE  STREAM, which the script won’t understand)

This is it I think. Wishes and questions will be answered if possible!

See you at vbulletin.org!


Läs även andra bloggares åsikter om , , , , , , , , , ,

”He wasted both his and my time”. Verkligen… Och sedan fortsatte du på samma sätt – rätt in i svartlistan… Smart!

Idiot.

$loc = preg_replace("/(.*?)Location: (.*?)\n(.*)/s", '$2', preg_replace("[\r]", '', $test));

Rensar allt framför och bakom exempelvis följande text:

Server: Apache
X-Powered-By: PHP/5.3.1
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Location: http://www.tornevall.net/index.php?id=77
Content-Type: text/html

Utresultatet blir:

http://www.tornevall.net/index.php?id=77

Kort och koncist, när de beter sig som om de vore faktaböcker…

tar du dig fram i rusningstid”
Här äter kamelen upp hela pajen”
genomfördes rånet”
Här kastas han ut – för att han inte ville gå ut själv!”
svårt är det för kommunerna att hitta lagliga presenter
var schlagerfinalen
Här blir Christensen straffhjälte – på nytt
gräver man sin grop på tvären”
Här visar aftonbladet hur tröga de är – genom att skriva såna här rubriker”
var idioten född när han skrev den här artikeln”
Här blir vårat kära media dumförklarat”

Och så vidare!
Suck…

Arga tittare kan inte rösta och gråter ut hos Aftonbladet. Så fort något inte funkar, så bölar man – till någon annan. Duktiga lipsillar! Bravo! Äkta svensk patetism!

Det måste ha varit jobbigt att spara in de pengar som det hade kostat om dom hade kommit fram. Själv röstade jag faktiskt också, men kom i efterhand på att jag spärrat min telefon mot betalsamtal. Med andra ord så sparade jag hela FYRA SPÄNN på spektaklet. Vilken tur! Och det borde kanske fler tänka på också, att de kanske glömt att ta bort den spärren från sina telefoner – istället för att sitta och gnälla. Allt som innebär ”jag kommer inte fram” är inte arrangörens fel. Och det är väl inte hela världen heller för den delen, eftersom svenskar ändå inte har omdöme att rösta fram något rätt.

Måns ”Mens” Zelmerlöw hade som vanligt problem med vilken dialekt han skulle prata med… Melodifestivalen hade nog allt man kan klaga på i år. Utom Dolph och Malena Ernman. Där var det inga konstigheter alls.

Nu återstår det väl bara att Anna Bergendahl diskas för sina röda skor, så att hon ersätts med något icke-önskvärt bidrag… Ändå röstade vi alltså fram ett bidrag som Europa inte gillade. ”Igen”. Eller? Näe! Grattis Anna, till vinsten! Och lycka till!

Trots detta så har jag svårt att säga annat än att Melodifestivalen inte längre är vad den borde varit. När pausinslaget, där Dolph spelar huvudrollen (tack för att du gjorde Melodifestivalen sevärd!), är intressantare än själva tävlingen så är det rätt illa. På tidigt 80-90-tal så var Sverige bra på musik – det är vi uppenbarligen inte längre och jag tror att det beror på generationsförändringar, eller nåt sånt. Nu för tiden skall ju allt vara så förbannat märkvärdigt och då får man skylla sig själv att det blir fel, när man tar omdömeslösa beslut. Det var bättre förr. Det bevisades inte minst på deras medley som avslöjade vilken slags musik som fortfarande går hem. Det var dessutom riktigt lyckat att bjuda in norge till det där. Något jag dock inte alls förstår, är att Kicki/Bettan/Lotta fick så GALET mycket scentid, jämfört med alla andra – vilket förvisso kompenserades av att Alexander Rybak avslutade allt riktigt snyggt!

Jag måste även överlämna en FAIL-utmärkelse till Bobby Ljunggren, som svarade på frågan vad han tror om chanserna för Anna i Norge: ”Hur ska vi kunna veta det?”. Ja… Hur skulle ni kunna veta det? Hur oförberedd var han på detta, tro? Mediaträning, någon? :D

Och som vanligt så går snacket bland de förväntansfulla högt överskattade förlorarna: ”Aldrig mer”. Ja, det brukar väl låta så när man inte vinner, eller hur Darin? För vem säger ”aldrig mer melodifestivalen” efter att de har vunnit? Samtidigt är det konstigt att man inte vill vara med, med tanke på den reklam man får som artist genom att medverka. Men det är ju bra – då slipper vi se skiten igen.


Läs även andra bloggares åsikter om , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

NU kan man posta inlägg i forumet! Wohoo!

Men det var egentligen inte det problemet jag syftade på. Ovanstående problem upptäckte jag precis nu……..

För att exkludera ett gäng underforum ur ”Vad är nytt”, dvs ”dagens uppdateradetrådar” så är man tvungen att förregistrera en variabel som man vill ha in i en template. Det förefaller enkelt, men i vBulletin 4.0 har man bestämt sig för att paja både det gamla goda hederliga systemet för variabler OCH hela dokumentationen som verkar vara spridd över två hemsidor – mestadels av användare. Vidare så har man GLÖMT att ta med viktiga detaljer i sina dokumentationer som försvårar utvecklandet BETYDLIGT!

Men en mycket trevlig kille tar upp hur man använder variabler och templates här! Cred till den personen!

Så hur gör man? Jo, om man har tillgång till RÄTT information så blir det MYCKET enkelt:

$excludenew = "373,290,313,200,201,360,362,383,384,385,388,389,392,394,396,393,398,399,400";

$templatevalues['excludenew'] = $excludenew;
vB_Template::preRegister('navbar', $templatevalues);

Nästa problem: Teckenuppsättningen och alla smileys som verkar vara borta…

TorneEngine har fått ytterligare en funktion för att förenkla livet – saker man borde ha tänkt på tidigare… Denna gången handlar det om att snabbt kunna skicka in SQL-frågor i en databas och samtidigt slippa tänka själv. Det sparar åtminstone en del tid och en del kodutrymme.

Exempel:

Parametrar och dess värden lagras i en array. Dessa vill jag snabbt kunna skicka in i en databas, antingen för att modifiera värden, eller för att lägga in helt nya.

$sql[username] = "Pelle";
$sql[password] = "p4ssw0rd123";

Implodefunktionen fixar det galant! Den skall dock användas från en class, så att den inte förstör PHPs befintliga implodefunktion.

$ins = $tornevall->db->implode($sql);
$upd = $tornevall->db->implode($sql, "update");
echo "INSERT INTO test ($ins[0]) VALUES ($ins[1])\n";
echo "UPDATE test SET $upd[0] WHERE userid = 3\n";

Resultatet blir fantastiskt bekvämt enligt nedan!

INSERT INTO test (username, password) VALUES ('Pelle', 'p4ssw0rd123')
UPDATE test SET username = 'Pelle', password = 'p4ssw0rd123' WHERE userid = 3
/*
	Implode columns and their values

	Returned data:

	INPUT TYPE: Insert
	$array[0] - "Column names"
	$array[1] - "Column values"

	INPUT TYPE: Update
	$array[0] - "Columns = '$values'"

	- Tornevall
*/
function implode($sql = array(), $type = "insert")
{
	foreach ($sql as $p => $v)
	{
		$inserts[] = $p;
		$values[] = "'" . $this->injection($v) . "'";
		$updates[] = "$p = '".$this->injection($v)."'";
	}
	if ($type == "insert")
	{
		$ret = array(implode(", ", $inserts), implode(", ", $values));
	}
	else
	{
		$ret = array(implode(", ", $updates));
	}
	return $ret;
}

Hmm..

Juice… Miniflaska… 9 kr…

Hmm…

Red bull.. 18 kr…?!

Hmm…

Vatten!

Anpassad för att fungera med Firefox 3.6

http://tmm.tornevall.net/php/addneditcookies-0.2.1.0.xpi

Inte fel att ha tillgänglig alls!