-
Posts
367 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Store
Everything posted by Gold Dragon
-
Вот написал немного простой реализации 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; }
-
Вообще-то HTML - это язык разметки. Т.ч. все действия у клиента всё таки должен делать скрипт. Во-вторых, refresh при нормальных настройках браузеров и антивирусов заблокируется и страница не будет перегружаться Ну и в-третьих, не использование javascript - это принципиально?
-
assd18, ты лучше покажи дамп таблиц и скажи что ты хочешь найти
-
тогда зайди на сайт поддержки и спроси.. в чём проблема то? И наверняка у сервера есть какая-то утилита для чтения логов
-
milkeyway, есть хороший выход. Напиши администрации сервера в какой программе можно просмотреть их логи
-
записано в 16-ный коде
-
NS о чём? 4.xx и бывает Strict. и это в том числе и синтаксис.. и валидатор потребует закрыть тег Не буду спорить, но что-то такое первый раз слышу Наоборот порядка больше когда открывается и закрывается...Ну да ладно, это тема другого вопроса..
-
http://www.php.su/functions/?cat=mysql http://www.php.su/functions/?mysql-query
-
ну да, ну да... каждому своё, но я люблю Strict и XML правила.. Но хотя спецификация HTML5 пишет определённые условия для этого: И на сколько я понял английский, Гугля тоже советует, но с осторожностью.
-
PS кстати, тэг P - это парный тэг, так что он должен и открываться и закрываться.. Хотя можно и без закрытия, но это не валидно, особенно HTML5
-
например так можно попробовать $a = "сайт http://www.ru - это суперсайт"; $b = preg_replace("#(http://www.ru)#", '<a href="\\1">\\1</a>', $a); echo $b;
-
не понимаю проблемы... Ты с PHP как вообще? попробуй посмотреть хотя бы функцию str_replace(). И кстати, если жать на "ентер", то строка делится этим: "\n" или "\r\n" (в зависимости от OC, если не ошибаюсь) можно попробовать например так.. $text = '...............'; $result = '<p>' . str_replace(array("\n","\r\n"), "</p><p>", $text) . '</p>'; echo $result;
-
ты где такую строку берёшь?
-
Не спорю(!) Но только исключительно для предупреждения, а не для проверки. Безопасности это не очень поможет Хотя я бы воспользовался валидатором при вводе: можно использовать нововведения в HTML5, можно воспользоваться уже созданными плагинами к jQuery, ну или самому написать. не буду Я люблю делать красивые сайты и удобные для пользователей. Нравится им пулится просто в текст, ну что ж, я не против.. Пусть живут в прошлом десятилетии в любом случае не правильно. Я сам иногда ошибаюсь и вместо "0" нажимаю "-" или вместо "1" нажимаю "ё". Нужно, мне кажется, пользователю в такой ситуации дать возможность исправить ошибку, а не игнорировать.А по почте особо вообще никакой задачи не стояло, так что просто обозначил Действительно, непонятно куда и что отсылается.. На mail ли
-
и это правильно NeoXidizer, ну ты навертел я ведь только обозначил решение.. Ну коль ты так, то тогда чуть расширю. Во-первых, по регулярки. Твоё исправление может боком выйти для автора вопроса. Ты пошёл самым простым путём и решил число сразу привести в соответствие при помощи intval(). Теперь почему нет - мы не знаем какое число будет складываться, да и вообще что будет складываться. Это может быть и большое число, и дробное число, и число не в десятичном виде. В моём варианте достаточно поменять условие в регулярке. В твоём - перестраивать логику кода. - твой код пропустит строки типа "23ру" или "ло": он всё превратит в ноль. А это значит что в итоге всё равно будет число - Твои условия становятся абсолютно не работоспособными если одно из чисел будет ноль Во-вторых, проверка на стороне JS - это просто нецелесообразно. Это же проверка на стороне клиента. Коль мы используем Ajax, то всё же безопаснее и правильнее делать это на стороне сервера. В-третьих, я даже и не рассчитываю на людей которые отключают JS Ну это просто глупо в наше время.. В-четвёртых. Однозначно кнопка будет активироваться при любом варианте: и ошибочном и правильном.. Если честно, то я это сделал лишь только для того чтобы показать возможность. Я бы вообще сделал чтобы при успешном прохождении проверки с сервера возвращался целый код кнопки с функцией отправки Т.е. алгоритм следующий - отсылаем данные на сервер - проверяем - если не верно, то отправляем предупреждение - если верно, то блокируем (удаляем) поля для ввода новых данных, отправляем код кнопки отправки, отправляем код с кнопкой редактировать результат Ну и напоследок про безопасность отправки данных.. Тут вообще ни каких проблем.. Отсылаем то результат в теле письма, т.ч. нет ни каких проблем сделать его "безопасным" даже стандартными функциями ps я вообще помешанный малость на безопасности. Вчера когда начал писать код, понял что просто запутаю товарищей. Вот решил и малость упростить. Но если сама идея пода правильная, то могу выложить почти полный "безопасный" код Там я ещё и выпадающий список предусмотрел с арифметическими функциями, мало ли понадобится не только складывать...
-
в общем было время и сделал супер простенький 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 сделал пару проверок на валидность введённых данных и на безопасность запроса
-
Я что-то не допонимаю или.... ? а что мешает по нажатию на кнопку выполнить JS-скрипт и вернуть FALSE дабы форма не ушла в отправку? Хотя с другой стороны, если вопрос в этой теме и нужно чтобы всё работало без перезагрузки, то Ajax спасёт. Самый лучший способ воспользоваться jQuery
-
Дочитай учебник до конца или начни читать сначала или найди нормальный (другой). За одно узнаешь когда используются двойные кавычки, а когда одинарные, для чего нужны фигурные скобки..... PS это клиника. в этом случае уже не помочь
-
http://www.php.net/ http://php.su/
-
Никогда не парился по этому вопросу, особенно по поводу нагрузки на сайт.. Просто любой CSS и даже все которые будут использоваться на сайте меньше по размеру, например, фонового изображения Да и сколько реально этих префиксов используется??? С десяток, ну пусть с два десятка.. да и то в основной массе тень и округлые рамки
-
Есть такое слово, именное самое оно в данном случае
-
kilogram, последняя фраза http://forum.vingrad.ru/index.php?showtopic=349994&view=findpost&p=2478133
-
я думаю что связующая таблица будет оптимальнее.. Например не нужно дополнительно обрабатывать поле в котором хранятся ID категорий, а сразу делать выборку в запросе. Правильная организация индексов и кеширования намного прибавят скорости
-
Задача была не "присутствует", а "начинается с" По этому мы напрямую обращаемся в первой знаку ключа.. И по моему, strpos() будет медленнее работатьБыколай, не только вижу, но и ничего поделать не смог... Каким-то странным образом при сохранении поста парсер превращает строчную букву в заглавную... Так и не смог исправить вчера