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: 11 let
|
0