PHP.SU

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

Страниц (98): В начало « ... 90 91 92 93 94 95 96 97 [98]

> Найдено сообщений: 1465
teddy Отправлено: 11 Апреля, 2013 - 12:55:00 • Тема: Конструкция switch • Форум: Вопросы новичков

Ответов: 19
Просмотров: 799
Ничего не помогает Недовольство, огорчение Может я что то записываю не так? И ещё одну ошибку заметил, данный код считает ЛЮБОЙ введенный символ как "Неверный", но при этом если вводить "кол-во" неверных символов более 12, то почему то выдает ошибку "Слишком длинный ник" хотя должно все равно выводить "Вы используете запрещенные символы"...
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if(isset($_POST['submit'])){
  3. $login = trim($_POST['login']);
  4. $password = trim($_POST['password']);
  5.  
  6. switch(true){
  7. case strlen($login)<3:
  8. $e_login = "Поле логин обязательно для заполнения";
  9. break;
  10. case strlen($login)<3:
  11. $e_login = "Слишком короткий ник";
  12. break;
  13. case strlen($login)>12:
  14. $e_login = "Слишком длинный ник";
  15. break;
  16. case $login!==preg_match ( "/^[^-\w\s]$/" , $login ):
  17. $e_login = "Вы используете запрещенные символы";
  18. break;
  19. default:
  20. echo "Ничего не найдено";
  21. }
  22. }
  23.  
  24. ?>


И ещё, когда меняю расположение кейсов, то вообще все становится очень плохо... Тоесть если поставить регулярку в самый верх, то кроме того как "Вы используете запрещенные символы" я ничего не получаю... Почему? Я даже ничего не вводил, а нажал submit, по идее должно было выдать ". Главное что интересно, if-ами точно такой же код нормально работает, а вот с кейсами нет...
teddy Отправлено: 11 Апреля, 2013 - 01:45:11 • Тема: Конструкция switch • Форум: Вопросы новичков

Ответов: 19
Просмотров: 799
LIME пишет:
case preg_match ( "/^[-\w\s]$/" , $login ):

Не работает ( вообще все блокирует, даже буквы
teddy Отправлено: 11 Апреля, 2013 - 01:28:12 • Тема: Конструкция switch • Форум: Вопросы новичков

Ответов: 19
Просмотров: 799
Спасибо, сработало! Только вот прегматч тупит... при if-e работает, а в кейсе что бы не ввел блокирует... надо чтоб только цифры и буквы пропускал если можно помогите плз буду благодарен
teddy Отправлено: 11 Апреля, 2013 - 01:19:59 • Тема: Конструкция switch • Форум: Вопросы новичков

Ответов: 19
Просмотров: 799
Так я же поставил break; не помогает
teddy Отправлено: 11 Апреля, 2013 - 01:01:29 • Тема: Конструкция switch • Форум: Вопросы новичков

Ответов: 19
Просмотров: 799
Доброй ночи. Возникла проблема с использованием switch. Хочу выводить ошибки неверно заполненных полей с помощью него т.к засорять код if-ами считаю неправильным в случае если проверок много.

PHP:
скопировать код в буфер обмена
  1. switch($e_login){
  2. case strlen($login)<3:
  3. $e_login = "Слишком короткий ник"; break;
  4. case strlen($login)>12:
  5. $e_login = "Слишком длинный ник"; break;
  6. case $login!=preg_match("/^[-a-zA-Zа-яА-Я0-9_\s]/",$login):
  7. $e_login = "Вы использовали недопустимые символы"; break;
  8. case strlen($login)<=0:
  9. $e_login = "Поле логин обязательно для заполнения"; break;
  10. default:
  11. echo "Ничего не найдено";
  12. }


Не получаю то, что хочу. Тоесть в данном случае я рассмариваю кейсы так:
case = if - так я понимаю конструкцию т.е исходя из кода я пишу
if(strlen($login)<3) $e_login = "Вы ввели слишком короткий ник"; и так далее с остальными кейсами, по одному нормально все работает, а когда кейсов много ошибки уже выводятся не в том порядке(не соответствуют условию)... Почему так?
(Добавление)
Последний кейс запрещает оставлять поле пустым, но мне почему то вываливается ошибка: Слишком длинный ник. Каким боком она к пустому полю?
teddy Отправлено: 10 Апреля, 2013 - 11:10:13 • Тема: не понимаю регулярные выражения • Форум: Вопросы новичков

Ответов: 1
Просмотров: 104
Помогите плз разобраться с минимумом. Мне нужно понять как это работает, в интернете нашел пару объясняющих ресурсов но прочитав понял что тут без 100 грамм не обойтись Улыбка 100 грамм в данном случае объяснение )
(Добавление)
Нужно сделать так что бы проходили только буквы и цифоы типа a-ZZ-aа-я-А-Я0-9 но точно не знаю как записать
teddy Отправлено: 09 Апреля, 2013 - 13:14:06 • Тема: как создать массив с содержанием ошибок • Форум: Вопросы новичков

Ответов: 5
Просмотров: 761
Вопрос решен, спасибо всем ещё раз за помощь )
teddy Отправлено: 09 Апреля, 2013 - 11:13:49 • Тема: как создать массив с содержанием ошибок • Форум: Вопросы новичков

Ответов: 5
Просмотров: 761
а нельзя сделать вывод ошибок таким? <?php
PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['send'])){
  2. if($_POST['sender'] != ""){
  3. $_POST['sender'] = filter_var($_POST['sender'], FILTER_SANITIZE_STRING);
  4. if($_POST['sender'] == ""){
  5. $error_name = 'Пожалуйста введите корректное имя<br>';
  6. }
  7. }
  8. else{
  9. $error_name = 'Пожалуйста укажите ваше имя <br>';
  10. }
  11. if($_POST['email'] != ""){
  12. $email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
  13. if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
  14. $error_email = "$email не является корректным E-mail адресом";
  15. }
  16. }
  17. else{
  18. $error_email = 'Введите ваш E-mail адрес <br>';
  19. }
  20. if($_POST['content'] != ""){
  21. $_POST['content'] = filter_var($_POST['content'], FILTER_SANITIZE_STRING);
  22. if($_POST['content'] == ""){
  23. $error_content = 'Пожалуйста введите сообщение без использования спец.символов <br>';
  24. }
  25. }
  26. else{
  27. $error_content = 'Пожалуйста, введите текст сообщения <br>';
  28. }
  29. if(!$error_name && !$error_email && !$error_content){
  30. $success = 'Ваше сообщение успешно отправлено <br>';
  31. }
  32.  
  33. }
  34.  
  35. ?>
  36. <html>
  37. <form action='formz.php' method='post'>
  38. <pre>
  39. Имя: <input type="text" name="sender" value="<?PHP echo $_POST['sender']; ?>">
  40. <span class="warning"><?PHP echo $error_name;?></span>
  41. Почта: <input type='text' name='email' value='<?PHP echo $_POST["email"]; ?>'>
  42. <span class="warning"><?PHP echo $error_email;?></span>
  43. Сообщение <textarea name="content"><?PHP echo $_POST['content']; ?></textarea>
  44. <span class="warning"><?PHP echo $error_content;?></span>
  45. <input type="submit" value="Отправить" name="send">
  46. <span class='warning'><?PHP echo $success;?></span>
  47. </pre>


Так мне даже больше нравится и все нормально работает ) А если с массивом выводить ошибки то их не получается упорядочить так как упорядочено в этом примере, во всяком случае у меня ) Хотя можно попробовать по ключам выводить под каждым соответствующем полем, вот только где их достать... по мд5 ведь есть вопрос в шапке топика Улыбка

п.с: не разрешают мне нажимать кнопку спасибо, сообщений маловато (
teddy Отправлено: 09 Апреля, 2013 - 10:07:11 • Тема: как создать массив с содержанием ошибок • Форум: Вопросы новичков

Ответов: 5
Просмотров: 761
Спасибо вам огромное! Идею уловил глядя на ваш код, а по id-не совсем понял реализацию, если можно напишите простой пример а код я дальше уже сам напишу, спасибо ещё раз!!!
(Добавление)
Кстати по ошибкам я так как вы сказали делал но только без массива Улыбка

Про мд5 если тоже кто знает скажите плз буду благодарен Улыбка
teddy Отправлено: 08 Апреля, 2013 - 23:09:30 • Тема: как создать массив с содержанием ошибок • Форум: Вопросы новичков

Ответов: 5
Просмотров: 761
Всем привет. Очень нужна помощь для оптимизации данного скрипта. На сколько я понимаю он написан "криво", как начинающий не совсем понимаю как его оптимизировать. В добавок ко всему хочу выводить ошибки(если логин или другие поля не соответствует требованиям кода - писать типа "Неверный логин или пароль). Как сделать массив ошибок и вываливать его в нужное время что бы не писать кучу if-ов? Т.е сегодня у меня 3 поля, а завтра 10... пол страницы if-ами придется заполнить... Очень буду рад подробному объяснению. Из за этого не могу продолжать обучение дальше затем и решил попросить помощи на форуме. Да и ещё один момент, при вводе запрещенных символов мд5 конвертирует их в хеш из за чего запрещенные символы не блокируются. А без мд5 блокируются...
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. mysql_connect(localhost,root) or die(mysql_error());
  3. if(isset($_POST['submit'])){
  4.  
  5. $login = trim(strip_tags(preg_replace("/[^a-z0-9]/i", "",$_POST['login'])));
  6. $password = trim(strip_tags(md5(preg_replace("/[^a-z0-9]/i", "",$_POST['password']))));
  7. $confimp = trim(strip_tags(md5(preg_replace("/[^a-z0-9]/i", "",$_POST['confimp']))));
  8. if($password === $confimp and strlen($login)<3 and strlen($password)<3 and strlen($confimp)<3){
  9. $sql = "INSERT INTO mybases(login,password,confimp)VALUES('$login','$password','$confimp')";
  10. }
  11. else{
  12. echo "Что то не так";
  13. }
  14. }
  15.  
  16. ?>
  17. <center>
  18. <pre>
  19. <form action='<?PHP $_SERVER['PHP_SELF']?>' method='post'>
  20. Укажите ваш логин:&nbsp <input type='text' name='login' maxlength='16'>
  21. <?PHP echo $error_name;?><br>
  22. Введите ваш пароль: <input type='text' name='password' maxlength='32'>
  23. Подтвердите пароль: <input type='text' name='confimp' maxlength='32'>
  24. <input type='submit' value='Регистрация' name='submit'>
  25. </form>

</pre>
</center>
(Добавление)
Переменная $error_name изначально предназначалась для того, что бы в разных if-ах туда добавлялись разные предложения которые сообщают об ошибке...

Страниц (98): В начало « ... 90 91 92 93 94 95 96 97 [98]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB