Autor | Zpráva | ||
---|---|---|---|
TomasRe Profil |
#1 · Zasláno: 4. 2. 2013, 10:45:38
Dobrý den,
můžete mi někdo poradit 1) jak upravit tento kód, aby se nesnažil ukládat na server, ale na lokální disk? <?php $text=$_REQUEST["text"]; $nazev_souboru=$_REQUEST["nazev_souboru"]; $soubor = fopen("c:/" . $nazev_souboru . ".html", "w"); fwrite($soubor, $text); fclose($soubor); ?> 2) jak odeslat z jednoduchého formuláře data (stejná jako u bodu 1) do mailu jako soubor? Moc děkuji za jakoukoliv připomínku. |
||
Alphard Profil |
#2 · Zasláno: 4. 2. 2013, 10:55:29
1. Myslíte si, že by to bylo bezpečné? Můžete akorát vyvolat dialog k uložení posláním vhodných hlaviček a pak vysypat soubor na výstup.
2. Jestli chcete posílat přílohu mailu, doporučuji použít nějaké již hotové řešení, Nette\Mail, Mailer apod., ve FAQ jsou odkazy. Sestavit přílohu "ručně" sice je možné, ale docela komplikované. |
||
TomasRe Profil |
#3 · Zasláno: 4. 2. 2013, 11:51:24
1. Jde o jednoduchý formulář, který převedu do HTML stránky. Tento soubor by pak měl člověk možnost si stáhnout - jsem v tomto naprostý začátečník, tak se omlouvám, ale ani jeden příklad mi nefunguje, když ho zkouším aplikovat. V první variantě, i když soubor na server uloží, tak už nenabídne ke stažení. V druhém případě se mi s tím nepodařilo pohnout vůbec.
Ještě mi jde o to, že když soubor uložím lokálně (viz. kód, který jsem napsal nahoře - pomocí easyPHP - zde to funguje), tak je vše v pořádku a soubor se zobrazuje správně, ale když to dám uložit na server $soubor = fopen($nazev_souboru.".html","w"); , tak se soubor sice na server uloží, ale chybně - <html xmlns=\"http://www.w3.org/1999/xhtml\"> " se vypíšou \" 2. Děkuji za radu, kouknu se hned na to... |
||
Alphard Profil |
#4 · Zasláno: 4. 2. 2013, 12:21:11
$soubor = $_REQUEST["nazev_souboru"] . ".html"; header("Content-Description: File Transfer"); header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=\"$soubor\""); echo $_REQUEST["text"]; |
||
TomasRe Profil |
#5 · Zasláno: 4. 2. 2013, 12:26:07
Tak nevím co dělám špatně, ale vždy mi to vypíše chybu u všech řádků header : Warning: Cannot modify header information - headers already sent
|
||
Joker Profil |
#6 · Zasláno: 4. 2. 2013, 12:34:19
TomasRe:
„Warning: Cannot modify header information - headers already sent“ Nejčastější potíže s PHP (FAQ), headers already sent |
||
TomasRe Profil |
#7 · Zasláno: 4. 2. 2013, 13:52:33
Omlouvám se, jsem opravdu začátečník. Nevím, jestli jsem to vysvětlil dobře, tak to zkusím na příkladu - 3.php:
1) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Formulář</title> </head> <body> <form action="2.php" method="post"> <input type="text" name="text" /><br /> <input type="text" name="text2" /><br /> <input type="submit" /> </form> </body> </html> 2) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>výstup z formuláře</title> </head> <body> <?php $text=$_REQUEST["text"]; $text2=$_REQUEST["text2"]; $popis=$text."width=\"".$text2."\""; ?> <form action="3.php"> <textarea name="popis"> <?php echo $popis; ?> </textarea><br /> <input type="text" name="nazev_souboru" /><br /> <input type="submit" /> </form> </body> </html> 3) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Dokument bez názvu</title> </head> <body> <?php $soubor = $_REQUEST["nazev_souboru"].".html"; header("Content-Description: File Transfer"); header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=\"$soubor\""); echo $_REQUEST["popis"]; ?> </body> </html> Nejsem si vědom, že už bych tam použil: funkce header(), setcookie() ani session_start() |
||
peta Profil |
#8 · Zasláno: 4. 2. 2013, 15:42:28
TomasRe: Z Jokerova odkazu:
Přesvědčete se, že před začátkem <?php ?> není žádný text (ani mezera) a že nebylo nic odesláno třeba funkcemi jako echo nebo print. 3) <body> <!-- toto je pred znackou php a vygeneruje html kod, vygeneruje hlavicku, odesle html kod uzivateli, pokud tam nemas ob_start() --> <?php |
||
TomasRe Profil |
#9 · Zasláno: 4. 2. 2013, 15:55:48
Zkoušel jsem to přesně na této ukázce a zkontroloval jsem i mezery - nic tam není...
|
||
TomasRe Profil |
#10 · Zasláno: 5. 2. 2013, 14:38:30
Tak se všem moc omlouvám - stáhl jsem soubor - to samé, co jsem sem psal, stejně bez mezer, ale funguje to. Nedokážu si to vysvětlit. Každopádně moc všem děkuji... Opravdu...
<?php $nazev = $_REQUEST["nazev_souboru"]; $soubor = $nazev.".html"; header("Content-Description: File Transfer"); header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=\"$soubor\""); readfile ($soubor); ?> |
||
Časová prodleva: 11 let
|
0