PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (12): « 1 2 [3] 4 5 6 7 8 9 ... » В конец

> Найдено сообщений: 166
Doox911 Отправлено: 18 Июля, 2018 - 07:57:54 • Тема: Как работает эта регулярка? • Форум: Вопросы новичков

Ответов: 21
Просмотров: 835
Строитель пишет:
Doox911, для такого шаблона /[А-ЯЁа-яё]+/iu указывать регистронезависимый модификатор i как-то бессмысленно ... Можно сократить запись:
/[а-яё]+/iu

Да согласен. На просторах рунета пишут как я))) Наверно такие же умельцы..
А юникод потому что некоторые русские символы не влезли?
Doox911 Отправлено: 18 Июля, 2018 - 07:41:59 • Тема: Форма добавления комментариев • Форум: Вопросы новичков

Ответов: 5
Просмотров: 277
Andry пишет:
Не могу сообразить как реализовать привязку id статьи с id комментария, подскажите пожалуйста что я не так сделал и как мне исправить положение)

PHP:
скопировать код в буфер обмена
  1.  
  2. $db = new PDO('mysql:host=localhost;dbname=monorailsbase', 'root', '');
  3. $db->exec("SET NAMES UTF8");
  4.  
  5. if(count($_POST) > 0){
  6.  $name = trim($_POST['name']);
  7.  $text = trim($_POST['text']);
  8.  $mail = trim($_POST['mail']);
  9.  $id_page = $_GET['id'];
  10.  
  11.  $text = htmlspecialchars($text);
  12.  $name = htmlspecialchars($name);
  13.  $mail = htmlspecialchars($mail);
  14.  
  15.  if($name != '' && $text != '' && $mail != '') {
  16.   $query = $db->prepare("INSERT INTO comment_form SET name=:name, text=:text, mail=:mail, id_page=:id_page");
  17.  
  18.   $params = ['name'=>$name,'text'=>$text,'mail'=>$mail, 'id_page'=>$id_page] ;
  19.   $query->execute($params);
  20.   exit(0);
  21.  }
  22. }
  23.  $id_page=$_POST['id_page'];
  24.  $id_page = "%$id_page%";
  25.  $query = $db->prepare("SELECT * FROM comment_form WHERE id_page LIKE ?");
  26.  $query->execute(array($id_page));
  27.  $comments = $query->fetchAll();
  28.  


CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form method="post" action="/articles/article.php?id=<?php echo $_GET['id'];?>" class="comment-form">
  3. <h3>Leave A Message</h3>
  4. <div class="row">
  5. <div class="form-group col-md-6">
  6. <input type="text" name="name" placeholder="Your Name*" class="form-control" value="<?php echo $name;?>">
  7. </div>
  8. <div class="form-group col-md-6">
  9. <input type="text" name="mail" placeholder="Email Addr" class="form-control" value="<?php echo $mail;?>">
  10. </div>
  11. <div class="form-group col-md-12">
  12. <textarea name="text" placeholder="Your Comment*" rows="8" class="form-control" value="<?php echo $text;?>"></textarea>
  13. </div>
  14. <input type='hidden' name='id' value="<?=$id_page;?>\">
  15. <input type="submit" value="Submit Comment" name="Submit Comment" title="Submit Comment"/>
  16. </div>
  17. </form>
  18.  

1. Где не можете сделать привязку БД, скрипт?
2. Я бы в шаблоне проверял переменные на существование перед выводом!
PHP:
скопировать код в буфер обмена
  1.  
  2. <input type="text" name="name" placeholder="Your Name*" class="form-control" value="<? if isset ( $name ) { echo $name; } ?>">
  3.  

3. И зачем вы тут используете exit(0)? и как в вашем понимании он должен работать?
PHP:
скопировать код в буфер обмена
  1.  
  2.  if($name != '' && $text != '' && $mail != '') {
  3.   $query = $db->prepare("INSERT INTO comment_form SET name=:name, text=:text, mail=:mail, id_page=:id_page");
  4.  
  5.   $params = ['name'=>$name,'text'=>$text,'mail'=>$mail, 'id_page'=>$id_page] ;
  6.   $query->execute($params);
  7.   exit(0);
  8.  }
  9. }
Doox911 Отправлено: 18 Июля, 2018 - 07:34:46 • Тема: Как лучше производить валидацию? • Форум: Вопросы новичков

Ответов: 9
Просмотров: 287
Мелкий пишет:
Берите профилировщик и сравните. Что быстрее, вызов скомпилированной libpcre или userspace реализация. Замечательное место где можно сильно просесть алгоритмически и не заметить - как выбирается следующий символ сравниваемой строки.


Не совсем понял, в каком месте просесть можно алгоритмически?
Doox911 Отправлено: 18 Июля, 2018 - 07:16:39 • Тема: Почему в режиме $strict in_array не верную кодировку? • Форум: Вопросы новичков

Ответов: 8
Просмотров: 461
Vladimir Kheifets пишет:

Причина в том, Вы выбираете по одному байту, а для каждый символа кириллицы в UTF-8 нужно выбирать по 2 байта и для строки "АаБбВв" strlen выдаёт значение 12, а не 6.
Спойлер (Отобразить)
Удачи!


О_о! Спасибо! Для кирилици получается два байта.
(Добавление)
armancho7777777 пишет:
PHP:
скопировать код в буфер обмена
  1. $word = 'Привет';
  2. $len = mb_strlen($word, 'UTF-8');
  3.  
  4. for($i=0; $i < $len; $i++) {
  5.     echo mb_substr($word, $i, 1, 'UTF-8'), "\n";
  6. }
  7.  

А вообще, Вашу задачу можно решить одной строкой кода:
PHP:
скопировать код в буфер обмена
  1. $clear_string = preg_replace (["/[^а-яё\d ]/ui", "/ +/"], ["", " "], $word);


Я вот покурил мануалы и не совсем понимаю, вы написали регулярку которая делает так:
Оставь мне только русский символ, любого регистра в юникоде. и если найдёшь более одного пробела замени его на один. Но ведь ^ после [ это считается исключающем? Т.е. Не оставь мне русские буквы а наоборот. Почему получается так, что работает по первому сценарию?
Doox911 Отправлено: 17 Июля, 2018 - 08:50:15 • Тема: Почему в режиме $strict in_array не верную кодировку? • Форум: Вопросы новичков

Ответов: 8
Просмотров: 461
Делаю вот такую проверку:
PHP:
скопировать код в буфер обмена
  1.  
  2.     public static function CheckRussianLanguage ( $string ) {
  3.         $alfavit = array (' ','А','а','Б','б','В','в','Г','г','Д','д','Е','е','Ё',
  4.                          'ё','Ж','ж','З','з','И','и','Й','й','К','к','Л','л','М','м',
  5.                          'Н','н','О','о','П','п','Р','р','С','с','Т','т','У','у','Ф',
  6.                          'ф','Х','х','Ц','ц','Ч','ч','Ш','ш','Щ','щ','Ъ','ъ','Ы','ы',
  7.                          'Ь','ь','Э','э','Ю','ю','Я','я','0','1','2','3','4','5','6','7','8','9');
  8.         $dlinna_str = strlen ( $string );
  9.         $clear_string = '';
  10.         for ( $count = 0; $count<$dlinna_str; $count++ ) {
  11.             var_dump($string[$count]);
  12.            
  13.             $check = in_array ( $string[$count], $alfavit, true );
  14.             if ( $check ) {
  15.                 $clear_string .= $string[$count];
  16.             }
  17.         }
  18.         $clear_string = preg_replace ( "/ {1,}/", " ", $clear_string );
  19.         return $clear_string;
  20.     }
  21.  


При не строгом режиме пропускает всё. В чём может быть причина?
Вывожу var_dump

string(1) "�"
string(1) "�"
string(1) "�"
string(1) "�"
string(1) "�"
string(1) "�"
string(0) ""
Doox911 Отправлено: 17 Июля, 2018 - 07:11:14 • Тема: Как лучше производить валидацию? • Форум: Вопросы новичков

Ответов: 9
Просмотров: 287
andrewkard пишет:
Любым удобным для Вас способом. Нужно сделать на клиенте и на сервере. На сервере обязательно.

Это то понятно) Просто у меня друг хранит в массиве весь алфавит и разрешенные символы и входящую строку сравнивает. Регулярка требовательна к ресурсам.
Doox911 Отправлено: 16 Июля, 2018 - 17:51:28 • Тема: Как лучше производить валидацию? • Форум: Вопросы новичков

Ответов: 9
Просмотров: 287
Добрый вечер. Сегодня созрел интересный вопрос. А как лучше проводить валидацию input?
Например мне необходимо чтобы остались только русские буквы и всё. Варианты:
1. Регуляркой;
2. По символьно (массив символов).
Что из этого быстрее и качественнее? Может есть ещё способ менее затратный по ресурсам?
Поделитесь опытом.
Doox911 Отправлено: 16 Июля, 2018 - 17:42:10 • Тема: Как работает эта регулярка? • Форум: Вопросы новичков

Ответов: 21
Просмотров: 835
Спасибо. Только там работает: /[А-ЯЁа-яё]+/ так. А в php только так: /[А-ЯЁа-яё]+/iu - обязательно юникод указывать надо. Почему?
Doox911 Отправлено: 16 Июля, 2018 - 15:40:59 • Тема: Как работает эта регулярка? • Форум: Вопросы новичков

Ответов: 21
Просмотров: 835
Мелкий пишет:
Ммм, а вы вообще что-нибудь по синтаксису регулярок читали?
1. модификаторы
2. какую кавычку?
3. Это два разных спецсимвола, и их объясняют буквально в любом руководстве. Это не рекурсивная регулярка, а совершенно базовые вещи. + - сокращение для {1,}, $ - конец строки

Я тут немного начал разбираться... Но что такое /msiu?
При попытке оставить только русские буквы
Выдаёт �� хотя там и там utf-8.

Это модификаторы!)

Не получается один пробел оставить между словами(
Doox911 Отправлено: 16 Июля, 2018 - 14:47:55 • Тема: Как работает эта регулярка? • Форум: Вопросы новичков

Ответов: 21
Просмотров: 835
PHP:
скопировать код в буфер обмена
  1. preg_replace('/[^А-ЯЁа-яё]+$/msiu', '', $_POST["new"]);

1. Что такое /msiu?
2. Если кавычку поставлю перед квадратной скобкой вообще не работает.
3. Что означает +$
Doox911 Отправлено: 02 Июля, 2018 - 18:02:52 • Тема: Не находит класс. • Форум: Объектно-ориентированное программирование

Ответов: 6
Просмотров: 2180
В целом сайт работает. А как проверить его корректную работоспособность? То что в этой строке проблема это и так понятно))) PHP выдаёт. Вопрос почему!
Doox911 Отправлено: 02 Июля, 2018 - 15:31:23 • Тема: Не находит класс. • Форум: Объектно-ориентированное программирование

Ответов: 6
Просмотров: 2180
Доброго времени суток.

Написал сайт по модели MVC.

При ajax запросе выдаёт:
PHP:
скопировать код в буфер обмена
  1.  
  2. PHP Fatal error:  Class 'User' not found in
  3.  


Каждый класс в отдельном файле. Подгружаю классы так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. /*
  4. */
  5. function __autoload($class_name){
  6.         $array_paths = array(
  7.                 '/models/',
  8.                 '/components/'
  9.         );
  10.  
  11.         foreach ($array_paths as $path) {
  12.                 $path = ROOT . $path . $class_name . '.php';
  13.                 if (is_file($path)) {
  14.                         include_once $path;
  15.                 }
  16.         }
  17. }
  18.  

В контроллере вызываю метод:
PHP:
скопировать код в буфер обмена
  1.  
  2. $mail->isSMTP();
  3. $mail->Host = 'smtp.yandex.ru';
  4. $mail->SMTPAuth = true;
  5. $mail->Username = '***';
  6. $mail->Password = '***';
  7. $mail->SMTPSecure = 'ssl';
  8. $mail->Port = 465;
  9. $mail->CharSet = 'UTF-8';
  10. $mail->setFrom( '***', 'ООО "Фирма"' );
  11. $mail->addAddress( User::getUserEmail() );
  12. $mail->isHTML(true);
  13. $mail->Subject = 'Смена статуса';
  14. $mail->Body    = $text;
  15. $mail->send();
  16.  

В чём прикол? Ничего до вызова метода не вывожу.
(Добавление)
записал результат в переменную до объявления объекта phpmailer, ошибка пропала. Я так понимаю phpmailer мог уже заголовки отправить?
Doox911 Отправлено: 21 Мая, 2018 - 16:01:17 • Тема: Как убрать в WP все type="text/...."? • Форум: CMS и фреймворки

Ответов: 0
Просмотров: 1577
Сайт из-за type="text/javascript" и type="text/css" не проходит валидацию.
Пробовал везде советуемый метод:
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. add_filter('style_loader_tag', 'clean_style_tag');
  4.  
  5. function clean_style_tag($src) {
  6.     $src = str_replace("type='text/css'", '', $src);
  7.     $src = str_replace('type="text/css"', '', $src);
  8.     return $src;
  9. }
  10.  
  11. add_filter('script_loader_tag', 'clean_script_tag');
  12.  
  13. function clean_script_tag($src) {
  14.     $src = str_replace("type='text/javascript'", '', $src);
  15.     $src = str_replace('type="text/javascript"', '', $src);
  16.     return $src;
  17. }
  18.  
  19.  


Что-то руками убрал. Неужели придётся в ядро лезть и в плагины? Может есть более разумный вариант?
Doox911 Отправлено: 15 Мая, 2018 - 09:14:01 • Тема: Не работает инициализация макси для email в RobinHerbots/Inputmask • Форум: JavaScript & VBScript

Ответов: 2
Просмотров: 765
Sail пишет:
Doox911 пишет:
В поле емаил ничего не происходит

Может, в консоли js (инструменты разработчика в браузере) ошибку какую-нибудь пишет?
PS: Код для email-маски брали из Usage?
На что влияет "cardinality: 1,"?

Ошибок нет. Про код для email. Да.
Честно говоря, забыл. Сейчас емаил работает. А вот поле с маской под телефон, после отправки формы пропадает). Код не изменился.

Решение:
1. Поле с телефоном необходимо брать по id.
2. Поле с типом email не поддерживается. Подробнее об этом баге в на гите.
Doox911 Отправлено: 08 Мая, 2018 - 09:34:58 • Тема: Какова нагрузка на сервер при вкл функции SSI? • Форум: Apache и другие веб-серверы

Ответов: 0
Просмотров: 500
Какова нагрузка на сервер при вкл функции SSI? На обычном или VPS?

Страниц (12): « 1 2 [3] 4 5 6 7 8 9 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB