Tulosta mysql taulusta php koodia, miks ei se tulostu php muotoon?
Lähde koodissa koodi näkyy mutta ei sivulla mitään
JyKKemus kirjoitti:
miks ei se tulostu php muotoon?
Mitä tarkoitat "php-muodolla"? Sitäkö, että koodi pitäisi suorittaa sen sijaan, että tulostat sen käyttäjälle?
Joo selitin vähän huonosti.
Mulla on mysql taulussa teksti minkä tulostan ja se on tällänen
<?php echo "Testi PHP"; ?>
Täällä se on
Vika on käsittääkseni siinä, että koko rimpsu <?php echo "Testi PHP"; ?> tulkitaan yhdeksi tagiksi ja jätetään siten rendaamatta. Ongelma poistunee, kun vaihdat merkit < ja > niitä vastaaviksi entiteeteiksi(?). Kyseiset entiteetit ovat < ja >. PHP:stä löytynee joku replace()-funktio, jolla muunnoksen voi tehdä automaattisesti.
Nyt se tulostaa sen koodin näytölle sellasenaan, eikä suorita sitä koodia
JyKKemus kirjoitti:
Nyt se tulostaa sen koodin näytölle sellasenaan, eikä suorita sitä koodia
No oisit heti sanonu, että haluat suorittaa sen.
https://www.php.net/manual/en/function.eval.php
Ja ollaan sitte hyvin varovainen sen suhteen, ketä päästetään kantaan koodia lisäämään. Sua on varotettu.
Nyt ei jummara miten ne tolla saa suoritettua
eval('echo "minä olen PHP-koodia";');
Tulostaa silti sen koodin kun laitoin näin
eval('echo $change;');
Nyt testasin niin että laitan suoraan sen evalin mysql taulusta niin ei tulostu mitään eli en muuttanut merkkejä <>
no echoahan käytetään tulostamiseen :P
evalissa ei käytetä alku- ja lopetus merkkiä
JyKKemus kirjoitti:
Tulostaa silti sen koodin kun laitoin näin
eval('echo $change;');Nyt testasin niin että laitan suoraan sen evalin mysql taulusta niin ei tulostu mitään eli en muuttanut merkkejä <>
<?php eval('$change = "Testi PHP"; echo $change;'); ?>
Kyllä tämä tulostaa vain tuon "Testi PHP".
Ja tosiaan aloitus-ja lopetustagit pitää ottaa siitä pois.
Jokin siinä on väärin tällänen on koko php koodi
<?php $id = $_GET['id']; $koodivinkki = mysql_query("SELECT id, koodi FROM koodit WHERE id='$id'", $yhteys); $a = array("<", ">"); $b = array("<", ">"); $phrase = mysql_result($koodivinkki,0,1); $change = str_replace($a, $b, $phrase); eval('echo $change;'); ?>
Ja taulu on tällänen
CREATE TABLE IF NOT EXISTS `koodit` ( `id` int(11) NOT NULL auto_increment, `nimi` varchar(50) NOT NULL, `koodi` text NOT NULL, `aika` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `ip` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
Jotenkin näin:
$a = array('<?php', '?>'); $b = array("", ""); $phrase = mysql_result($koodivinkki,0,1); $change = str_replace($a, $b, $phrase);
eval('?>' . $phrase . '<?php'); ehkä?
Ei vaan tää toimi :(
Kyllä tämänkaltainen, jota ehdotin, toimii:
<?php $str = '<?php echo "TESTAA TÄMÄ"; ?>'; $arr1 = array('<?php','?>'); $arr2 = array("",""); $str = str_replace($arr1,$arr2,$str); eval($str); ?>
Mutta jos sinulla nuo merkit onkin <?php jne:
$a = array('<?php', '?>'); $b = array("", ""); $phrase = mysql_result($koodivinkki,0,1); $change = str_replace($a, $b, $phrase); eval('$change;'); // <- ja tämä näin
No nyt toimii, KIITOS
Lisättäköön, että str_replacen toiseksi parametriksi voi antaa myös simppelisti tyhjän merkkijonon, jolloin sitä käytetään korvaamaan kaikki korvattavat merkkijonot.
En tiedä kylä mitä tällä koko roskalla teen mutta jotain pitää keksiä kotisivulle
Eiks sinne kantsis keksiä jotain järkevää, eikä potentiaalisesti vaarallisia virityksiä? Ja jos ei keksi mitään järkevää, niin eikai kukaan asetta sun ohimolla pidä pakottaen tekemään kotisivuja?
Bloggaus on nykyään in, tienaa miljuunia :3. Harjoitustehtävien puute uusia kieliä opetellassa kyllä vaivaa itseäkin, mietin joskus moisen kirjaston ehdottamista Putkaan.
Blaze kirjoitti:
Eiks sinne kantsis keksiä jotain järkevää, eikä potentiaalisesti vaarallisia virityksiä? Ja jos ei keksi mitään järkevää, niin eikai kukaan asetta sun ohimolla pidä pakottaen tekemään kotisivuja?
Joo mutta kun tykkään väsäillä php:ta
tsuriga kirjoitti:
Harjoitustehtävien puute uusia kieliä opetellassa kyllä vaivaa itseäkin, mietin joskus moisen kirjaston ehdottamista Putkaan.
Antti, hear hear! Mainio idea.
tsuriga kirjoitti:
Harjoitustehtävien puute uusia kieliä opetellassa kyllä vaivaa itseäkin, mietin joskus moisen kirjaston ehdottamista Putkaan.
Enemmän kuin mainio :) kannatan \o/
Aihe on jo aika vanha, joten et voi enää vastata siihen.