Autor Zpráva
TomasRe
Profil
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
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
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
$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
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
TomasRe:
Warning: Cannot modify header information - headers already sent
Nejčastější potíže s PHP (FAQ), headers already sent
TomasRe
Profil
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
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
Zkoušel jsem to přesně na této ukázce a zkontroloval jsem i mezery - nic tam není...
TomasRe
Profil
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); 
?> 

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: