Avatar
samo007
Redaktor
Avatar
samo007:

Ahojte, existuje nejaký hmtl tag na ukladanie textových súborov? (Ak totiž kliknem na odkaz nieco.ini, tak mi to neuloží, ale zobrazí priamo v prehliadači)

 
Odpovědět 29.9.2012 22:15
Avatar
matesax
Redaktor
Avatar
Odpovídá na samo007
matesax:

Uložit se to dá - Ctrl + S - po otevření / po kliknutí pravým na odkaz - Uložit cíl jako

Editováno 29.9.2012 22:35
 
Nahoru Odpovědět 29.9.2012 22:34
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

To se dělá nastavením v .htaccess - často se to obchází přes PHP.

Nahoru Odpovědět 29.9.2012 22:35
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
user
Redaktor
Avatar
Odpovídá na samo007
user:

Myslím, že to spočívá v přidání několika hlaviček, před stahovaný soubor...
Něco ve stylu:

function download($path)
{

      header("Content-Description: File Transfer");
      header("Content-Type: application/force-download");
      header("Content-Disposition: attachment; filename=\"$path\"");

      readfile ($path);
}

snad to mám dobře, strašně dlouho jsem to nepotřeboval...
ps.: Možná existuje elegantnější řešení... ,nevím
 
Nahoru Odpovědět 29.9.2012 22:35
Avatar
user
Redaktor
Avatar
user:

aha, no vidiš :) , další varianta...

 
Nahoru Odpovědět 29.9.2012 22:37
Avatar
samo007
Redaktor
Avatar
Odpovídá na matesax
samo007:

Áno, to viem, ale ja chcem odkaz na stiahnutie dať do stránky (aby netrvalo využívať to, čo si napísal

 
Nahoru Odpovědět 29.9.2012 22:40
Avatar
samo007
Redaktor
Avatar
Odpovídá na Kit
samo007:

Mohol by si to upresniť?

 
Nahoru Odpovědět 29.9.2012 22:40
Avatar
samo007
Redaktor
Avatar
Odpovídá na user
samo007:

Prepáč, ale s php veľmi neviem pracovať. Ako teda zadám cestu k súboru?

 
Nahoru Odpovědět 29.9.2012 22:42
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

Už to sem poslal user. Jenom doplním, že proměnná $path v "Content-Disposition" a "readfile" může být pokaždé jiná. Můžu tak nabídnout soubor pod jiným názvem, než jak ho mám na disku. Případně na disku vůbec nemusí existovat, můžu ho třeba vytáhnout jako záznam z databáze.

S tím .htaccess se mi to nechce hledat. Jen se u souborů podle masky změní MIME. Má to smysl, pokud takových souborů je víc.

Už jsem to našel:

<FilesMatch "\.(ini|pdf)$"
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</FilesMatch>
Editováno 29.9.2012 22:52
Nahoru Odpovědět 29.9.2012 22:49
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
user
Redaktor
Avatar
Odpovídá na samo007
user:

v odkazu, místo cesty k souboru uvedeš script, který cestu zpracuje... cestu souboru předáš fci jako parametr...

 
Nahoru Odpovědět 29.9.2012 23:00
Avatar
samo007
Redaktor
Avatar
Odpovídá na user
samo007:

Ok, pozriem sa na to zajtra.

 
Nahoru Odpovědět 29.9.2012 23:05
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na samo007
David Čápka:

Myslím, že samo chce něco jiného, kód výše vyvolá stažení. Můžeš si v PHP zavolat něco jako

file_get_contents($cesta_k_souboru);

Výsledkem je načtení obsahu souboru, který stačí vyechovat. Možná by to šlo fcí readfile, co to rovnou vypíše. Každopádně pozor na parametr funkce, nemělo by se stát, aby ho mohl zadat uživatel, je to nebezpečné.

Editováno 30.9.2012 8:36
Nahoru Odpovědět 30.9.2012 8:34
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
samo007
Redaktor
Avatar
Odpovídá na David Čápka
samo007:

Ďakujem, ale ja som mal namysli niečo ako mi poslal user :)

 
Nahoru Odpovědět 30.9.2012 9:25
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Ještě před funkci readfile() musíš poslat ty 3 hlavičky, jinak se ten soubor přímo zobrazí v prohlížeči a to samo007 nechce.

Ohledně bezpečnosti souhlasím. Je nepřípustné, aby byl přímo použit parametr od uživatele. Sám jsem to v jednom projektu tak potřeboval a musel jsem si dát dost velký pozor na to, aby uživatel nelezl tam kam nemá. Daleko bezpečnější je umístit obsah souboru do databáze. Zejména pokud uživatel takové soubory může i nahrávat.

Nahoru Odpovědět 30.9.2012 9:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět 30.9.2012 9:29
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
samo007
Redaktor
Avatar
Odpovídá na Kit
samo007:

Len keby som vedel s tými databázami pracovať :/ Je to dosť zložité, naučiť sa s nimi pracovať. Teda aspoň pre mňa :)

 
Nahoru Odpovědět 30.9.2012 9:50
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

Už jsem vyzkoušel 11 různých databází. Každá má své pro i proti. Některé z nich mají velmi jednoduché ovládání a dá se s nimi pracovat jako s polem.

Nahoru Odpovědět 30.9.2012 10:02
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Redaktor
Avatar
Odpovídá na Kit
samo007:

Vedel by si mi ich teda poradiť?

S čím by si mi odporučil začať?

 
Nahoru Odpovědět 30.9.2012 14:25
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

Jenže nevím, k jakému účelu to potřebuješ. Poradím ti databázi vhodnou na krátké texty a ty do ní začneš strkat video. Nebo naopak.

Z SQL databází se hodí MySQL, PostgreSQL a SQLite, ale každá je dobrá v něčem jiném. Na webové texty je asi nejlepší SQLite. Na silnou aplikační logiku a komplikované datové struktury PostgreSQL. MySQL je takový univerzál, který je někde mezi.

Z NoSQL mohu doporučit DB4 a GDBM kvůli extrémnímu výkonu při čtení, ale pro častý zápis se nehodí. Jedna z nich je k dispozici na skoro každém hostingu.

Pro velmi častý zápis se mi osvědčil Redis. Jeho unikátní datové struktury jsem v jiných databázích nenašel. Podmínkou však je, že se celá databáze vejde do RAM. Například na webové hry se hodí podstatně lépe, než velmi často používaná MySQL.

S čím začít? S jazykem SQL. Stáhni si SQLite (je to jen jeden soubor, neinstaluje se) a spusť si ho. Na YouTube najdeš k němu videotutoriál. Za 2 hodiny se naučíš vše podstatné, včetně joinů, triggerů a transakcí.

Nahoru Odpovědět 30.9.2012 14:52
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na samo007
David Čápka:

Já bych ti poradil nainstalovat XAMPP, vše se ti samo nakonfiguruje, potom si můžeš hrát v PHPMyAdmin, je to takové hezky klikací a dá se tam psát i SQL dotazy, hezky si to osaháš.

Nahoru Odpovědět 30.9.2012 15:35
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Jenže to umí jen MySQL, které se např. na weby moc nehodí.

Nahoru Odpovědět 30.9.2012 15:43
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Redaktor
Avatar
Odpovídá na Kit
samo007:

Ďakujem za rady. Asi skúsim ten SQLLite.
Mám ale ešte jeden podstatný problém. Ide o môj lokálny server. Ešte pred rokmi som si stiahol EasyPHP, kde je Lokálny web-serve, podpora PHP a MySQL, ale MySQL mi prestal fungovať a keďže som si tam nainštaloval FrogCMS, všetko mi prestalo fungovať. Už som to vzdal, neviem kde je chyba a čo mám s tým robiť.

 
Nahoru Odpovědět 30.9.2012 15:55
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Nehodí, ale je tam nejpoužívanější :D Pro začátky je určitě jednodušší, už jen proto, že nikde nemusí nic nastavovat.

Nahoru Odpovědět 30.9.2012 16:14
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

U databáze SQLite nemusíš nastavovat vůbec nic. V jedné instanci jich můžeš mít otevřených až 10 a joinovat dotazy i mezi nimi. Navíc umí spoustu věcí, o kterých si MySQL může nechat jen zdát: Cizí klíče, integritní omezení, transakce,... Jistě, tabulky InnoDB to umí, ale každý hosting je nenabízí. Většinou jen MyISAM.

Proto tvrdím, že SQLite je pro začátky jednodušší, než MySQL. MySQL má jen jedinou podstatnější výhodu: Je víc v povědomí, víc se o ní mluví a píše.

Nahoru Odpovědět  +1 30.9.2012 16:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Redaktor
Avatar
Odpovídá na Kit
samo007:

Takže som si asi vybral dobre :)
Teraz ale premýšľam, že som sa chcel ešte naučiť C#. A keďže všetko sa naraz nedá, tak sa radšej ešte poradím :)
Čo by som mal skôr začať študovať? Ešte ani neovládam poriadne základy php. Ktorý jazyk je užitočnejší? (Pre začiatočníka)

 
Nahoru Odpovědět 30.9.2012 22:58
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

Záleží na tom, co chceš programovat. Pokud desktopovou aplikaci pro Windows, tak C#. Pokud multiplatformní, tak Java nebo Python. Pokud chceš webovou aplikaci, tak nejvhodnější bude asi PHP, i když existují hostingy s Javou nebo Pythonem. Pokud chceš programovat roboty nebo vesmírné sondy, tak asi Lisp.

Univerzální programovací jazyk neexistuje. Je dobré jich znát několik a pro daný problém vždy vybrat ten nejvhodnější.

Nahoru Odpovědět 30.9.2012 23:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 27 zpráv z 27.