Semmonen vekotin joka avaa pyydetyn filun ja tutkii sen sisuksia ja tulostaa lähdekoodin. Tulostaa myös linkit ja e-mail osoitteet.
esim: http://www.simo-net.org/putka/lahdekoodintutkija/
tutkija.php
<html> <head> <title>Lähdekoodin tutkija</title> </head> <body> <?php if(!isset($_GET['hak'])){ //jos ei ole annettu GET:iä echo " <h2 style=\"color: #ff0000; margin: 0px;\">Lähdekoodin tutkija</h2> Tässäpä hassu vekotin :) Eli tämä systeemi tutkii antamis tiedoston lähdekoodia ja tulostaa siitä linkit sekä e-mail osoitteet. <br><br> <form action=\"$PHP_SELF\" method=\"GET\"> <b>Tarkka url tiedostosta jonka haluat listata:</b><br><input type=\"text\" name=\"hak\" value=\"http://\" size=\"50\"><br> <input type=\"submit\" value=\"Tutki\"> </form> © 2005 by: ipe "; exit; //Loppu koodin toisto on turhaa. } $hak=$_GET['hak']; //märitetään GET:in mukana tullut $hak ?> <h2 style="color: #ff0000">Lähdekoodi:</h2> <table style="background-color: #efefdc; border: 1px solid #aaaaaa; padding: 10px 10px 10px 10px;" width="100%"> <tr> <td> <pre> <?php $filu=@file($hak) or die ("Tiedoston $hak taulukoiminen epäonnistui."); //listataan filun rivit. Jos ei onnistu, niin annetaan virhe ilmoitus for($i=0;$i<count($filu);$i++){ $teksti=htmlspecialchars($filu[$i], ENT_QUOTES); //estetään html tagit $teksti=preg_replace("/(<a href\=)(.+?)(>)/i", "<a href=\"$2\" target=\"_blank\"><a href=$2></a>", $teksti); //erotellaan linkit koodista. Kaikki mikä alkaa <a href= ajatellaan linkeiksi. if(preg_match("/@/", "$teksti")) $email[] = "$teksti"; //erotellaan e-mail osoitteet. Kaikki merkkijonot missä on @ merkki, arvioidaan e-mail osoitteiksi. Lopuksi listataan e-mail osot taulukkon. if(preg_match("/<a href\=/", "$teksti")) $linkit[] = "$teksti";//listataan kaikki linkit taulukkoon echo "$teksti"; } ?> </pre> </td> </tr> </table> <br><br> <h2 style="color: #ff0000; margin: 0px;">Löydetyt e-mail osoitteet:</h2> <?php echo "<b>[".count($email)." kpl]</b><br>"; for($i=0;$i<count($email);$i++){ echo "{$email[$i]}<br>"; //tulostetaan $email taulukossa olevat e-mail osot. } ?> <br><br> <h2 style="color: #ff0000; margin: 0px;">Löydetyt linkit:</h2> <?php echo "<b>[".count($linkit)." kpl]</b><br>"; for($i=0;$i<count($linkit);$i++){ echo "{$linkit[$i]}<br><br>"; //tulostetaan linkit. } ?> </body> </html>
Eipä toimi täysin ainakaan linkkien tulostamisesa.
Ai ei vai? Mikä mättää?
Edit: ai tarkoititko että tulostaa myös koodin mikä on linkin ympärillä?
Mitenkä ton linkkiprinttaajan pitäs toimia? Ei kai noin? :)
Lähdekoodin tutkija kirjoitti:
Löydetyt e-mail osoitteet:
[1 kpl]
@import url(gecko.css) screen;
Tuossa näköjään vielä vähän viilaamista, kyseessä nimittäin _ei_ ole e-mail-osoite, vaikka @ löytyykin.
Omallakaan servulla se ei löydä linkkejä. Tuolla sinun demolla se löytää jotain, mutta nekin ovat todella ikävästi rikki (www.mbnet.fi). Ja @ merkkiä käytetään kyllä muuhunkin kuin sähköposteihin... Eli viilausta kaipaa.
Toisaalta ehkä tälläinen skripti jonka itse joutuu korjaamaan opettaa enemmän kuin täysin toimiva skripti, joten sikäli tämä vinkki palvelee hyvin oppimistarkoitusta ;)
joo :) pitää tosiaan näköjään vielä vähän korjailla.. oikeestaan tarkotus oli vähän laittaa preg funkkari juttuja koska tänkin vinkin kautta voi jollekkin selvitä, että mitä hyötyy niistä on :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.