Autor Zpráva
Andrej.B
Profil
Zdravim,

mam kod, ktory sa pozera, ci existuje PDF v zlozke. Ak hej, urobi mi klikatelny odkaz na stiahnutie.
Zlozka existuje a aj PDF, ale vzdy mi da, ze neexistuje. Nizsie som si dal aj co obsahuju premenne a funguju, ukazu dobru zlozku, ID zakazky,ci koncovku PDF. Doteraz to fungovalo, ze si uzivatel len nahral do zlozky PDF subor z cislom zakazky a automaticky mu to zobrazovalo. 2 roky to normalne fungovalo, teraz nejaky cas nie. Vobec sa neupdatoval PHP 7.3 ci Apache2.2.
Vzdy sa kod vyhodnoti ako if(count($results) == 0) aj ked to PDF tam urcite je. Ako by som si mohol skontroloavt, co je zle.

Dakujem

<?php



    $dir = ''.$environment.'/_docs/testy';
    $ext = '.pdf';
    $search = $_GET['zakazkaid'];
    $results = glob("$dir/*$search*$ext");
  
    if(count($results) == 1) {
        $item = $results[0];
        echo '<strong>Testy - </strong>';
        echo "<a title=\"ukaz certifikat/pdf\" class=\"btn btn-sm btn-outline-success\" href=''".$environment."'/$item'>Stiahnut</a>\r\n";
    }
    if(count($results) == 0) {
       echo "<strong>ziadny Test na stiahnutie<strong><br>"; 
echo $dir;// zobrazi cestu k PDF suborom http://example.com/_docs/testy
echo '<br>';
echo $search;  // zobrazi id zakazky 
echo '<br>';
echo $ext;       // pdf 
    }


?>
juriad
Profil
Zkus si vypsat:
var_dump(realpath($dir));
var_dump(scandir($dir));
var_dump(glob("$dir/*"));

Vypadá to všechno v pořádku?
Andrej.B
Profil
30 var_dump(realpath($dir));
31 var_dump(scandir($dir));
32 var_dump(glob("$dir/*"));
Warning: scandir(http://example.com/_docs/testy): Failed to open directory: not implemented in C:\xampp\htdocs\vhost\example.com\include\testy.inf.php on line 31
Warning: scandir(): (errno 2): No such file or directory in C:\xampp\htdocs\vhost\example.com\include\testy.inf.php on line 31

C:\xampp\htdocs\vhost\example.com\include\testy.inf.php:31:boolean false

C:\xampp\htdocs\vhost\example.com\include\testy.inf.php:32:
array (size=0)
empty


Pokial si dam adresu http://example.com/_docs/testy ,tak mi ukaze vsetky pdf, co su vo vnutri. Kod fungoval posledne 3 roky, nic som neupdatoval. Prave pri kontrole auditora, ktory chcel vidiet jednotlive testy, nam pri vsetkom ukazuje <strong>ziadny Test na stiahnutie<strong>.
Keeehi
Profil
Ty funkce fungují s lokálními adresáři. Tedy místo http://example.com/_docs/testy bys tam měl mít C:\xampp\htdocs\vhost\example.com\_docs\testy

Jelikož by bylo dobré, abys měl relativní adresářovou strukturu stejnou ve všech prostředích, psal bych tu adresu relativně. Tedy místo url bych začal tečkou a pak šel v adresářové struktuře jak by bylo potřeba.
Nebo použít $_SERVER["DOCUMENT_ROOT"] . "_docs/testy" (pokud je document root správně nastaven)
Andrej.B
Profil
zaujimave, ze mi to fungovalo aj predtym.
Dakujem za pomoc, opravene ako $_SERVER["DOCUMENT_ROOT"] . "_docs/testy"
Andrej.B
Profil
Este jeden problem vystanul.

Vsetky testy boli do konca roka 2021 v tvare 6004020.pdf /cislo bolo cislom zakazky/a script v pohode fungoval a vyhladava cely pattern.
Avsak vo firme zmenili vyrobny program od roku 2022 a zakazky zacinaju cislom 1 a vyssie. Co teraz vlastne spravi problem, kedze script najde aj napriklad c. 2 v teste ako 6004020. Je moznost script nejako upravit aby vyhladaval len cisla v celku? Cize napriklad 2 najde len ak je to cislo 2 samostatne a nie v retazci 6004020?
Nemam uz sancu to nejako vo velkom prerabat. Ked som tento system robil, zdalo sa mi, ze je to najjednoduchsie pre uzivatela z kvality len nahravat pdf do adresara.
anonym_
Profil *
Andrej.B:
Zamysli se (nebo otevři dokumentaci), co znamenají ty hvězdičky.
Andrej.B
Profil
anonym:

kukal som do manualu a vobec ma nenapadlo to dat bez hvezdicky :)

Dakujem moc.


Special characters:

* - Matches zero or more characters.
Keeehi
Profil
Pokud takhle znáš celé jméno, je pak zbytečné používat glob a úplně ti bude stačit file_exists
Andrej.B
Profil
Keeehi:
je to stare cca 4 roky, nechce sa mi uz do toho moc zasahovat, uz si nic nepamatam a funguje to dobre.
Teraz by som to spravil asik inak.

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:

0