У меня сайт, и на сайте я написал скрипт для анекдотов(типа баша) все сделал на файлах. после добавления анекдот проходит модерацию, когда он еще не отмодерирован он лежит в одном файле. А когда прошла модерация его нужно переместить в другой файл. Я написал модерку для редактированния обоих файлов, он она хренова ппц работает. При обновлении записуюются повторно анекдоты и прочее. Вот файл PHP: <? echo '<html><h1>Модерация</h1><br><br>'; $open = file('anekdotmod.txt'); $anekdot = file('anekdot.txt'); foreach($open as $v); foreach($anekdot as $s); echo ' Анекдоты на модерацию:<br> <form action="adminanekdot.php" method=post> <textarea name=not cols="100" rows="20" wrap="Virtual">'; echo "$v"; echo '</textarea><br> Первый пароль:<br> <input type=text name=pass value="" size=16 maxlength=100><br> <input type=submit name=ok value="Сохранить"><br><br> </form> <br><br>'; echo ' Промодерированые анекдоты:<br> <form action="adminanekdot.php" method=post><br>Ник автора: <br> <input type=text name=nic value="" size=16 maxlength=100><br><br>Анекдот<br> <textarea name=yes cols="100" rows="20" wrap="Virtual">'; echo "$s"; echo '</textarea><br> <br>Пароль для сохранения:<br> <input type=text name=pass value="" size=16 maxlength=100> <input type=submit name=ok value="Сохранить"><br></form> <br><br><br><br>powered by casper'; $yes = ($_POST['yes']); $not = ($_POST['not']); $nic = ($_POST['nic']); $spam = ($_POST['pass']); if("$spam" != '1478963') echo ''; else { echo '<h3>Ок</h3>'; $textis = ("<br>Ник: <strong>$nic</strong><br><div class='bash'><pre>Анекдот: $yes </pre> </div><br>"); $openis = fopen("anekdot.txt", "a"); $write = fwrite($openis, $textis); fclose($openis); } if("$spam" != '123456') echo ''; else { echo '<h3>Ок</h3>'; $textisis = ("$not"); $openisis = fopen("anekdotmod.txt", "a"); $write = fwrite($openisis, $textisis); fclose($openisis); } echo "</html>" ?> Мож кто подскажет что не так ...
еще с детства посоветую код от дизайна отделять. можешь свой шаблонизатор написать или готовые заюзать, типа смарти
1) Говнокод в перемешку с html-кодом увечивает его говнистость 2) $textisis = ("$not"); - Брать переменную в кавычки, да ещё в скобки при присвоении - верх говнистости думаю автор хотел так, но судя по говнокоду это не сильно очевидно : PHP: <?php $me = '2.php'; if (isset($_POST['pass'])) { switch ($_POST['pass']) { case '123456': $text = $_POST['not']; $file = file('anekdot_mod.txt'); file_put_contents('anekdot_mod.txt', array_slice($file, 1, count($file))); file_put_contents('anekdot_post_mod.txt', $text, FILE_APPEND); echo('<h3>Mod Ок</h3>'); break; case '1478963': $text = '<br>Ник: <strong>' . $_POST['nick'] . '</strong><br><div class="bash"><pre>Анекдот: ' . $_POST['yes'] . '</pre></div><br>'; $file = file('anekdot_post_mod.txt'); file_put_contents('anekdot_post_mod.txt', array_slice($file, 1, count($file))); file_put_contents('anekdot.txt', $text, FILE_APPEND); echo('<h3>Post Mod Ок</h3>'); break; } } $anek_mod = file('anekdot_mod.txt'); $anek_post_mod = file('anekdot_post_mod.txt'); echo('<html> <h1>Модерация</h1> <br><br>Анекдоты на модерацию:<br> <form action="' . $me . '?" method="post"> <textarea name="not" cols="100" rows="20" wrap="Virtual">' . $anek_mod[0] . '</textarea> <br>Первый пароль:<br> <input type="text" name="pass" size="16" maxlength="100"><br> <input type="submit" name="ok" value="Сохранить"> <br><br> </form> <br><br>Промодерированые анекдоты:<br> <form action="' . $me . '?" method="post"> <br>Ник автора:<br> <input type="text" name="nick" value="" size=16 maxlength=100> <br><br>Анекдот<br> <textarea name="yes" cols="100" rows="20" wrap="Virtual">' . $anek_post_mod[0] . '</textarea> <br><br>Пароль для сохранения:<br> <input type="text" name="pass" size="16" maxlength="100"> <input type="submit" name="ok" value="Сохранить"> <br> </form> <br><br> Говнокод (c) powered by casper </html>'); ?> Обязательное наличие 3х файлов иначе ошибки! Суть: при работе с первой формой, из файла anekdot_mod.txt берётся первая строчка-анекдот и вставляется в текстовое поле.... юзер модериует..... и после модерации она доабвляется в anekdot_post_mod.txt, при этом удаляясь из anekdot_mod.txt при работе со сторой формой - суть та же, только другие файлы и вставляет форматированный текст + ник p.s. без постобработки черевато завести LFI и RFI
FireFenix, я непойму в твоем коде, как сделать запись в начало файла. Что б каждая новая запись писалась в начало, без обнуления.
+casper+ это: file_put_contents('anekdot.txt', $text, FILE_APPEND); на: file_put_contents('file.txt', $text . file_get_contents('file_2.txt')); Юзани поиск по документу
scrat Как бы нужно, зачем насиловать файловую систему, чтобы добавить строку в начало файла? (А при определенном пороге - скрипт подохнет, потому что памяти для ПХП хватать перестанет) Не нравится мускуль - пусть использует sqlite, как тут говорилось выше