Shellsec

Fuld version: PHP læs fra json
Du ser lige nu en skrabet udgave af vores indhold. Se den fulde version med ordentlig formatering.
Sider: 1 2
Denne kode:
Kode:
<?php
    $json = file_get_contents("http://ailicis.cc/json.php");
    $obj = json_decode($json);
    $res = array();

    foreach ($obj->data as $o) {
        if (!isset($o->story) || empty($o->story)) {
            $res[] = $o;
        }
    }

    for ($i = 0; $i < min(5, count($res)); $i++) {
        echo $res[$i]->id . "\n";
    }

?>
...giver følgende output:
Kode:
$ php test.php
168349296705478_199923703548037
168349296705478_193108830896191
168349296705478_189380464602361
168349296705478_187050484835359
168349296705478_182074215332986
(24-01-2014, 22:08)BlimBlamBlar Skrev: [ -> ]Denne kode:
Kode:
<?php
    $json = file_get_contents("http://ailicis.cc/json.php");
    $obj = json_decode($json);
    $res = array();

    foreach ($obj->data as $o) {
        if (!isset($o->story) || empty($o->story)) {
            $res[] = $o;
        }
    }

    for ($i = 0; $i < min(5, count($res)); $i++) {
        echo $res[$i]->id . "\n";
    }

?>
...giver følgende output:
Kode:
$ php test.php
168349296705478_199923703548037
168349296705478_193108830896191
168349296705478_189380464602361
168349296705478_187050484835359
168349296705478_182074215332986

Jeg håber ikke at det gør noget at jeg leger lidt med det ^^
<?php
$token = " :) ";
$page = "Ailicis.cc";
$json = file_get_contents("https://graph.facebook.com/".$page."/posts?access_token=".$token);
$object = json_decode($json);
$res = array();
$i = 0;

while(count($res) < min(5, count($object->data)){
if(!isset($object->data[$i])) array_push($res, $object->data[$i]);
$i++;
}
?>
tak BlimBlamBlar & Doctor Blue det virker nu :)

(24-01-2014, 22:53)Doctor Blue Skrev: [ -> ]Jeg håber ikke at det gør noget at jeg leger lidt med det ^^

kan ikke se hvad du har lavet :P ?
Så lad os da endelig lege videre Smile
<?php
$json = file_get_contents("http://ailicis.cc/json.php");
$obj = json_decode($json);
$res = array();

while (count($res) < 5 && !empty($obj->data)) {
$o = array_pop($obj->data);
if (!isset($o->story) || empty($o->story)) {
$res[] = $o;
}
}

foreach ($res as $o) {
echo $o->id . "\n";
}

?>
(24-01-2014, 22:58)ailicis Skrev: [ -> ]tak BlimBlamBlar & Doctor Blue det virker nu :)


kan ikke se hvad du har lavet :P ?

Det var bare en kortere udgave af den samme løsning :)

@BlimBlamBlar det er jo bare længere? :D
Man kan i øvrigt godt nøjes med en af !isset() eller empty(), forskellen i funktion er meget meget lille (empty siger at "" er en tom variabel, men isset returnerer true, selvom isset ville returnere false på en variabel med værdien NULL). Empty er nok bedre end isset i den her sammenhæng.
Jeg bruger isset for at undgå warnings...refererer du til en usat member, så vil PHP give advarsler medmindre du har slået dem fra.
sådan her ser min kode ud nu :)
- forstår ikke helt det med isset ?

<?php

//facebook token
$token = " :P ";
//facebook site name
$page = "Ailicis.cc";

//replace this
$replace_this = array("Ailicis.cc shared a photo.");
//replace to
$replace_to = array("");

//load json url
$json = file_get_contents("https://graph.facebook.com/".$page."/posts?access_token=".$token);
//replace words
$json = str_replace($replace_this, $replace_to, $json);

$obj = json_decode($json);
$res = array();

foreach ($obj->data as $o) {
if (!isset($o->story) || empty($o->story)) {
$res[] = $o;
}
}

// start and stop post
for ($i = 0; $i < min(5, count($res)); $i++) {

//load real id number
$smallid = substr($res[$i]->id, 16);

echo "<div id='fb-root'></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = '//connect.facebook.net/da_DK/all.js#xfbml=1'; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script>";
echo "<div class='fb-post' data-href='https://www.facebook.com/".$page."/posts/".$smallid."' data-width='466'><div class='fb-xfbml-parse-ignore'><a href='https://www.facebook.com/Ailicis.cc/posts/.".$smallid."'></a>Loading</div></div>";


}

?>
(24-01-2014, 23:22)BlimBlamBlar Skrev: [ -> ]Jeg bruger isset for at undgå warnings...refererer du til en usat member, så vil PHP give advarsler medmindre du har slået dem fra.

Ikke siden PHP 5.4 :)
http://dk1.php.net/manual/en/function.empty.php
Citer:No warning is generated if the variable does not exist. That means empty() is essentially the concise equivalent to !isset($var) || $var == false.
(24-01-2014, 23:47)ailicis Skrev: [ -> ]sådan her ser min kode ud nu :)
- forstår ikke helt det med isset ?

isset tjekker om variablen eksisterer. Hvis du prøver at læse eller sammenligne med en variabel der ikke er defineret vil du få en notice. Desuden vil den evaluere til 0, og det kan godt give lidt problemer (Udover det faktum at det fylder din fejllog).
Sider: 1 2