Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вопрос по функции

 PHP.SU

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


 Страниц (1): [1]   

> Без описания
PVG
Отправлено: 29 Июля, 2012 - 14:14:15
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




Здравствуйте!
Есть вот такая функция:
PHP:
скопировать код в буфер обмена
  1.  
  2.  <html>
  3.  <?PHP
  4. function ochistka($z) {
  5.  if (empty($z)) {
  6.  echo "pusto";
  7.  exit;
  8.  }
  9.  else {
  10.  $t = $z;
  11.  $t = preg_replace("/[^a-z0-9]/i", "", $t);
  12. $t = substr ($t, 0, 10);
  13. $t = htmlspecialchars($t, ENT_QUOTES);
  14. $t = addslashes($t);  
  15. $t_clear = preg_replace('/\s+$/m', '', $t);
  16. }
  17. }
  18. $name_clear = ochistka ($_POST['name']);
  19. echo $name_clear;
  20. echo "<br>";
  21. if ($_POST['name'] != $name_clear) {
  22. echo "vvedeno neverno";
  23. }
  24. else {
  25. echo "dobavlenov bazu";
  26. }
  27.  
  28.  
  29. ?>
  30.         </html>
  31.  


Подскажите пожалуйста как вывести результат работы функции в переменную. По идее это вот это строка:
$name_clear = ochistka ($_POST['name']);
Но если попросить вывести переменную $name_clear, то получаю пустоту.
 
 Top
armancho7777777 Супермодератор
Отправлено: 29 Июля, 2012 - 14:24:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




В вашем случае нет смысла присваивать переменной результат выполнения фунции,
так как Вы уже выводите всё на экран, оператором "echo"
 
 Top
Green
Отправлено: 29 Июля, 2012 - 14:30:36
Post Id



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Апр. 2012  
Откуда: Кисловодск


Помог: 9 раз(а)




Вы не выведите(узнаете) результат работы функции, ибо она ничего не возвращает(return имеется в виду).

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. function test($a)
  3. {
  4.    if(!empty($a))
  5.    {
  6.        return true;
  7.    }
  8.    
  9.    return false;
  10. }

Вот в таком случае можно было бы сделать так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. if(test($var))
  3. {
  4.    echo 'OK!';
  5. }
  6. else
  7. {
  8.    echo 'NO!';
  9. }

(Отредактировано автором: 29 Июля, 2012 - 14:31:08)

 
 Top
Hawkmoth
Отправлено: 29 Июля, 2012 - 14:34:04
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012  


Помог: 6 раз(а)




После 15-й строки


Чтобы было что присваивать переменной.
 
 Top
PVG
Отправлено: 30 Июля, 2012 - 21:44:15
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




Если добавить вывод после 15 строки, то если просто присвоить функцию от пост_нэйм, то уже будет вывод на экран. А мне выводить не нужно. Мне нужно сравнить пост_нэйм и то, что получилось после очистки, то есть $_POST['name']_clear что ли?
 
 Top
Green
Отправлено: 30 Июля, 2012 - 23:01:18
Post Id



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Апр. 2012  
Откуда: Кисловодск


Помог: 9 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $do     = $_POST['name'];
  3. $posle = ochistka($_POST['name']);
  4.  
  5. echo '<b>До:</b> <br />', $do, '<br /> <b>После:</b> <br />', $posle;

Вы об этом что ли?

А если сравнивать, то:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. if($do == $posle)
  3. {
  4.    echo 'Ничего не изменилось';
  5. }
  6. else
  7. {
  8.    echo 'Что-то изменилось!';
  9. }


Вообще, Ваш вопрос мне не очень понятен. Подмигивание

(Отредактировано автором: 30 Июля, 2012 - 23:06:21)

 
 Top
PVG
Отправлено: 30 Июля, 2012 - 23:10:12
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




Извините, я не подумал что между return и echo есть разница и писал в функцию второе, в этом то и была проблема, теперь все в порядке! Спасибо за помощь!
(Добавление)
А подскажите пожалуйста, той защиты, которая в функции достаточно? Что стоит добавить еще? Вообще код пропускает только буквы и цифры.
 
 Top
Okula
Отправлено: 31 Июля, 2012 - 04:56:29
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Код ужасный. Например после выполнения этой функции:

все последующие теряют смысл, так как были удалены все символы отличные от латинских букв и цифр.
(Добавление)
Одной регуляркой можно проверить соответствие шаблону как по наличию символов так и по их количеству.
Например: тебе нужна строка из букв и цифр длиной до 10 символов.
PHP:
скопировать код в буфер обмена
  1. if(preg_match("~^[a-z0-9]{1,10}$~i", $t)) {
  2.     echo "Успех";
  3. } else {
  4.     echo "Неудача";
  5. }

(Отредактировано автором: 31 Июля, 2012 - 05:02:38)

 
 Top
PVG
Отправлено: 31 Июля, 2012 - 13:24:28
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




То есть мне мою функцию просто заменить на то, что предложили Вы и результат будет таким же?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB