所以我得到了这段代码,我还在学习,而且我不知道问题会是什么,问题是这样做是不安全的吗?
<?php
print_form();
if(isset($_POST['calculate'])){
process_form();
}
function process_form(){
switch($_POST){
case "addition":
print $_POST['operand1'] + $_POST['operand2'];
break;
case "subtraction":
break;
case "multiplication":
break;
case "division":
}
}
function print_form(){
print <<<HTML
<html>
<head><title>Learning Php</title></head>
<body>
<form method="POST" action="">
Operand 1: <input type="text" name="operand1"><br>
Operand 2: <input type="text" name="operand2"><br>
<select name="operation">
<option value="addition"> Addition </option>
<option value="subtraction"> Subtraction </option>
<option value="multiplication"> Multiplication </option>
<option value="division"> Division </option>
</select>
<input type="submit" name="calculate" value="calculate">
</form>
</body>
</html>
HTML;
}
?>
是不是在执行process_form()还是在按下按钮时重置计算值?
答案 0 :(得分:1)
您需要切换$_POST['operation']
。
网站上的大多数漏洞都是将数据保存到数据库,向用户展示其他用户数据。像这样的代码似乎没有任何安全问题,但echo
似乎比print
更受欢迎,用于输出数据。
答案 1 :(得分:0)
在您的switch语句中,您应该将switch($_POST)
更改为switch($_POST['operation'])
。
我可以看到你将select标签与名称 operation 匹配,然后你做了数学运算。
因此,如果您想获得select标记的正确值,则必须使用$_POST['operation']
答案 2 :(得分:0)
在函数调用中,传递post数据并使用参数或参数定义函数,如下所示
if(isset($_POST['calculate'])){
process_form($_POST['calculate']);
}
function process_form($arg){
switch($arg){
case "addition":
print $_POST['operand1'] + $_POST['operand2'];
break;
case "subtraction":
break;
case "multiplication":
break;
case "division":
}