Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Создание html-файла из формы + редактиование
yotobo  
 ۩  [x]    Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 17
Пользователь №: 37458
На форуме: 3 года, 6 месяцев, 15 дней
Карма:




Здравствуйте, гуру PHP. Нужна ваша помощь, запутался совсем уже. Стоит задача: сделать возможность создавать html-страницы с заданным именем и контентом, а также их редактировать. Сначала все создавалось и работало, но что-то накрутил и в итоге совсем запутался в коде.


<?
if(!empty($_GET['edit_page']))
{
$content = file_get_contents('pages/'.$_GET['edit_page'].'.html');
}
echo "<hr><h2>Создание страниц</h2>";
echo "<form method='post' action=''><label>Название страницы</label><input type='text' id='pagename' name='pagename'><br><label>Контент страницы</label><br><textarea class='add' name='content'>$content</textarea><br><input type='submit' value='Создать страницу' />
</form>"
;
echo "<hr><h2>Редактор страниц</h2>";
$all_files = scandir('pages');
foreach($all_files as $one_file)
{
if(!is_dir($one_file))
{
if(pathinfo($one_file, PATHINFO_EXTENSION) == 'html')
{
$file_name = explode('.', $one_file);
echo '<a href="?edit_page='.$file_name[0].'">'.$file_name[0].'</a><br/>';
}
}
}

if(!empty($_GET['edit_page']))
{
$content = file_get_contents('pages/'.$_GET['edit_page'].'.html');
echo "<form method='post' action=''><textarea class='edit' name='content'>$content</textarea><br><input type='submit' value='Сохранить страницу' />
</form>"
;
}
?>


Сам скрипт в сборе прилагаю.
Заранее всем благодарен за помощь!


Присоединённый файл ( Кол-во скачиваний: 0 )
Присоединённый файл  siteeditor.zip
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25980
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 18 дней
Карма: 725

Не курю:
1 год, 2 месяца, 4 дня


чё именно то не работает?

2016 год на дворе. весь контент в бд уж давно держат. поиск осуществлять значительно легче по контенту становиться


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25980
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 18 дней
Карма: 725

Не курю:
1 год, 2 месяца, 4 дня


Цитата
siteeditor.


а.. понятно. CMS это)


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
yotobo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 17
Пользователь №: 37458
На форуме: 3 года, 6 месяцев, 15 дней
Карма:




Цитата (Игорь_Vasinsky @ 11.05.2016 - 15:16)
Цитата
siteeditor.


а.. понятно. CMS это)

Нет, это не CMS. Самописный скрипт. Как раз-таки БД мне не нужна.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
yotobo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 17
Пользователь №: 37458
На форуме: 3 года, 6 месяцев, 15 дней
Карма:




С редактированием я разобрался. Теперь, как создавать эти html-страницы и чтобы они появлялись в списке всех страниц?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3375
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 5 дней
Карма: 170




Цитата (yotobo @ 11.05.2016 - 12:39)
Сначала все создавалось и работало, но что-то накрутил и в итоге совсем запутался в коде.

Есть два типа админов:
1. которые делают бекапы.
2. которые теперь тоже делают бекапы.

По существу:
У тебя 2 формы с методом отправки POST, но ни одного обработчика.
Обе эти две формы не подлежат идентификации. Получив данные через POST ты не поймешь, это пришли данные для существующей страницы или для создания новой.
Для начала добавь в каждую из форм скрытые поля, типа <input type='hidden' name='edit'> в форму редактирования
и <input type='hidden' name='create'> в форму создания

Когда заматереешь, перенеси это все в сессии, да с токенами, чтобы невозможно было манипулировать передаваемыми параметрами.

Ну и собственно, обработчики для POST


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
yotobo  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 17
Пользователь №: 37458
На форуме: 3 года, 6 месяцев, 15 дней
Карма:




Сейчас есть возможность редактировать существующие html-файлы в папке pages


<?
$all_files = scandir('pages');
foreach($all_files as $one_file){
if(!is_dir($one_file)){
if(pathinfo($one_file, PATHINFO_EXTENSION) == 'html'){
$file_name = explode('.', $one_file);
echo '<a href="?edit_page='.$file_name[0].'">'.$file_name[0].'</a><br/>';
}
}
}


if(!empty($_GET['edit_page']))
{
$content = file_get_contents('pages/'.$_GET['edit_page'].'.html');
}
if(!empty($_POST['newd']) and isset($_POST['save']))
{
$file = fopen ('pages/'.$_GET['edit_page'].'.html', 'w+');
if (!$file )
echo("Ошибка открытия файла");
else
fputs ($file, $_POST['newd']);
fclose ($file);
$content = $_POST['newd'];

}
echo '
<form action="" method="post">
<textarea name="newd">'
.$content.'</textarea>
<br><input type="submit" name="save" value="Сохранить">
</form>
'
;
?>

Теперь вопрос, как создавать другие файлы html ?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3375
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 5 дней
Карма: 170




Цитата (yotobo @ 11.05.2016 - 15:23)
Теперь вопрос, как создавать другие файлы html ?

Ну точно так же жеж.

Читаем http://php.net/manual/ru/function.fopen.php
Цитата
'w+' Открывает файл для чтения и записи; помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует - пытается его создать.

Но, в целях предотвращения говнокода, мы пойдем другим путем и выберем
Цитата

'x' Создаёт и открывает только для записи; помещает указатель в начало файла. Если файл уже существует, вызов fopen() закончится неудачей, вернёт FALSE и выдаст ошибку уровня E_WARNING. Если файл не существует, попытается его создать. Это эквивалентно указанию флагов O_EXCL|O_CREAT для внутреннего системного вызова open(2).

Т.е. сама процедура создания файла точно такая же.
Единственно, что нужно, это сначала убедиться, что файл НЕ существует, иначе php нагадит в логи и вообще неприятно.....

Далее - это ты для себя пишешь, или куда-то?
Потому что вот так вот делять нельзя!!!
fputs ($file, $_POST['newd']);

В контент отправляем
<?php 
//злые хакеры вставили исполняемый код
?>
и всё, сервер бери-не хочу, делай что хочешь.


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
yotobo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 17
Пользователь №: 37458
На форуме: 3 года, 6 месяцев, 15 дней
Карма:




AllesKlar На счет безопасности, я в курсе, что дыряво всё. Но это для небольшого проекта и тем более там все закрыто через .htpassw. Спасибо, что объяснил суть.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
yotobo  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 17
Пользователь №: 37458
На форуме: 3 года, 6 месяцев, 15 дней
Карма:




Вообщем мудрил я с кодом создания страниц. Страница создается, но только расширение без имени. Контент туда пишется.

Форма


<FORM name="artic" method="post" action="addpage.php">
<input
type="text" name="fname" width="20">
<input
type="text" name="triad" width="20" value=".html"><br>
<textarea
name="newd" ROWS=10 COLS=37> </textarea><br>
<input
type="submit" name="save" value="Создать" width="0">
</form>



Обработчик


<?
if (isset($_POST['newd'])) {$newd= $_POST['newd'];}
$fname = $_POST['fname'];
$triad = $_POST['triad'];
$fh = fopen("filelist.txt",'w+');
$i = fgets($fh);
fputs($fh, $i++);
fclose($fh);
$file = $i."".$triad;
$Saved_file = fopen($file,'w+');
fwrite($Saved_file,$newd);
fclose($Saved_file);
?>


Как подставить название к файлу из поля fname?
И если я создам потом файл с другим именем, он не затрет первый?

PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
yotobo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 17
Пользователь №: 37458
На форуме: 3 года, 6 месяцев, 15 дней
Карма:




Всем спасибо! Разобрался наконец-то )))

Вот мож кому надо:


<?
if (isset($_POST['newd'])) {$newd= $_POST['newd'];}
$fname = $_POST['fname'];
$triad = $_POST['triad'];
$file = $fname."".$triad;
$Saved_file = fopen($file,'w+');
fwrite($Saved_file,$newd);
fclose($Saved_file);
?>
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1042
Пользователь №: 41686
На форуме: 1 год, 3 месяца, 23 дня
Карма: 13




Цитата (yotobo @ 11.05.2016 - 17:40)
Но это для небольшого проекта и тем более там все закрыто через .htpassw.

Я бы все-равно сделал
.htaccess:
php_flag engine off
в папке, где лежат созданные подобным образом файлы. Организация этой защиты потребует ровно одной минуты, тем временем сама защита вполне адекватна для private проекта.

Зачем оставлять такую эпичную дыру в безопасности? Кто-нибудь по приколу напакостит, потом ищи-свищи кто и зачем. Оно тебе надо?

$filename = preg_replace('!/!', '', $_GET['edit_page']);


--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
yotobo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 17
Пользователь №: 37458
На форуме: 3 года, 6 месяцев, 15 дней
Карма:




Ron, спасибо за консультацию. Надо будет поработать немного над безопасностью.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса