Народ, привет всем. Чуть освоив язык, написал некое чудное подобие форума. Можете подсказать на ошибки скрипта? Дизайна нет )))) http://destworld.xyz Добавлено спустя 1 минуту 32 секунды: Регистрации нет... в БД пишется пользователь с ником 1
Спасибо.... я это делал два месяца жесть да? учитывая что сначала процедурным, а теперь ООП+MVC Чеки потом, щас регу прилеплю и ЧПУ хочу... А потом все выверну в ММОРПГ ))
а я вот это с другом пилю год почти http://guildwall.ru ну... смотреть надо страницу сообщества например http://guildwall.ru/inquisition или http://guildwall.ru/ruru Там форум тоже есть =) посты, лайки, все дела.
Присоединюсь к тестам. Автор, заодно почитай, что такое XSS. http://dest.hol.es/messages.php?fid=1&tid=43
Как исправил? Корявочка получилась! Ты striptags() чтоли используешь? Допустим мне надо написать товарищу пример с кодом HTML, а ты все теги вырезаешь! Используй htmlspecialchars() или htmlentities(). И делай это при выводе текста, а не при сохранении в базу. Тогда пользователь будет видеть то, что он вводил, а на самом деле в коде все < и > будут заменены на < и > Добавлено спустя 5 минут 25 секунд: Далее: ты используешь тег <pre> чтобы переводы строк работали? Зря! Форумы так не делают. <pre> нужен только при выводе кода (обработка ббкода [code]). А для простого текста делается nl2br() чтобы заменить "\n" на <br>
Вот когда пишешь код в любимой ИДЕ и нажимаешь enter, в текст автоматически вставляется \n, но она не отображается ? Я правильно понимаю ?
вставляется дефолтная для оси последовательность конца строки, если явно не указано что именно использовать. в винде - \r\n, в маках (старых, сейчас вроде как и все никсы стали) - \r, в никсах - \n
nl2br() достаточно умён чтобы делать так: "x\ry" => "x<br/>y" "x\ny" => "x<br/>y" "x\r\ny" => "x<br/>y" "x\r\n\r\ny" => "x<br/><br/>y" Добавлено спустя 2 минуты 36 секунд: в HTML перевод строки отображается как пробел. любая последовательность "пробельных" символов выводится как один пробел.
Ganzal, т.е. если текстовый файл писали на линуксе или маке, то при просмотре в винде форматирование текста полетит ? И почему в пхп мане написано что \r - это перевод каретки в начало строки ? Он разве переводит чтото ? artoodetoo, нет, мне интересно в php файле(да или в любом другом текст. файле) последовательность символов перевода на нов. строку, она по идее ведь должна присутствовать в файле(в тексте), но не отображается в редакторе ?
ничего не "полетит" если умная программа. я вот часто открываю в виндовом блокноте файлики созданные мною под никсами и вижу одну бесконечную строку. а нотпад++ всё понимает. и иде понимают. и браузеры кое-как понимают. возврат каретки перегоняет каретку к началу строки. как на старой печатной машинке движение рукой слева-направо. или на матричном принтере. или на плоттере. или на перфокартах. короче этот термин стар как говно мамонта. но после перевода каретки она фактически находится над тем же текстом что уже напечатала. поэтому делается протяжка линии - продвигается носитель на нужную дистанцию позиции следующей печатной линии. то есть правильно про новую строку делают как раз в винде - перегнал головку, протянул бумажку. но это речь о печати. в интернетах же это всё нафиг не нужно - есть перевод строки значит курсор переходит на офсет ноль следующей строки. и тут возникает разница. никсы говорят что для этого достаточно последовательности "новая линия" что в старой терминологии лишь подтягивала бумажку на пару миллиметров, а в яблочной продукции считают что "возврат каретки" сразу и линию переводит. но я думаю к ним можно было бы прислушиваться с учетом того что они не мало издательского софта и технологий выпустили. но и они мне так кажется перешли на перевод строки символом "новая линия". о да и еще как переводит. но это видно на консольный приложениях - например вывод счетчика и/или прогресса если делать через echo "\r", $cnt то строка будет одна и та же на экране и меняться будет только значение. а по \n ты как раз и начнешь новую строку с нулевой позиции. удобно. но для веба - роли вообще не играет так как браузер рендерит хтмл-разметку а она мало завязана на то какие в ней переводы строк.
Спасибо за столь развёрнутый ответ. Теперь я всё понял. Я просто, наверно как и все остальные неосведомлённые, думал, что \n это тоже самое что enter. А на примере машинки стало всё понятно.
собственно если ты на печатной машинке нажмешь энтер то вал прогонит бумагу на следующую строку но позиция каретки останется той же и для её возврата в крайнее левое положение тебе нужно будет совершить звонкое действие рукой. то есть \n и enter в данном случае - печатной машинки - фактически тождественны и ты думал правильно. но в современных железяках это тождество уже утрачивается.
Вроде учел замечания Переехал на другой хостинг, и домен взял нормальный кому интересно поломать, ломайте, только потом напишите что делали http://destworld.xyz
обычно сырой продукт разрабатывается в рамках 0.х ветки. потом идет стадия 1.0-пререлизов (типа альфа1, альфа2, бета1, бета2, бета3, релизкандидат1, релизкандидат2, арси8) и потом наступает релиз 1.0.0 тестовая версия 1.2.2 просто разрывает любую логику версирования. кстати, мне еще очень нравится система нумерации в перле - все четные миноры являются продакшном (1.0, 1.2, 2.4.1) а все нечетные - девелоперскими (0.9, 1.1, 2.5.99) то есть у тебя сейчас может быть 0.9.55 но никак не 1.2.2