Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Lähdekoodin tutkija

ipe [16.03.2005 21:21:32]

#

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>

tsuriga [16.03.2005 23:41:00]

#

Eipä toimi täysin ainakaan linkkien tulostamisesa.

ipe [17.03.2005 08:50:29]

#

Ai ei vai? Mikä mättää?

Edit: ai tarkoititko että tulostaa myös koodin mikä on linkin ympärillä?

sooda [19.03.2005 16:26:43]

#

Mitenkä ton linkkiprinttaajan pitäs toimia? Ei kai noin? :)

Juice [19.03.2005 19:08:33]

#

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.

kayttaja-2791 [19.03.2005 20:20:36]

#

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 ;)

ipe [19.03.2005 20:59:20]

#

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 :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta