Diskuze: Upload obrázků/souborů -> složka tmp
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 14 zpráv z 14.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Vytvořil jsem z toho nudli a funguje to. Za jak dlouho se smaže soubor ze složky tmp? Já jen že po nahrátí souboru tam stejně nic není a ani v době nahrávání jsem nic nedokázal zpozorovat.
Zase nějaký šašek co umí jen dávat mínusy? Tak hlavně že vím proč,
předpokládám že to neví ani sám dotyčný a nebo se bojí že jeho
odpověď by byla možná ještě větší blbost. Tak hodně štěstí
! Zřejmě nějaký kid.
Zřejmě si ho dostal, protože neumíš položit otázku a potom dáváš otázky na který ti nikdo krom tebe odpovědět nedokáže.
Pakliže to tak je, tak bez komentáře to nezjistím. Na víc si myslím že
popis obsahuje vše co je třeba pro toho kdo ví o co se jedná. To že někdo
otázce nerozumí neznamená hned, že je špatně položená
A nevím co bych na popisu měl
upravit, což bych klidně rád.
Možná by mi stačilo jen poradit, jak přesunu input typu "file" do dalšího formuláře.
Snažím se používat MVC Architekturu.
Mám 3 formuláře, ale stačí se bavit o 2 posledních.
(Jsou to jen pohledy pro malou představu)
1. (zadání inzerce)
http://pastebin.com/WSeFd7Mz
2. (údaje k editaci)
http://pastebin.com/5H5Nivf8
Poslední formulář tlačítkem "Dokončit" Vše nahraje tam kam má. Všechno včetně kontroly atp funguje perfektně. Jenže já potřebuji vložit obrázek ve formuláří "1. (zadání inzerce)" ale uložit fotografie až v Dokončení.
Soubor v proměnné $_FILES je pouze pole, tudíž pokud si ho uložíš do COOKIES (popřípadě SESSION), můžeš proměnnou použít v dalších souborech.
Ano, do SESSION jsem to uložil, ale jakmile se snažím vyvolat movie_uploaded_file() nebo copy() tak to již tmp_name nedokáže přesunout, protože neexistuje.
Po odeslání formuláře udělám toto:
$_SESSION['obrazky'] = $_FILES['obrazky'];
Pakliže z toho vytvořím pole, mohu to pak volat např. i takto:
$_SESSION['obrazky'] ['tmp_name']['0'] ...
$_SESSION['obrazky'] ['name']['0'] ...
$_SESSION['obrazky'] ['size']['0'] ..
Každopádně když si to vypíšu vše je v pohodě...tmp_name i name i size to vypíše, ale při zpracování to již nemůže v druhém formuláři najít soubor i když jméno znám.
Inspiroval jsem se:
http://tutorialy.vytvorweb.cz/…souboru.html
1. Po zpracování formmuláře udělám tedy toto:
$_SESSION['obrazky'] = $_FILES['obrazky'];
2. Teoreticky by mělo stačit dle uvedeného "návodu" upravit jenom
$soubor = ($_FILES["soubor"]["tmp_name"]);
$soubor_name = ($_FILES["soubor"]["name"]);
$soubor_size = ($_FILES["soubor"]["size"]/1024)/1024;
Na místo toho napsat už toto: (aktuálně vkládám jen 1 fotku)
$soubor = ($_SESSION["obrazky"]["tmp_name"]);
$soubor_name = ($_SESSION["obrazky"]["name"]);
$soubor_size = ($_SESSION["obrazky"]["size"]/1024)/1024;
Jenže $soubor ... neboli $_SESSION["obrazky"]["tmp_name"] již nemůže nalézt soubor s daným názvem.
Nenašel jsem řešení, které by bylo nějak elegantní (ledaže bys celý formulář dal na jedinou stránku rozdělenou jQuery), ale mohl by sis vytvořit vlastní dočasný soubor. Místo automaticky vytvořeného pak budeš jen přesouvat (a přejmenovávat) dočasný soubor, nebo ho smažeš. Raději si ale počkej na jiné odpovědi, nejsem si jistý, jak bys na tom byl s rychlostí.
Jako jediné řešení uložit dočasně soubor/soubory jinam a pak přesunout mě napadlo taktéž, ale pro výsledek je to spíše nereálné. Když dotyčný nedokončí inzerci, tak soubor bude vyset a nedokážu si představit jak bych to promazával, tak abych náhodou neovlivnil někoho kdo tam zrovna taky něco vkládá a bez dokončení nemám prakticky identifikaci o dotyčném a nedokážu pak řádně s daty manipulovat.
Veškerá data se po celou dobu ukládají do SESSION a pak se zpracují.Rozdělené to mám hlavně kvůli přehlednosti pro uživatele.
Napadlo mě při psaní:
Leda že bych na místo SESSION updatoval MySQL po každé části formuláře.
Tím pádem bych věděl ihned o koho se jedná, dokázal zapsat soubory k
danému uživateli a když to nedokončí, tak by se to automaticky po nějakém
čase smazalo. (To zní docela dobře)
Každopádně děkuji za snahu 
Třeba je nějaké jiné řešení bez toho, aniž bych celou inzerci
musel předělávat.
http://stackoverflow.com/…-php-session
The $_FILES array only holds information about the file that has been uploaded in this request. If you do not save that file elsewhere within the same request, it will be removed by PHP at the end of the request.
Jednoduse receno, zpusob, kterym se snazis vec vyresit, nefunguje a fungovat nebude.
Proč výpis?
Potřebuji přenést $_FILES['obrazky'] z jednoho formuláře na druhý a jakmile se formulář zpracuje, tak $_FILES['obrazky'] je již prázdný, takže jediné řešení je to někam uložit. Aktuálně uložím informace o souboru do SESSION, ale nikoliv samotný soubor a to je ten problém. Potřebuji soubory uložit až po dokončení celého procesu. V opačném případě by se mohlo stát, že 10x uživatel zopakuje zápis formuláře, protože u toho třeba vařil, nebo dělal něco jiného a tak by se nahrávali fotografie, které by nikam nepatřili. Proto to chci hezky uložit až po úplném dokončení spolu se zápisem do MySQL.
Možná ale vidím řešení v tom to ukládat po celou dobu do MySQL jen mezi pamět do SESSION,.
I to je možné, že způsob je neřešitelný a musím jinak. Jestli to tak
je což asi je, tak máš řešení 
Řešení je tedy, že řešení tímto způsobem není.
Děkuji všem za snahu i těm blbcům co se neumí vyjádřit a jen
dislajkujou, ať se jim hlavně spokojeně spí 
Zobrazeno 14 zpráv z 14.