所以我是php /编程世界的新手,我在网上和其他形式学习等等,但我无法找到任何可以帮助回答我的问题,这就是为什么我会这样做的原因。我在这里任何帮助当然感谢,谢谢!
我想将以下代码转换为我可以调用的函数。它就像它在下面一样工作,如果我在我的表单中选中我的复选框,则输出1,如果我不触摸我的复选框,则保持为0。
$activeMain = (isset($_POST['activateBox'])) ? $_POST['activateBox'] : false;
if ($activeMain == true) {
$activeMain = '1';
}
然而,当我尝试使用一个函数做同样的事情时,我选择我的复选框来显示' 1',它保持为0,如果我执行var_dump,则输出现在为&#34 ;关于"而不是像它应该是的那样。
以下是我尝试的功能:
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>
答案 0 :(得分:0)
将相关行更改为以下内容:问题是当activateBox不为空时,它会自动为$ activeMain自行调整。
$activeMain = isset($_POST['activateBox']);
更新:检查一下。
function activeCheck() {
return isset($_POST['activateBox']);
}
activeCheck();
因更新问题而更新的答案:
如果您执行该操作,我删除了session_destory
,如果您有另一个会话变量ex:user isLoggedIn
,它也会被销毁。 unset
可以达到目的。请根据最佳实践检查XSS,围绕互联网实施逻辑的Sql注入攻击,并在将流程参数导入数据库等之前验证/清理您的数据。
<?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']);
}
?>