Autor Zpráva
Demoniak
Profil
Ahoj, babrám se v takové blbosti.

uploaduju fotky a pojmenovávám je pomocí funkce rand();. Všechno funguje až do doby, než začnu kontrolovat, zda-li soubor již neexistuje a v tom případě chci funkci spustit znovu aby nastavila nová náhodná čísla.

Funkce:
function nahodne_cislo($pocet,$slozka){
    $nahodnecislo = "";
    for ($i = 1; $i <= $pocet; $i++){
        $cislo = rand(0, 5);
        $nahodnecislo = $nahodnecislo . $cislo;

    } if (!is_file($slozka.$nahodnecislo.".jpg")){
        return $nahodnecislo;

    }else{
        nahodne_cislo($pocet,$slozka);
    }
}

Upload fotek:
if (isset($_POST['ok'])){
        try{
            include "simpleimage.php";
            $slozka = "fotky/novinky/";
            $nazev = nahodne_cislo(1,$slozka);
            $fotka = $nazev.".jpg";
            $img = new abeautifulsite\SimpleImage();
            $img -> load($_FILES["fotka"]["tmp_name"]) -> save($slozka . $fotka);
            $img -> load($_FILES["fotka"]["tmp_name"]) -> save($slozka ."thumb_". $fotka);
            echo "Fotka ". $_FILES["fotka"]["name"] . " byla nahrána do ".$slozka.$nazev.".jpg";

        }
        catch(Exception $e) {
            echo 'Error: ' . $e->getMessage();
        }
    }

Všechno funguje, jen se někdy fotky neukládají s názvem (fotka se uloží jako ".jpg" místo např. "0.jpg").

Poradíte mi prosím kde by mohla být chyba?
Alphard
Profil
Při volání rekurze tam chybí return.
Demoniak
Profil
Výborně, myslel jsem si, že to bude prkotina, ale tohle by mě nenapadlo. Díky :)
Keeehi
Profil
Demoniak:
Nebo nevymýšlej kolo a použij pro to funkci přímo určenou. php.net/manual/en/function.tempnam.php

Nebo soubory pojmenovávej hashem jejich obsahu. Tam teoretická možnost kolize existuje ale v drtivé většině případů je zanedbatelná.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: