file_put_contents("posts/$a_i/index.php", "\xEF\xBB\xBF".include'./engine.php');
Почему этот файл выводит единицу в созданном файле
Output : 1
Сам файл:
<?php
$connect = mysql_connect("localhost", "root", "");
$db = mysql_select_db("mybase");
mysql_set_charset("utf-8");
$sql = "SHOW TABLE STATUS FROM mybase LIKE '$table'";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$a_i = $row['Auto_increment'];
$title = strip_tags(trim($_POST['title']));
$content = $_POST['content'];
$author = strip_tags(trim($_POST['author']));
$image = strip_tags(trim($_POST['image']));
$date = $_POST['date'];
mkdir("./posts/$a_i");
mysql_query(
"INSERT INTO posts(title, author, content, date, image)
VALUES ('$title', '$author', '$content', '$date', '$image' )
");
mysql_close();
$idprogid = $a_i;
file_put_contents("posts/$a_i/index.php", "\xEF\xBB\xBF".include'./engine.php');
?>
Файл engine.php
<?php
$connect = mysql_connect("localhost", "root", "");
$db = mysql_select_db("mybase");
mysql_set_charset("utf-8");
$choose = mysql_query(" SELECT * FROM posts where id = $idprogid");
mysql_close();
$row = mysql_fetch_assoc($choose)
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><?php echo $row['title']; ?></title>
</head>
<body>
<blockquote style=" background-color: #eee;">
<img src="<?php echo $row['image'] ?>" alt="noalt" align="right" border="1" width="100">
<h1><?php echo $row['title']; ?></h1>
<p><small><?php echo $row['date']; ?></small></p>
<p><?php echo $row['content']; ?> <a href="/">На главную</a></p><hr>
</blockquote>
</body>
</html>
Кажется мне что у вас срабатывает инклуд в этом месте:
"\xEF\xBB\xBF".include'./engine.php'
И получается в file_put_contents вставляется ответ true которые преобразуется в 1.
Если хотите данные с файла вставить в файл сначала сделайте инклуд и потом переменную что в файле вставляйте в файл.
UPD. Исходя из исходного кода понял что вы пытаетесь на каждый новый пост создавать PHP файл, это не нужно, приведу самый простой пример как это сделать в 1 файле, вместо файла engine.php создайте к примеру файл post.php и в нём принимайте $_GET значение, его подставляйте в ваш запрос и всё, ваш подход не правильный, представьте если вы добавите пароль к базе или поменяете верстку, вам надо будет править все .php файлы.
Пример кода приведу на основе вашего кода:
<?php
//Подключение бы вынести в отдельный файл и потом везде вызывать его через include
$connect = mysql_connect("localhost", "root", "");
$db = mysql_select_db("mybase");
mysql_set_charset("utf-8");
//нужно хоть не много обезопасить себя от XSS
$id = mysql_real_escape_string($_GET['id']);
$choose = mysql_query("SELECT * FROM posts where `id` = \"$id\"");
$row = mysql_fetch_assoc($choose);
if (empty($row)) {
echo 'Запись не найдена';
exit();
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><?php echo $row['title']; ?></title>
</head>
<body>
<blockquote style=" background-color: #eee;">
<img src="<?php echo $row['image'] ?>" alt="noalt" align="right" border="1" width="100">
<h1><?php echo $row['title']; ?></h1>
<p><small><?php echo $row['date']; ?></small></p>
<p><?php echo $row['content']; ?> <a href="/">На главную</a></p><hr>
</blockquote>
</body>
</html>
Файл post.php кладете в корень к примеру и обращаетесь www.site.ru/post.php?id=1 и получите запись (при условии что ).
Если вы хотите такой url кау вас нужно использовать ModRewrite если вы используете Apache
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники