| Autor | Zpráva | ||
|---|---|---|---|
| novacek90 Profil |
#1 · Zasláno: 11. 7. 2013, 22:09:55
Ahoj chtěl jsem si napsat script pro vytvoření stránky, ale funguje mi pouze jedna část kódu. Ukážu na příkladu:
formular : <form action="#" method="post" name="vytvoreni-stranky" > <fieldset> <legend>Vytvoření nové stránky</legend> <label class="req">Název stránky:</label><br /> <input type="text" name="name-page" /><br /> <label class="req">Obsah stránky:</label><br /> <textarea name="editor1"></textarea> <script type="text/javascript"> CKEDITOR.replace( 'editor1' ); </script> <label class="req">Titulka stránky:</label><br /> <input type="text" name="title" /><br /> <label class="req">Klíčová slova stránky:</label><br /> <input type="text" name="keywords" /><br /> <label class="req">Popis stránky:</label><br /> <input type="text" name="description" /><br /> <label class="req">Autor:</label><br /> <input type="text" name="author" /><br /> <input type="submit" name="odeslat" value="Odeslat"> </fieldset> </form> script <?php
if (!empty($_POST)){
$strana = $_POST['name-page'];
$uprava = $_POST['editor1'];
$vytvoreni = fopen("../../web/obsah/".$strana.".php", "w+");
fwrite($vytvoreni, $uprava);
if (fclose($vytvoreni)){
echo("<p class='info'>Vytvoření stránky proběhlo úspěšně.</p>");
}
// $author = $_POST['author'];
// $description = $_POST['description'];
// $keywords = $_POST['keywords'];
// $title = $_POST['title'];
$newconf = fopen("../../web/conf/".$strana."-conf.php", "w+");
$conf = "<?php
$author = ".$_POST['author'].";
$description = ".$_POST['description'].";
$keywords = ".$_POST['keywords'].";
$title = ".$_POST['title']."; ?>"
fwrite($newconf, $conf);
if (fclose($newconf)){
echo("<p class='info'>Vytvoření stránky proběhlo úspěšně 2.</p>");
}
else {
echo("<p class='info'>Vytvoření stránky se nezdařilo. Zkuste opakovat akci. 2</p>")
}
else {
echo ("<p class='info'>Vytvoření stránky se nezdařilo. Zkuste opakovat akci.</p>");
}
}
?>ve scriptu mi funguje část jen vytvoření stránky.php ale stránku-conf.php mi k tomu nevytvoří, myslím že je chyba v $conf, že je v ní php kód, ale zase by to na to nemělo mít vliv, protože by to mělo brát jako textový řetězec, nebo ne??
Díky za radu |
||
| Tori Profil |
#2 · Zasláno: 11. 7. 2013, 22:33:01
„by to mělo brát jako textový řetězec, nebo ne??“
Ne, máte to v uvozovkách, takže se proměnné nahrazují svými hodnotami. A jelikož $autor atd. nejsou definované, nahradí se prázdným řetězcem. Buď to dejte do apostrofů (v nich se proměnné nenahrazují), anebo escapujte dolary u proměnných v tom ukládaném PHP. |
||
| novacek90 Profil |
#3 · Zasláno: 12. 7. 2013, 08:12:10
Tori:
„dejte do apostrofů“ Zkoušel jsem to, ale asi špatně můžete mi ukázat jak to myslíte, jelikož mi to pořád nefunguje. Pročítám různé tutoriály atd. ale stále nic. |
||
| Tori Profil |
$conf = '<?php'.PHP_EOL .'$author = "'.$_POST['author'].'";'.PHP_EOL .'$description = "'.$_POST['description'].'";'.PHP_EOL .'$keywords = "'.$_POST['keywords'].'";'.PHP_EOL .'$title = "'.$_POST['title'].'";'.PHP_EOL .'?>'; ↓ Děkuju za opravu. |
||
| Jan Tvrdík Profil |
#5 · Zasláno: 12. 7. 2013, 14:21:38
Tori:
Nežádoucí HTML/JS je v tomhle případě minoritní problém. Hlavní problém je, že je náchylné na PHP injection =) Je potřeba to ošetřit pomocí var_export, viz také phpfashion.com/escapovani-definitivni-prirucka. |
||
| novacek90 Profil |
#6 · Zasláno: 12. 7. 2013, 16:35:23
Řekl bych že jsem to měl s uvozovkama podobně, ale neměl jsem tam to PHP_EOL. Ošetření už nějak zvládnu =)
Díky za radu už to funguje ;) |
||
| Jan Tvrdík Profil |
#7 · Zasláno: 13. 7. 2013, 02:25:48
novacek90:
„neměl jsem tam to PHP_EOL“ To zrovna nemá na funkčnost vůbec žádný vliv, protože jednotlivé příkazy jsou od sebe stejně odděleny středníkem. |
||
| Tori Profil |
#8 · Zasláno: 13. 7. 2013, 07:00:56
novacek90:
PHP_EOL obsahuje sekvenci pro zalomení řádku v daném OS (\n nebo \r\n), přidala jsem jen aby to bylo čitelnější i pro člověka. |
||
| novacek90 Profil |
#9 · Zasláno: 13. 7. 2013, 12:03:56
Jo aha :D já už jsem to PHP_EOL už někde viděl, ale nikdy jsem nějak nehledal co to je.
|
||
|
Časová prodleva: 13 let
|
|||
0