Всем привет. Подскажите пожалуйста, как в php скрипт (выводит содержимое страницы) вставить другой скрипт (рейтинг) Вот скрипты 1. Вывод страницы PHP: <?php $post=$_SERVER['REQUEST_URI']; $end=htmlspecialchars($post); define("HOST","localhost"); define("USER","рололодлджоджл"); define("PASS","орллдолджо"); define("DB","airblog_info"); $link = mysql_connect(HOST,USER,PASS) or die (mysql_error()); mysql_select_db(DB, $link); mysql_query ("SET NAMES utf8"); $sql = ("SELECT * FROM aviation_news WHERE link LIKE '%$end%'"); $result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql); while ($row = mysql_fetch_assoc($result)) { echo '<img src="'.$row['img'].'" >'; echo '<h2>'.$row['title'].'</h2>'; echo'<div class="info"><strong>'.$row['dt'].'</strong></div>'------------------------------------------вставить нужно сюда; echo '<p>'.$row['news_f'].'</p>';} ?> 2.Комментарии PHP: <?php /* Setting the error reporting level */ error_reporting(E_ALL ^ E_NOTICE); include 'connect.php'; if(!$_GET['url'] || !filter_input(INPUT_GET,'url',FILTER_VALIDATE_URL)){ exit; } $pageID = 0; $appreciated = 0; $jsonArray = array(); $hash = md5($_GET['url']); $ip = sprintf('%u',ip2long($_SERVER['REMOTE_ADDR'])); $result = $mysqli->query("SELECT id,appreciated FROM aviation_news WHERE hash='".$hash."'"); if($result) { list($pageID,$appreciated) = $result->fetch_row(); } // The submit parameter denotes that we need to write to the database if($_GET['submit']) { if(!$pageID) { // If the page has not been appreciated yet, insert a new // record to the database. $mysqli->query(" INSERT INTO appreciate_pages SET hash='".$hash."', url='".$mysqli->real_escape_string($_GET['url'])."'" ); if($mysqli->affected_rows){ // The insert_id property contains the value of // the primary key. In our case this is also the pageID. $pageID = $mysqli->insert_id; } } // Write the vote to the DB, so the user can vote only once $mysqli->query(" INSERT INTO appreciate_votes SET ip = ".$ip.", pageid = ".$pageID ); if($mysqli->affected_rows){ $mysqli->query("UPDATE appreciate_pages SET appreciated=appreciated+1 WHERE id=".$pageID); // Increment the appreciated field } $jsonArray = array('status'=>1); } else { // Only print the stats $voted = 0; // Has the user voted? $res = $mysqli->query("SELECT 1 FROM appreciate_votes WHERE ip=".$ip." AND pageid='".$pageID."'"); if($res->num_rows){ $voted = 1; } $jsonArray = array('status'=>1,'voted'=>$voted,'appreciated'=>$appreciated); } // Telling the browser to interpret the response as JSON: header('Content-type: application/json'); echo json_encode($jsonArray); ?>
А не создатель темы, но вопрос по теме: А можно не include? Например скрипт записан в mysql, можно прочитав его выполнить?
А что нибудь ближе к include? Например в базе написано : <?php echo 123; ?><!-- BODY --!> Как отобразить на странице 123<!-- BODY --!> (То есть выполняет PHP только там где есть '<?php' И '?>')
Мне кажется меня не до поняли. Мне нужна функция которая выполняет PHP только в той части кода, где есть PHP Например: PHP: <?php $str = "<?php echo \"Выводим этот текст\"; ?>И это текст"; функция($str); ?>
alive342 Вот скажи, я чё непонятно объясняю? или ты недопонимаешь? PHP: <?php $str = "<?php echo \"Выводим этот текст\"; ?>И это текст"; eval($str); ?> Ошибка: Код (Text): Parse error: syntax error, unexpected '<' in /home/u458829511/public_html/my_site/347.php(3) : eval()'d code on line 1 текст находящийся в eval весь исполняется как PHP, а мне надо чтобы исполнялась только та часть, которая в PHP!!!! чё так трудно понять???
PHP: <?php $str='?><?php echo\'Выводим этот текст\';?> <br /> И этот<?'; eval($str); ?> Мож, чего не так, просто я не догнал, что надо сделать - то!? Чтобы как работало!?
Столкнулся с такой проблемой: в таблице хранится код: Код (Text): echo "<img src=".$poral_dir."dataimg/banners/alarm-clock.gif>"; Выводится таким образом: получаю содержимое таблицы ..... и в переменной $element['body'] хранится код дальше вывожу: Код (Text): //включить принт в буфер ob_start(); // Преобразуем в рнр код eval("\$body=$element[body];"); // получаем содержимое output buffer $body=ob_get_contents(); ob_clean(); echo $body; В результате получаю ошибку: Parse error: syntax error, unexpected T_ECHO in Z:\home\cms.ua\www\config\include\functions.inc.php(103) : eval()'d code on line 3 При добавлении любого кода например: Код (Text): $pusto; echo "<img src=".$poral_dir."dataimg/banners/alarm-clock.gif>"; вывод идет нормально. Вопрос что не правильно и как решить?
Изменил, результат: Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in Z:\home\cms.ua\www\config\include\functions.inc.php on line 102
При использовании следующей записи eval("\$body=\"$element['body']\";"); действительно возникают проблемы. Это связанно с тем, что пхп парсер не знает как обработать одинарные ковычки 'body'. Попробуй скобки {}, должно помочь eval("\$body=\"{$element['body']}\";");
Решил: Код (Text): ob_start(); eval("\$body = {$element['body']};"); $body=ob_get_contents(); ob_clean(); echo $body; Вывод правильно как рнр так и html. Всем спасибо.
Дельный совет: забивай любую новую или забытую функцию в поиск на сайте php.net и читай описание. Дельный совет номер два: читай тамже под описанием обсуждение этой функции. Там масса хороших примеров и частенько разобраны баги.
PHP: <?php $str = "?><?php echo "Выводим этот текст"; ?>И это текст<?php"; eval($str); ?> по-моему так
У меня срабатывает только если с конца строки $str убрать <?php, иначе - синтаксическая ошибка. Начальные ?><?php - тоже можно убрать, но только либо убрать и закрывающий и открывающий, либо не убирать ничего.
В эту логику я не врубаюсь. Т.е. в строке может не быть открывающего тега, но где-то в середине может быть закрывающий. При этом выполнение кода продолжится после eval даже в том случае, если в конце строки не будет открывающего. Надо заметить, что в обычном php-файле, незакрытый открывающий тег в конце не вызовет ошибки. Я вообще в файлах конец кода не закрываю
Ой да, чё это я, я имею в виду как выполнить этот код: PHP: <?php $str = "<?php echo \"Выводим этот текст\"; ?>И это текст"; eval($str); ?> Этот код вызывает ошибку, я и спрашиваю как выполнить этот код