Hirdetés

Keresés

Új hozzászólás Aktív témák

  • cucka

    addikt

    válasz RootRulez #10239 üzenetére

    Ez a kód lényegében totál hülyeség, mint ha olyan ember írta volna, aki most tanulta pascal-ban a filekezelést. Érdemes lenne megértened, hogy mit csinál a kód, mert abból nem fog semmi jól kisülni, ha kriptikus kódsorokat másolgatsz abban a reményben, hogy hátha működni fog.

    A kérdésedre a válasz a korábbi kódot felhasználva:

    function isUrl($val){ return $val != ''; }
    //a file sorait beolvasom a $linkek tömbbe
    $linkek = array_filter(file("linkek.txt"), 'isUrl');
    //véletlenszerű kulcs kiválasztása a linkek tömbből
    $tkey = mt_rand(0, count($linkek)-1);
    //kiválasztok 1 elemet a tömbből a $link változóba
    $link = $linkek[$tkey];
    //törlöm a tömbből a kiválasztott elemet
    unset($linkek, $tkey);
    //ha elfogytak a file sorai, akkor felviszem az új elemet a $linkek tömbbe
    if (count($linkek)==0){
    $linkek[0] = 'előre megadott szöveg';
    }
    //a $linkek tömb tartalmát kiírom a fileba
    file_put_contents("linkek.txt", implode("\n", $linkek);

    Ahogy látod, a kód elején beolvasom a file tartalmát a végén meg kiírom, az összes művelet a $linkek tömbben történik. A kód nem kezeli le azt az esetet, ha az elején üres a file, továbbá egy idő után, ha elfogynak a linkek, mindig ugyanazt a szöveget fogja beírni a fileba majd kiolvasni, szóval gondold át, hogy tényleg ezt akarod-e? A kód futása után a $link változóban éred el a kiválasztott sor tartalmát, pl. beleírhatod egy html <a> tag-be.

    (#10240) PazsitZ
    Az alap problémában nem szerializált formában van a fileban az adat, továbbá kérdéses, hogy mennyire segíti a megoldás megértését a kódod nagy részét kitevő zaj (kiírások, $_GET feldolgozás, stb)

  • PazsitZ

    addikt

    válasz RootRulez #10239 üzenetére

    Ilyen esetben én akkor már tömböt használnék:

    $filename = dirname(__FILE__) . '/links.txt';

    if (isset($_GET['add']) && !empty($_GET['link'])) {
    if (file_exists($filename)) {
    $links = unserialize(file_get_contents($filename));
    } else {
    $links = array();
    }

    echo 'put: ' . $_GET['link'];

    $links[] = $_GET['link'];

    file_put_contents($filename, serialize($links));

    } else if (isset($_GET['get'])) {
    $links = unserialize(file_get_contents($filename));
    if (count($links)>0) {
    $key = array_rand($links);
    $link = $links[$key];
    unset($links[$key]);

    echo "<a href=\"{$link}\">{$link}</a>";

    file_put_contents($filename, serialize($links));
    } else {
    echo 'nincs link';
    }
    }

    Hozzáadhatsz: link.php?add&link=http://prohardver.hu
    Kiolvasás és törlés: link.php?get

Új hozzászólás Aktív témák