Advertisement
KENOkamu

suomi24

Mar 12th, 2023 (edited)
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 8.15 KB | None | 0 0
  1. <?php
  2. /*
  3. Esimerkki keskustelun lukemisesta / tallentamisesta julkiselta foorumilta.
  4. Syötä keskusteluketjun osoite, hae viestit ja tallenna vaikka PDF-tiedostoksi.
  5. */
  6. error_reporting(0);
  7. header("Content-Type: text/html; charset=utf-8");
  8. header("Cache-Control: no-cache");
  9. $offset = 60 * 60 * 24 * 1;
  10. $ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
  11. header($ExpStr);
  12. if (session_status() == PHP_SESSION_NONE) { session_start(); }
  13. date_default_timezone_set("Europe/Helsinki");
  14. // Tarvittavat funktiot
  15. function test_input($data) {
  16.     $data = trim($data);
  17.     $data = stripslashes($data);
  18.     $data = htmlspecialchars($data);
  19.     return $data;
  20. }
  21. function get_string_between($string, $start, $end){
  22.     $string = ' ' . $string;
  23.     $ini = strpos($string, $start);
  24.     if ($ini == 0) return '';
  25.     $ini += strlen($start);
  26.     $len = strpos($string, $end, $ini) - $ini;
  27.     return substr($string, $ini, $len);
  28. }
  29. if ($_SERVER["REQUEST_METHOD"] == "POST") {
  30.     if (session_status() != PHP_SESSION_NONE) {
  31.         if (isset($_POST["mesta"]) && $_POST['kertatunnus'] == $_SESSION['kerta']) {
  32.             $url = test_input($_POST["mesta"]);
  33.         }
  34.     } else {
  35.         if (isset($_POST["mesta"])) {
  36.             $url = test_input($_POST["mesta"]);
  37.         }
  38.     }
  39. }
  40. $kerta = mt_rand(1,10000);
  41. if (session_status() != PHP_SESSION_NONE) { $_SESSION['kerta'] = $kerta; }
  42. ?>
  43. <!DOCTYPE HTML>
  44. <html lang="fi">
  45. <head>
  46. <meta charset="UTF-8" />
  47. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  48. <title>S U O M I 2 4</title>
  49. <meta name="apple-mobile-web-app-title" content="S U O M I 2 4" />
  50. <meta name="author" content="Anonymous" />
  51. <style>*{box-sizing:border-box}html{background-color:#F1F1F1;height:101%;font-size:large}body{margin:0;padding:0;width:100%;text-align:center}a{text-decoration:none}a:hover{text-decoration:none}#bos{display:inline-block;width:96%;margin:auto;text-align:center;background-image:linear-gradient(to right,#F1F1F1,#7CFC00,#F1F1F1);padding:10px}#coli{color:#FFF;float:right}#coli:hover{color:#FFF}#wrapper{width:98%}#wrapper>div{display:inline-block;width:96%;margin:auto;text-align:left}h3{margin-left:40px;text-align:left}input[type=submit]{font-size:16px;background-color:#7EC87E;color:#FFF;border-radius:5px;padding:2px 10px}input[type=submit]:hover{background-color:#449d44;border-color:#398439;cursor:pointer;box-shadow:0 12px 16px 0 rgba(0,0,0,.24),0 17px 50px 0 rgba(0,0,0,.19)}input[type=submit]:focus{outline:none}input[type=text]{width:450px;padding:5px}.box{border:solid 1px #00F;background-color:#00F;color:#FFF;padding:15px;font-size:larger;word-wrap:break-word}.boxi{border:dashed 1px #00F;border-left:solid 5px #00F;background-color:#FFF;color:#300;padding:15px;word-wrap:break-word}.boxi2{border:dashed 1px #00F;border-left:solid 25px #00F;background-color:#FFF;color:#300;padding:15px;word-wrap:break-word}.boxi3{border:dashed 1px #00F;border-left:solid 45px #00F;background-color:#FFF;color:#300;padding:15px;word-wrap:break-word}.boxi4{border:dashed 1px #00F;border-left:solid 65px #00F;background-color:#FFF;color:#300;padding:15px;word-wrap:break-word}.hakunappula{display:inline-block;text-decoration:none;font-weight:400;color:#FFF;background-color:#3369FF;text-align:center}.hakunappula:hover{background-color:#0034C2;cursor:pointer}.puna{color:#F00}@media print{.noPrint{display:none}}</style>
  52. </head><body>
  53. <div id="bos" class="noPrint">
  54. <form id="lmk<?php echo $kerta; ?>" method="post" autocomplete="off" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
  55. <input type="text" id="mesta" name="mesta" placeholder="https://keskustelu.suomi24.fi/" onfocus="this.placeholder=''" required="required" maxlength="100" value="" />&nbsp;&nbsp;
  56. <input type="hidden" value="<?php echo $kerta; ?>" name="kertatunnus" />
  57. <input type="submit" name="osoite" id="osoite" class="hakunappula" value="Hae osoitteesta" />
  58. </form></div>
  59. <?php
  60. if (isset($url)) {
  61.     echo "<div id='wrapper'>";
  62.     if(substr($url, 0, 29) != "https://keskustelu.suomi24.fi"){ echo "<p class='puna'>Haetaan vain suomi24 -sivuston keskusteluja!</p><p>esim. https://keskustelu.suomi24.fi/t/17691833/kehita-eteenpain</p>"; die(); }
  63.     $data = file_get_contents($url);
  64.     $start = '[{"@context":"http://schema.org","@type":"WebPage",';
  65.     $end = ']}]';
  66.     $parsed = '[{"@context":"http://schema.org","@type":"WebPage",';
  67.     $parsed .= get_string_between($data, $start, $end);
  68.     $parsed .= $end;
  69.     // Korjataan oudoimmat plus-merkkien esiintymät aineistossa
  70.     //if (substr_count($parsed,"+") > 100) { $parsed = str_replace("+"," ",$parsed); }
  71.     $tulos = array();
  72.     $tulos = json_decode($parsed, true);
  73.     echo "<div class='box'><b><span id='ots'>".$url."</span></b><a id='coli' href='#' title='Kopioi url uudelleen hakukenttään' onclick='CopyToClipboard(\"ots\");return false;'>Kopioi url</a></div>";
  74.     if (isset($tulos[3])) {
  75.         echo "<h3>Aloittaja: ".$tulos[3]['author']['name']." ~ ".date("d.m.Y \k\l\o H:i:s",strtotime($tulos[3]['dateCreated']))."</h3>";
  76.         echo "<div class='boxi'>".nl2br(stripslashes($tulos[3]['text']))."</div>";
  77.         $x = 0;
  78.         while (isset($tulos[3]['comment'][$x])) {
  79.             echo "<h3>".$tulos[3]['comment'][$x]['author']['name']." ~ ".date("d.m.Y \k\l\o H:i:s",strtotime($tulos[3]['comment'][$x]['dateCreated']))."</h3>";
  80.             echo "<div class='boxi'>".nl2br(stripslashes($tulos[3]['comment'][$x]['text']))."</div>";
  81.             $xx = 0;
  82.             while (isset($tulos[3]['comment'][$x]['comment'][$xx])) {
  83.                 echo "<h3>".$tulos[3]['comment'][$x]['comment'][$xx]['author']['name']." ~ ".date("d.m.Y \k\l\o H:i:s",strtotime($tulos[3]['comment'][$x]['comment'][$xx]['dateCreated']))."</h3>";
  84.                 echo "<div class='boxi2'>".nl2br(stripslashes($tulos[3]['comment'][$x]['comment'][$xx]['text']))."</div>";
  85.                 $xxx = 0;
  86.                 while (isset($tulos[3]['comment'][$x]['comment'][$xx]['comment'][$xxx])) {
  87.                     echo "<h3>".$tulos[3]['comment'][$x]['comment'][$xx]['comment'][$xxx]['author']['name']." ~ ".date("d.m.Y \k\l\o H:i:s",strtotime($tulos[3]['comment'][$x]['comment'][$xx]['comment'][$xxx]['dateCreated']))."</h3>";
  88.                     echo "<div class='boxi3'>".nl2br(stripslashes($tulos[3]['comment'][$x]['comment'][$xx]['comment'][$xxx]['text']))."</div>";
  89.                     $xxxx = 0;
  90.                     while (isset($tulos[3]['comment'][$x]['comment'][$xx]['comment'][$xxx]['comment'][$xxxx])) {
  91.                         echo "<h3>".$tulos[3]['comment'][$x]['comment'][$xx]['comment'][$xxx]['comment'][$xxxx]['author']['name']." ~ ".date("d.m.Y \k\l\o H:i:s",strtotime($tulos[3]['comment'][$x]['comment'][$xx]['comment'][$xxx]['comment'][$xxxx]['dateCreated']))."</h3>";
  92.                         echo "<div class='boxi4'>".nl2br(stripslashes($tulos[3]['comment'][$x]['comment'][$xx]['comment'][$xxx]['comment'][$xxxx]['text']))."</div>";
  93.                         $xxxx++;
  94.                     }
  95.                     $xxx++;
  96.                 }
  97.                 $xx++;
  98.             }
  99.             $x++;
  100.         }
  101.     } else {
  102.         echo "<div class='boxi'>Ei dataa saatavilla!</div>";
  103.     }
  104.     echo "<br /><br /></div>";
  105. }
  106. // Siivouspäivä
  107. if (isset($data)) { unset($data); }
  108. if (isset($end)) { unset($end); }
  109. if (isset($parsed)) { unset($parsed); }
  110. if (isset($start)) { unset($start); }
  111. if (isset($tulos)) { unset($tulos); }
  112. if (isset($url)) { unset($url); }
  113. if (isset($x)) { unset($x); }
  114. if (isset($xx)) { unset($xx); }
  115. if (isset($xxx)) { unset($xxx); }
  116. if (isset($xxxx)) { unset($xxxx); }
  117. ?>
  118. <script>function CopyToClipboard(id){var r=document.createRange();r.selectNode(document.getElementById(id));window.getSelection().removeAllRanges();window.getSelection().addRange(r);document.execCommand('copy');window.getSelection().removeAllRanges();document.getElementById("coli").style.visibility='hidden';var urli = document.getElementById("ots").innerText;document.getElementById("mesta").value=urli;}if(window.history.replaceState){window.history.replaceState(null, null, window.location.href);}</script>
  119. <noscript>HUOM! Selaimesi ei tue JavaScriptiä, joten sivusto ei toimi täysin suunnitellusti.</noscript>
  120. </body></html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement