Jump to content

Gold Dragon

User
  • Posts

    367
  • Joined

  • Last visited

Everything posted by Gold Dragon

  1. Gold Dragon

    ЧПУ в PHP

    Вот написал немного простой реализации 1. Создаёшь файл .htaccess 2. Закидываешь туда строки RewriteEngine on Options +FollowSymlinks RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L,QSA] 3. В обработчике (index.php) делаешь это // проверяем на корректность адреса в адресной строке if(ltrim(strpos($_SERVER['REQUEST_URI'], 'index.php'), '/') == 1 AND $_SERVER['REQUEST_METHOD'] == 'GET'){ //Преобразование URL`а $link = getUrlToSef('index.php?' . $_SERVER['QUERY_STRING']); // Переадресация на SEF-адрес header("Location: " . $link, TRUE, 301); exit(301); } // получаешь массив страниц $url = explode('/', $_SERVER['REQUEST_URI']); // определяешь основной переход $pages = (isset($url[1])) ? $url[1] : ''; switch ($pages) { // обрабатываем страницу blog case 'blog': // получаем ID $id = (isset($url[2])) ? intval($url[2]) : 0; // передаём на обработку fBlog($id); break; // обрабатываем страницу article case 'article': // получаем ID $id = (isset($url[2])) ? intval($url[2]) : 0; // передаём на обработку fArticle($id); break; // обрабатываем страницу about case 'about': // передаём на обработку fAbout(); break; default : fDefault(); } // функция для обработки страницы по умолчанию function fBlog($id=0){ // ....... } // функция для обработки страниц Blog function fBlog($id=0){ // ....... } // функция для обработки страниц Article function fArticle($id=0){ // ....... } // функция для обработки страниц About function fAbout(){ // ....... } // функция для "нормализации" адреса function getUrlToSef($link){ // Оснавная обработка $link = str_replace('&', '&', $link); // Разбирает URL и возвращает его компоненты $url = parse_url($link); // проверяем часть fragment (после знака диеза #) $fragment = ''; if(isset($url['fragment'])){ // Проверка на валидность if(preg_match('@^[A-Za-z][A-Za-z0-9:_.-]*$@', $url['fragment'])){ $fragment = '#' . $url['fragment']; } } // проверяем часть query после знака вопроса ? if(isset($url['query'])){ // специальная обработка для javascript $url['query'] = stripslashes(str_replace('+', '%2b', $url['query'])); // очистить возможные атаки XSS $url['query'] = preg_replace("'%3Cscript[^%3E]*%3E.*?%3C/script%3E'si", '', $url['query']); // разбиваем строку (URL) на части parse_str($url['query'], $parts); // формируем ссылку $link = ''; foreach($parts as $value){ $link .= $value . '/'; } } // формируем ссылку $link = $_SERVER['HTTP_HOST'] . '/' . $link . $fragment; // возвращаем ссылку return $link; }
  2. Вообще-то HTML - это язык разметки. Т.ч. все действия у клиента всё таки должен делать скрипт. Во-вторых, refresh при нормальных настройках браузеров и антивирусов заблокируется и страница не будет перегружаться Ну и в-третьих, не использование javascript - это принципиально?
  3. assd18, ты лучше покажи дамп таблиц и скажи что ты хочешь найти
  4. тогда зайди на сайт поддержки и спроси.. в чём проблема то? И наверняка у сервера есть какая-то утилита для чтения логов
  5. milkeyway, есть хороший выход. Напиши администрации сервера в какой программе можно просмотреть их логи
  6. записано в 16-ный коде
  7. NS о чём? 4.xx и бывает Strict. и это в том числе и синтаксис.. и валидатор потребует закрыть тег Не буду спорить, но что-то такое первый раз слышу Наоборот порядка больше когда открывается и закрывается...Ну да ладно, это тема другого вопроса..
  8. http://www.php.su/functions/?cat=mysql http://www.php.su/functions/?mysql-query
  9. ну да, ну да... каждому своё, но я люблю Strict и XML правила.. Но хотя спецификация HTML5 пишет определённые условия для этого: И на сколько я понял английский, Гугля тоже советует, но с осторожностью.
  10. PS кстати, тэг P - это парный тэг, так что он должен и открываться и закрываться.. Хотя можно и без закрытия, но это не валидно, особенно HTML5
  11. например так можно попробовать $a = "сайт http://www.ru - это суперсайт"; $b = preg_replace("#(http://www.ru)#", '<a href="\\1">\\1</a>', $a); echo $b;
  12. не понимаю проблемы... Ты с PHP как вообще? попробуй посмотреть хотя бы функцию str_replace(). И кстати, если жать на "ентер", то строка делится этим: "\n" или "\r\n" (в зависимости от OC, если не ошибаюсь) можно попробовать например так.. $text = '...............'; $result = '<p>' . str_replace(array("\n","\r\n"), "</p><p>", $text) . '</p>'; echo $result;
  13. ты где такую строку берёшь?
  14. Gold Dragon

    Submit и PHP

    Не спорю(!) Но только исключительно для предупреждения, а не для проверки. Безопасности это не очень поможет Хотя я бы воспользовался валидатором при вводе: можно использовать нововведения в HTML5, можно воспользоваться уже созданными плагинами к jQuery, ну или самому написать. не буду Я люблю делать красивые сайты и удобные для пользователей. Нравится им пулится просто в текст, ну что ж, я не против.. Пусть живут в прошлом десятилетии в любом случае не правильно. Я сам иногда ошибаюсь и вместо "0" нажимаю "-" или вместо "1" нажимаю "ё". Нужно, мне кажется, пользователю в такой ситуации дать возможность исправить ошибку, а не игнорировать.А по почте особо вообще никакой задачи не стояло, так что просто обозначил Действительно, непонятно куда и что отсылается.. На mail ли
  15. Gold Dragon

    Submit и PHP

    и это правильно NeoXidizer, ну ты навертел я ведь только обозначил решение.. Ну коль ты так, то тогда чуть расширю. Во-первых, по регулярки. Твоё исправление может боком выйти для автора вопроса. Ты пошёл самым простым путём и решил число сразу привести в соответствие при помощи intval(). Теперь почему нет - мы не знаем какое число будет складываться, да и вообще что будет складываться. Это может быть и большое число, и дробное число, и число не в десятичном виде. В моём варианте достаточно поменять условие в регулярке. В твоём - перестраивать логику кода. - твой код пропустит строки типа "23ру" или "ло": он всё превратит в ноль. А это значит что в итоге всё равно будет число - Твои условия становятся абсолютно не работоспособными если одно из чисел будет ноль Во-вторых, проверка на стороне JS - это просто нецелесообразно. Это же проверка на стороне клиента. Коль мы используем Ajax, то всё же безопаснее и правильнее делать это на стороне сервера. В-третьих, я даже и не рассчитываю на людей которые отключают JS Ну это просто глупо в наше время.. В-четвёртых. Однозначно кнопка будет активироваться при любом варианте: и ошибочном и правильном.. Если честно, то я это сделал лишь только для того чтобы показать возможность. Я бы вообще сделал чтобы при успешном прохождении проверки с сервера возвращался целый код кнопки с функцией отправки Т.е. алгоритм следующий - отсылаем данные на сервер - проверяем - если не верно, то отправляем предупреждение - если верно, то блокируем (удаляем) поля для ввода новых данных, отправляем код кнопки отправки, отправляем код с кнопкой редактировать результат Ну и напоследок про безопасность отправки данных.. Тут вообще ни каких проблем.. Отсылаем то результат в теле письма, т.ч. нет ни каких проблем сделать его "безопасным" даже стандартными функциями ps я вообще помешанный малость на безопасности. Вчера когда начал писать код, понял что просто запутаю товарищей. Вот решил и малость упростить. Но если сама идея пода правильная, то могу выложить почти полный "безопасный" код Там я ещё и выпадающий список предусмотрел с арифметическими функциями, мало ли понадобится не только складывать...
  16. Gold Dragon

    Submit и PHP

    в общем было время и сделал супер простенький Ajax-калькулятор с отправкой результата на почту (функцию mail() писать не стал ) вот основной файл (форма + JS) <!DOCTYPE html> <html> <head> <title>Калькулятор от Gold Dragon</title> <meta charset="utf-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script> </head> <body> <div id="form1"> <form> <p><label for="q1">Число А: </label><input id="q1" type="text"/></p> <p><label for="q2">Число Б: </label><input id="q2" type="text"/></p> <p><input type="button" id="but1" value="Проверить"/><input disabled="disabled" type="button" id="but2" value="Отправить"/></p> </form> </div> <hr/> <div id="form2"></div> <script> $(function () { // просто проверяем $("#but1").click(function () { $.post( "itog.php", { task:"calculation", q1:$("#q1").val(), q2:$("#q2").val()}, function (data) { $("#form2").hide().html(data).show(300); $("#but2").removeAttr("disabled"); } ); }); // отправляем $("#but2").click(function () { $.post( "itog.php", { task:"mail", q1:$("#q1").val(), q2:$("#q2").val()}, function (data) { $("#form2").hide().html(data).show(300); } ); }); }); </script> </body> </html> вот файл itog.php (Обработка Ajax-запроса на стороне сервера) <?php // проверяем а из файла ли вызван скрипт или из адресной строки if(isset($_SERVER['HTTP_REFERER'])){ // получаем данные $task = (isset($_POST["task"])) ? $_POST["task"] : ''; $q1 = (isset($_POST["q1"])) ? $_POST["q1"] : ''; $q2 = (isset($_POST["q2"])) ? $_POST["q2"] : ''; $result = ''; // проверяем число ли А $error = preg_match("#^\d+$#", $q1); if(!$error){ $result .= "<p>Число А не введено или не является числом</p>"; } // проверяем число ли Б $error = preg_match("#^\d+$#", $q2); if(!$error){ $result .= "<p>Число Б не введено или не является числом</p>"; } if($result == ""){ $result .= "<p>Сумма = " . ($q1 + $q2)."</p>"; } if($task == "calculation"){ echo $result; } elseif($task == "mail"){ // тут отправляем куда нужно и делаем что-то ещё $result .= "<p>Данные успешно отправлены на почту!</p>"; echo $result; } else{ echo "Обнаружена попытка взлома кода"; } }else{ echo "Обнаружена попытка взлома кода"; } надеюсь отгадал вопрос Пример можно смело развивать, усложнять, добавлять проверки.. ps сделал пару проверок на валидность введённых данных и на безопасность запроса
  17. Gold Dragon

    Submit и PHP

    Я что-то не допонимаю или.... ? а что мешает по нажатию на кнопку выполнить JS-скрипт и вернуть FALSE дабы форма не ушла в отправку? Хотя с другой стороны, если вопрос в этой теме и нужно чтобы всё работало без перезагрузки, то Ajax спасёт. Самый лучший способ воспользоваться jQuery
  18. Дочитай учебник до конца или начни читать сначала или найди нормальный (другой). За одно узнаешь когда используются двойные кавычки, а когда одинарные, для чего нужны фигурные скобки..... PS это клиника. в этом случае уже не помочь
  19. http://www.php.net/ http://php.su/
  20. Никогда не парился по этому вопросу, особенно по поводу нагрузки на сайт.. Просто любой CSS и даже все которые будут использоваться на сайте меньше по размеру, например, фонового изображения Да и сколько реально этих префиксов используется??? С десяток, ну пусть с два десятка.. да и то в основной массе тень и округлые рамки
  21. Есть такое слово, именное самое оно в данном случае
  22. kilogram, последняя фраза http://forum.vingrad.ru/index.php?showtopic=349994&view=findpost&p=2478133
  23. я думаю что связующая таблица будет оптимальнее.. Например не нужно дополнительно обрабатывать поле в котором хранятся ID категорий, а сразу делать выборку в запросе. Правильная организация индексов и кеширования намного прибавят скорости
  24. Задача была не "присутствует", а "начинается с" По этому мы напрямую обращаемся в первой знаку ключа.. И по моему, strpos() будет медленнее работатьБыколай, не только вижу, но и ничего поделать не смог... Каким-то странным образом при сохранении поста парсер превращает строчную букву в заглавную... Так и не смог исправить вчера
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy