Administrace

Zdravím, potřebuju na web jednoduchou administraci, jen úprava obsahu includovaných stránek, nic víc nic míň...... ale moc netušim jak na to... zkoušel jsem googlit ale nic moc..nevíte o nějakym nástroji co naformátuje text do html a pak ho to ulozi...
Texyla
Taky jsem o tom přemýšlel možná eště Texy ale já potřebuju cituju:"Chápeš jak se říká i pro blbce" takže nějakej wysiwyg v češtině
myslim že něco takovýho dělal jeden kamarád, jmarek@centrum.cz (Honza Marek)
No nakonec jsem se rozhodl pro editor tinyMCE, už se mi i povedlo dostat do edytoru přes fopen + fread obsah tý stránky k editování... ale moc nevím jak to pře fwrite zase zapsat...
tady je to vidět http://mrhal.zaridi.to/lek.php

// těch dvou chyb dole si nevšímejte :-)
a co dáváš tý funkci jako parametr? musíš jí dát jako parametr ukazaltel na soubor otevřený pro zápis, pak by tovýrazně mělo fungovat
no ten editor je v "textarea", takže mezi tagy mam:

<?php
$filename = $_POST["filename"];
$filename = "./url/uvod.php";
$fd = fopen ($filename, "r+");
$contents = fread ($fd, filesize ($filename));
echo htmlspecialchars ($contents);
fclose ($fd);
?>

// tím otevřu pro úpravu uvod.php

a něčím takovým bych to rád ukládal:

<?php
$filename = $_POST["filename"];
$text = $_POST["text"];
$fd = fopen ($filename, "r+");
fwrite($fd,$text);
fclose ($fd);
?>


prostě dolu dát čudlik "uložit" a tím odeslal aktuální obsah "textarea" do uvod.php
no z toho co vidim bych tipoval, že třeba $_POST["filename"]; neobsahuje to co má a proto to zhavaruje. jinak myslim že by to obecně mělo fungiovat
nojo jenže já se v PHPku takřka vůbec nevyznám... takže těžko říct co má $_POST["filename"]; obsahovat....
$_POST["filename"]; by možná mohlo obsahovat hodnotu políčka s názvem filename z formuláře odesílaného metodou POST.

Jinak ten sranda-kód od Huha bych moc nedoporučoval - tedy pokud nechceš přijít o všechna data v souborech, které to poctí svou návštěvou.
Nojo sradna-kód :-), snadno je to hloupost.... je to poskládaný z toho co se dalo vygooglitale, ale svůj úkol to snad bude plnit ...kdyz se mi to povede uložit..no
delal jsem pro tebe 15 minut navod na administraci a pak mne to odhlasilo :D No to mne posr No tak dneska mam dobru naladu tak to udelam znova ale odbiju to :D Hajzlove na wz!


//////////////////////////
soubor editce.html:


Tady napiš jmeno souboru nebo cestu k němu (např. knihy/stalin.html)
<form method="post" action="uprava.php">
<input name='soubor' type='text' size=40>
<input type="submit" value="Edituj_soubor">
</form>


//////////////////////////
soubor uprava.php:

<?
echo "<form method='post' action='ulozeni.php?soubor=$soubor'>";
?>

<input name='soubor' type='text' size=40>
<input type="submit" value="Edituj_soubor">
</form>

<TEXTAREA name=editace style='height:7000px; width:100%; background-color: #dadada;'>

<?
if (File_Exists ("$soubor")):
$fp = FOpen ("$soubor", "r");
FPassThru($fp);
endif;
?>

</TEXTAREA></form>


//////////////////////////
soubor ulozeni.php:

<?
if (unlink("$soubor"))

$write = StripSlashes($editace);
$tp = FOpen ("$soubor", "w");
FWrite ($tp, $write);
FClose ($tp);
?>

<br>
<br>
<center>
Soubor byl uložen, přeji hezký den ;)
<br><br>


/////////////////////////


Tak to je snad celý, omlouvám se za případné chybky a preju hodne stesti pri tvorbe webu ;)
moc díky za trpělivost... zítra to zkusim. Teda jestli ešte budu mí sílu.. po 14 dnech prázdnin zase do školy :(
Vyzkoušej, ale nezapomeň na atomicitu, ať se potom nedivíš...
Je to nějáký onaký divoký.. ten návod..

Tady http://mrhal.zaridi.to/lek.php mám pomocí tohohle kódu nahranej obsah "uvod.php"

<?php

$filename = $_POST["filename"];
$filename = "./url/uvod.php";
$fd = fopen ($filename, "r+");
$text = fread ($fd, filesize ($filename));
echo htmlspecialchars ($text);
fclose ($fd);
?>

No a potřebuju dát pod to čudlik "uložit" kterej vezme to co je mezi tagy "textarea" a přepíše s tím soubor "uvod.php"
HuH: máš pravdu, ten návod je divokej ... kdo ho vůbec sepisoval?

No nic:
pokud chceš vypsat obsah souboru do textarea, tak třeba takhle:
<?php
$file = ''; # mezi apostrofy doplň název souboru i s relativní cestou.
echo htmlspecialchars(file_get_contents($file), ENT_QUOTES);
?>

No a pokud chceš data opět zapsat, tak to budeš muset navázat na nějakou "událost", například naplnění $_POST (odeslání formuláře). Zápis je o trošičku složitější, protože se tam musíš nějak šikovně popasovat s atomicitou operací, jinak by se ti mohly data ztratit. Jedno takový "jakš-takš" funkční řešení je například toto:
<?php
$file = ''; # mezi apostrofy doplň název souboru i s relativní cestou.
$fp = fopen($file, 'r+');
flock($fp, LOCK_EX);
ftruncate ($fp, 0);
fwrite($fp, $_POST['']); # mezi apostrofy doplň hodnotu name textarea. které máš na stránce.
flock($fp, LOCK_UN);
fclose($fp);
?>
Jo.. tak teď mám "lek.php" kde je "textarea" s otevřenou stránku
Potom mám "baf.php" s tím ukládacím kódem (včetně toho k doplnění)

A potřebuju ten "čudlík".. něco jako:

<form action="baf.php" method="get">
<input type="submit" value="Uložit" />
</form>

ale tohle nejde...
no musíš v tom formu mít i tu textareu -

<form action="baf.php" method="get">
<TEXTAREA name=editace>tady text</TEXTAREA>
<input type="submit" value="Uložit">
</form>

jinak to máš a priori aprávně, jen já bych radši používal method=post
Jak raději? Na textareu jedině post, protože až budeš mít delší text, tak ho neprocpeš na server.
Omlouvam se za chyby v mojem navodu vyse omg, to se mi jeste nestalo. Tady je cela administrace: (funguje to protoze jsem to tentokrat vyzkousel, jen to vloz do souborů ;)

////////////////////////////////////////////////////
soubor editce.html:


Tady napiš jmeno souboru nebo cestu k němu (např. knihy/stalin.html)
<form method="post" action="uprava.php">
<input name='soubor' type='text' size=40>
<input type="submit" value="Edituj_soubor">
</form>


////////////////////////////////////////////////////
soubor uprava.php:

<?
echo "<center><form action='ulozeni.php?soubor=$soubor' method='post'><input type='submit' name='ok' value='Ulož změny'>";
?>
<br>
<br><center>
<TEXTAREA name=editace name=t4 style='height:7000px; width:100%; background-color: #dadada;'>

<?
if (File_Exists ("$soubor")):
$fp = FOpen ("$soubor", "r");
FPassThru($fp); //vypíše obsah souboru
endif;
?>

</TEXTAREA></form>



////////////////////////////////////////////////////
soubor ulozeni.php:


<?

$write = StripSlashes($editace);


$tp = FOpen ("$soubor", "w");
FWrite ($tp, $write);
FClose ($tp);

?>

<br>
<br>
<center>
Soubor byl uložen, přeji hezký den ;)
<br><br>
Budulínek s.r.o: ten tvůj kód má problémy s atomicitou jak prase... =)
No to mas pravdu :D U vetsich souboru nebo kdyz ma wz vypadky (coz je casto se mi to nekdy neulozi, prave proto tam mam na webú funkci ktera kdyz se mi to nahodou neulozi vrati vse zpet a muzes to zasej zkusit ulozit beze ztraty dat ;) Zkusim vyzkouset ten tvuj skriptik jstli ti to funguje ;)
TOM: Učený z nebe nespadne to je pravda co říkáš. Pravda taky je že ten tvůj skriptík má chyby a nefunguje. Vymyšleno dobře ale špatně napsáno.

Funkční kód:



<?
$write = StripSlashes($editace); //data poslana z formulare name=editace

$fp = FOpen ("$soubor", "r+");
flock ($fp, LOCK_EX);
ftruncate ($fp, 0);
FWrite ($fp, $write);
flock ($fp, LOCK_UN);
fclose ($fp);
?>

Doporučuju vložit jako poslední soubor do mého předešlého návodu (ulozeni.php)


Jinak díky za dobrý nápad, snad to už nebude při ukládání padat ;)
Juchůůůů funguje to viz. tady: http://mrhal.zaridi.to/lek.php

Dokázali jste dotáhnout PHP analfabeta k výsledku

Díky