Почему скрипт не работает корректно?

#php #frameworks #kohana

#php #фреймворки #кохана

Вопрос:

Я создал скрипт добавления комментария.

Источник —

 if (isset($_GET['do']) and $_GET['do'] == 'comment'){//Ja viss kārtībā, turpinam
                if (!empty($_POST['name']) and !empty($_POST['artcl_id']) and !empty($_POST['homepage']) and !empty($_POST['text'])){
                    $name = trim($_POST['name'],' ');
                    $artcl_id = trim($_POST['artcl_id'],' ');
                    $homepage = trim($_POST['homepage'],' ');
                    $text = trim($_POST['text'],' ');
                    Model::factory('index')
                            ->send_commentar(mysql_real_escape_string($name), mysql_real_escape_string($artcl_id), mysql_escape_string($homepage), mysql_real_escape_string($text), mysql_real_escape_string(time()));
                    ?>
                    <script type="text/javascript">
                        alert("Thank you! :)");
                    </script>
                    <meta http-equiv="REFRESH" content="0;url=/article/<?php echo $slug; ?>"/>
                    <?php

                } else {
                    $this->template->content = View::factory('index/error')->set('message', 'How to submit empty comment?');
                }
        }
  

Но если я добавляю пробелы в поле ввода, скрипт отправляет пробелы. Почему скрипт не работает корректно?

Комментарии:

1. «они начали работать» — это также неверное утверждение

Ответ №1:

Вы удаляете пробелы после того, как проверили пустые поля. Разве вы не хотите, чтобы это изменилось? Сначала удалите пробелы, а затем проверьте наличие пустых полей?

Комментарии:

1. наконец-то ответ, который все понял!

2. Большое тебе спасибо, Зак Л., я исправил скрипт, и они начинают работу! 🙂

Ответ №2:

Здесь должен быть урок по формальной логике.
Строго говоря, вы не можете утверждать, что « trim() не работает», основываясь на косвенных наблюдениях.

Только прямая (и воспроизводимая!) проверка может быть причиной для таких заявлений.

если вы случайно проверяете trim() результат сразу после его вызова, вы можете обвинить эту функцию.
В противном случае вам придется отлаживать свой код, чтобы найти действительную причину.
Надеюсь, это поможет 🙂

Ответ №3:

функция trim удаляет только начальные и конечные пробелы… если вы хотите удалить пробелы из всей строки, вы можете использовать функцию str_replace()..

 $artcl_id = str_replace(" ","",$artcl_id);
  

как мудрый, это может быть применено ко всем вашим полям…

Ответ №4:

попробуйте trim($var,"s") может быть, конечный символ не » «, а » s»