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.