Intereting Posts
CodeIgniter – вызов функции-члена select () для не-объекта Zend Framework 2 – ZFCUser – Как исключить целевую страницу из auth Разбить сложную строку запятыми в PHP Является ли FILTER_VALIDATE_URL слишком строгим? Что такое объект application / gas-events-abn в редакторе WordPress? Как создать плагин cakephp 2 с помощью торта выпекать всю команду? Должен ли использоваться PDO :: ATTR_PERSISTENT каждый раз? Анализ через неизвестный XML Как получить результат из необработанного запроса MySQL в Laravel? извлекать cookie с помощью curl и устанавливать этот файл cookie пользователю ошибка мыла. Неустранимая ошибка: исключение SoapFault: Не удалось подключиться к хосту Повторно ввести $ HTTP_POST_VARS в PHP 5.3 Реализация Bubble-сортировки в PHP? проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' в строке 1 Возможность запуска функции обновления БД при выборе выпадающего меню

Почему моя функция меняет значение boolean на «on»?

Поэтому я новичок в php / мире программирования, и я изучаю онлайн и другие формы, но я не мог найти ничего, чтобы ответить на мой вопрос, поэтому я здесь. Любая помощь, безусловно, ценится, спасибо!

Я хочу превратить приведенный ниже код в функцию, которую я могу вызвать. Он работает так же, как и внизу, так как в нем выводится 1, если я проверяю свой флажок в своей форме и остается 0, если я не касаюсь своего флажка.

$activeMain = (isset($_POST['activateBox'])) ? $_POST['activateBox'] : false; if ($activeMain == true) { $activeMain = '1'; } 

Однако, когда я пытаюсь использовать функцию, чтобы сделать то же самое, и я выбираю свой флажок для отображения «1», он остается 0, и если я делаю var_dump, то вывод теперь «включен» вместо 1, как то, как предполагается быть.

Ниже приведена функция, которую я пробовал:

 function activeCheck($activeMain) { $activeMain = (isset($_POST['activateBox'])) ? $_POST['activateBox'] : false; if ($activeMain == true) { $activeMain = '1'; } return $activeMain;//I messed around with a return value and as far as I can tell, it has no effect. }//ends activeCheck function activeCheck($activeMain);//call to function 

В целом я смущен тем, почему он показывает «on», когда я пытаюсь использовать функцию, а также как заставить ее работать.

РЕДАКТИРОВАТЬ:

Как превратить исходный код (первый бит кода, вышедшего выше) в функцию? Какие значения я должен использовать / могу ли я использовать что-то еще, кроме _SESSION, чтобы проверить, выбрал ли пользователь флажок из формы?

У меня есть форма HTML / PHP, в которой я даю возможность выбрать флажок. Если пользователи попадают в этот флажок, вход, который они предоставили, выдает «1» для истинного значения.

Моя форма HTML / PHP:

 <?php session_start(); ?> <!DOCTYPE HTML> <HTML> <head> <title>PHP FORM</title> </head> <body> <form method="post" action="processForm.php"> Name: <input type="text" name="names" required = "required"><br> <input type="submit" value="Create Users" onclick="formNAMES"><br> Activate: <input type="checkbox" name="activateBox"> <?php if (isset($_SESSION ['error'])) { foreach ($_SESSION['error'] as $value) { echo $value; } session_destroy(); unset($_SESSION['error']); } /* Above if statement checks if $_SESSION variable has been set in processForm page. If it has, an error message corresponding to the error shows up on redirect to this form. The unset makes sure the $_SESSION is destroyed upon completion of the process. */ ?> </form> </body> </html> с <?php session_start(); ?> <!DOCTYPE HTML> <HTML> <head> <title>PHP FORM</title> </head> <body> <form method="post" action="processForm.php"> Name: <input type="text" name="names" required = "required"><br> <input type="submit" value="Create Users" onclick="formNAMES"><br> Activate: <input type="checkbox" name="activateBox"> <?php if (isset($_SESSION ['error'])) { foreach ($_SESSION['error'] as $value) { echo $value; } session_destroy(); unset($_SESSION['error']); } /* Above if statement checks if $_SESSION variable has been set in processForm page. If it has, an error message corresponding to the error shows up on redirect to this form. The unset makes sure the $_SESSION is destroyed upon completion of the process. */ ?> </form> </body> </html> 

Solutions Collecting From Web of "Почему моя функция меняет значение boolean на «on»?"

Измените соответствующую строку следующим образом: Проблема заключается в том, что ActivBox не пуст, он, естественно, сам оценивает $ activeMain.

 $activeMain = isset($_POST['activateBox']); 

Обновлено: проверьте это.

 function activeCheck() { return isset($_POST['activateBox']); } activeCheck(); 

Обновленный ответ из-за обновленного вопроса: я удалил session_destory если вы его выполнили, и если у вас есть другая переменная сеанса ex: user isLoggedIn она также будет уничтожена. unset в порядке для этой цели. Пожалуйста, проверьте XSS, Sql инъекционные атаки вокруг интернета, реализуйте логику в соответствии с передовыми методами, а также проверяйте / дезактивируйте свои данные до параметров процесса в DB или т. Д.

 <?php // formView.php ob_start(); session_start(); ?> <!DOCTYPE HTML> <HTML> <head> <title>PHP FORM</title> </head> <body> <form method="POST" action="processForm.php"> Name: <input type="text" name="names" required = "required"><br> <input type="submit" value="Create Users" onclick="formNAMES"><br> Activate: <input type="checkbox" name="activateBox"> <?php if (isset($_SESSION ['error'])) { foreach ($_SESSION['error'] as $value) { echo $value; } unset($_SESSION['error']); } /* Above if statement checks if $_SESSION variable has been set in processForm page. If it has, an error message corresponding to the error shows up on redirect to this form. The unset makes sure the $_SESSION is destroyed upon completion of the process. */ ?> </form> </body> </html> <?php ob_end_clean(); ?> <?php // processForm.php if (!empty($_POST)) { $safeParameters = []; foreach ($_POST as $key => $val) { // sanitize your inputs. @see XSS, SQL injection etc. // validate parameters according to your needs. $safeParameters[$key] = $val; } $_POST = []; checkIsActivated($safeParameters); // implement other logic, // save form to database etc. } function checkIsActivated($parameters) { return !empty($parameters['activateBox']); } ?> с <?php // formView.php ob_start(); session_start(); ?> <!DOCTYPE HTML> <HTML> <head> <title>PHP FORM</title> </head> <body> <form method="POST" action="processForm.php"> Name: <input type="text" name="names" required = "required"><br> <input type="submit" value="Create Users" onclick="formNAMES"><br> Activate: <input type="checkbox" name="activateBox"> <?php if (isset($_SESSION ['error'])) { foreach ($_SESSION['error'] as $value) { echo $value; } unset($_SESSION['error']); } /* Above if statement checks if $_SESSION variable has been set in processForm page. If it has, an error message corresponding to the error shows up on redirect to this form. The unset makes sure the $_SESSION is destroyed upon completion of the process. */ ?> </form> </body> </html> <?php ob_end_clean(); ?> <?php // processForm.php if (!empty($_POST)) { $safeParameters = []; foreach ($_POST as $key => $val) { // sanitize your inputs. @see XSS, SQL injection etc. // validate parameters according to your needs. $safeParameters[$key] = $val; } $_POST = []; checkIsActivated($safeParameters); // implement other logic, // save form to database etc. } function checkIsActivated($parameters) { return !empty($parameters['activateBox']); } ?>