Поэтому я новичок в 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>
Измените соответствующую строку следующим образом: Проблема заключается в том, что 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']); } ?>