cawte.. naprogramoval si vkladani text a ulozeni do souboru
prvne vsecko slo jako po dratkach... jenze pak jsem chtel aby ve jmene souboru bylo natrvalo .html, ale pak tomu najednou zacalo vadit.... ve vlozenem textu </body>, přesneji y, kdyz tam mam </bod> tak to funguje..., jak ste si jistě všimli... ve vloženem textu.. neni body ukončene... je ukončeno jen , nevite nekdo co s tim je..?
if ($HTTP_POST_VARS["napsat_text"]!=""){
$a_text = $HTTP_POST_VARS["napsat_text"];
$text = "<head>
<meta http-equiv="Content-Language" content="cs">
<title></title>
</head>
<body>
<p> </p>
<div class="tc">
$nadpis
</div>
<div class="tc2"></div>
<div class="text_4"> $a_text </div>
<div class="konec_clanek"></div>
<div class="konec_clanek2"> Vyzkoušel a na web přidal $podpis</div>
<p> </p>
";
$jmeno_souboru = $jmeno_soubor;
$filename = FOpen ($jmeno_souboru, "a");
FClose ($filename);
$filename = FOpen ($jmeno_souboru, "r+");
FWrite($filename, $text);
FClose ($filename);
}
?>
ssry nejak to tady nejde vlozit... jinak na zacatku vlozeneho textu sou tagy html
Tak v prvé řadě, máte v tom zmatek.
1) V textu se nesmí křížit uvozovky. Takže je několik vyriant. Text uvést v apostrofu, ale musí se upravit proměnné, které v apostrofu nefunguji. Ponechat uvozovky, ale v tomto případě uvozovky uvnitř nahradit apostrofem nebo je escapovat \".
2) Jaký smysl má to dvojité fopen()?
3) $HTTP_POST_VARS je na dnešní dobu už staromódní. Stačí $_POST.
$HTTP_POST_VARS uz se leta nepouziva, kdes to vyhrabal? pouzivej $_POST
$jmeno_souboru = $jmeno_soubor; je k cemu?
pak otevres soubor pro zapis, zavres ho, otevres znovu pro cteni a zapis, zapises, zavres. to je nejaka blbost, nezda se ti?
a vubec ti to nemuze fungovat, protoze v retezci uzavrenem v " pouzivas ", cimz se ten retezec ukonci, nasledujici znaky pak hodi parse error:
$text = "<head><meta http-equiv=" // tady se ukonci retezec
bud retezec zavri do ' nebo v retezci misto " pouzij ' nebo \"
cawte.. super uz mi to jede...
$jmeno_souboru = $jmeno_soubor; je k cemu?
tj k tomu... abych z prohlizece zadal jmeno souboru...
tj zapisovani textu do... a pak nasledne ulozeni do souboru, ten soubor neexistuje.. prohlizec ho vytvori sam...
a ten fopen co je tam 2x.. tj proto abych mohl z toho stejneho formulaře vytvořit zase dalsi soubor
ad $jmeno_souboru = $jmeno_soubor;:
Také jste si až ted všimli (Tonik), že ty dvě proměnné jsou různé? Aneb BCP: nepojmenovávat proměnné příliš podobně.
$filename = FOpen ($jmeno_souboru, "a");
FClose ($filename);
Tohle tedy znamená "vytvoř soubor pokud neexistuje", a to je celé k čemu to je? Jsem línej na RTFM ale tipoval bych že na to bude nějakej elegantnější způsob.
Proměnné by se měly pojmenovávat podle významu, jinak se v tom časem ani autor nevyzná.
$filename = FOpen ($jmeno_souboru, "a");
je ukázka jednoho takového nesmyslu, protože ani jedna proměnná nevyjadřuje obsah. Místo $jmeno_souboru bych použil (teď netuším, k čemu ten skript je, budu hádat) například $soubor_s_prispevky.
Proměnná $filename vůbec neobsahuje jméno souboru, tak by se tak ani neměla jmenovat. Spíše $filehandle, $file nebo $handle, pokud chceme zůstat u anglických slovíček z učebnic. V češtině mě zrovna nic kloudného nenapadá.
Dvojí otvírání jednoho souboru bude asi zbytečně zatěžovat server. Na stránce
http://cz2.php.net/manual/en/function.fopen.php
určitě najdeš něco vhodnějšího. Pokud chceš původní obsah prostě přepsat, použij
$filename = FOpen ($jmeno_souboru, "w");
A ještě k původnímu dotazu: Neošetřil jsi uvozovky uvnitř řetězce $text. Musí to vypadat nějak takto:
$text = "<head>
<meta http-equiv=\"Content-Language\" content=\"cs\">
<title>$titulek</title>
... ";
Nezapomeň na $titulek, je to žrádlo pro Googla. Také je dobré ošetřit obsah proměnné $a_text před vložením skriptů. Asi nechceš hacknutý web, že?