Autor | Zpráva | ||
---|---|---|---|
Martin02 Profil |
#1 · Zasláno: 29. 7. 2011, 21:26:07 · Upravil/a: Martin02
Dobrý den, vytvořil jsem si script, ve kterém si návšěvník může vybrat stránku, kterou chce upravit, a pak ji upraví (jednoduché CMS). K zobrazení kódu souboru používám funkci file_get_contents. Když ale script jde dál, přestane fungovat a soubor se neupraví.
<h2>Úprava textů</h2> <hr /> <p style="text-align: center;" class="odkazy"><a href="./access.php?ul=uprava&ul_uprava=uvod" title="Upravit Úvodní stránku">Úvod</a> | <a href="./access.php?ul=uprava&ul_uprava=stredisko" title="Upravit stránku Středisko">Středisko</a> | <a href="./access.php?ul=uprava&ul_uprava=zakladny" title="Upravit stránku Základny">Základny</a> | <a href="./access.php?ul=uprava&ul_uprava=oddily" title="Upravit stránku Oddíly">Oddíly</a> | <a href="./access.php?ul=uprava&ul_uprava=informace" title="Upravit stránku Všeobecné informace">Informace</a> | <a href="./access.php?ul=uprava&ul_uprava=akce" title="Upravit stránku Akce">Akce</a></p> <?php if(isset($_GET['ul_uprava']) OR $_GET['ul_uprava'] != "") { switch($_GET['ul_uprava']) { case 'uvod': $_SESSION['nazev'] = "Úvod"; $_SESSION['adresa'] = "../includes/uvod.php"; $nazev = "Úvod"; $adresa = "../includes/uvod.php"; break; case 'stredisko': $_SESSION['nazev'] = "Středisko"; $_SESSION['adresa'] = "../includes/stredisko.php"; $nazev = "Středisko"; $adresa = "../includes/stredisko.php"; break; case 'zakladny': $_SESSION['nazev'] = "Základny"; $_SESSION['adresa'] = "../includes/zakladny.php"; $nazev = "Základny"; $adresa = "../includes/zakladny.php"; break; case 'oddily': $_SESSION['nazev'] = "Oddíly"; $_SESSION['adresa'] = "../includes/oddily.php"; $nazev = "Oddíly"; $adresa = "../includes/oddily.php"; break; case 'informace': $_SESSION['nazev'] = "Všeobecné informace"; $_SESSION['adresa'] = "../includes/informace.php"; $nazev = "Všeobecné informace"; $adresa = "../includes/informace.php"; break; case 'akce': $_SESSION['nazev'] = "Střediskové akce"; $_SESSION['adresa'] = "../includes/akce.php"; $nazev = "Střediskové akce"; $adresa = "../includes/akce.php"; break; } echo "<p>Zde můžete měnit text stránky $nazev</p>"; echo '<form action="./zapis_textu.php" method="post">'; echo '<textarea cols="60" rows="16" name="uprava">'.file_get_contents($adresa).'</textarea>'; echo '<p><input type="submit" value="Upravit stránku '.$nazev.'"></p>'; echo '</form>'; } else { echo "<p>Vyberte stránku, kterou chcete upravit.</p>"; if(isset($_SESSION[htv])) { echo $_SESSION['htv']; } } ?> Tahle část ještě funguje, ale problém nastává při odeslání formuláře na soubor zapis_textu.php <?php session_start(); $adresa = $_SESSION['adresa']; $text_pro_upravu = $_POST['uprava']; $id = fopen($adresa, "w"); fwrite($id, $text_pro_upravu); fclose($id); $nazev = $_SESSION['nazev']; $_SESSION['htv'] = "echo 'Text stránky'.$SESSION['adresa'].'byl upraven.';"; echo '<script type="text/javascript"> window.location.href="./access.php?ul=uprava"; </script>'; ?> Myslím, že problém je ve funkci file_get_contents, protože když provedu změnu souboru, která se nedokončí a podívám se do zdrojového kódu souboru zapis_textu.php (v prohlížeči) zobrazí se mi zdrojový kód tohoto souboru, ale přímo kód php, takže asi bude problém v tom, že funkce přetrvává, a tím se k=od neprovede, ale jen zobrazí. |
||
ybznek Profil |
#2 · Zasláno: 29. 7. 2011, 23:17:52 · Upravil/a: ybznek
četl jsem si asi 3x v čem je problém a nepochopil jsem, co se vlastně děje
nevím, co načítáš v těch souborech, ale já bych tam dal asi echo '<textarea cols="60" rows="16" name="uprava">'.htmlspecialchars(file_get_contents($adresa)).'</textarea>'; btw. když už používáš file_get_contents() file_put_contents() |
||
Martin02 Profil |
#3 · Zasláno: 30. 7. 2011, 10:12:34
Zkusil jsem to htmlspecialchars(file_get_contents($adresa)), ale nic. Jak mám použít to file_put_contents() pro zápis? kam to dát?
Vlastně mi jde jen o to, že když odešlu formulář s daty, které se mají upravit, zobrazí se mi soubor uprava_zapis.php, kde vůbec nic není (přičemž je v něm php kód), ale když si otevři zdroják (v prohlížeči), tak se mi zobrazí kód php, který se neprovedl a v tom je problém. Nejspíš je to tou funkcí file_get_contents(), který dokáže zobrazit kód, ale když se formulář odešle, funkce nejspíš přetrvává a kód php, který má zapsat do souboru změněná data se jen zobrazí, ale nevykoná. |
||
Jake898 Profil |
#4 · Zasláno: 30. 7. 2011, 16:21:15 · Upravil/a: Jake898
Na začátku scriptu ti chybí session_start();.
|
||
Martin02 Profil |
#5 · Zasláno: 30. 7. 2011, 18:31:03
nechybí, ten kód není celý a začátek sesion je ještě před tím
|
||
Jake898 Profil |
#6 · Zasláno: 30. 7. 2011, 20:32:40
Jsou tam nějaké chyby v syntaxi (řádek 52 v prvním souboru, řádek 10 v druhém), ale po opravení mi to fungovalo. Máš správně nastavená práva k zápisu?
|
||
Martin02 Profil |
#7 · Zasláno: 30. 7. 2011, 23:07:03
A poslal bys mi opravenou verzi? Mě to nefungovalo i když jsem vymazal vše ohledně tý session[htv] (napsání, že soubor byl upraven). A ano, mam nastavená práva správně.
|
||
Časová prodleva: 14 let
|
0