我正在阅读一个非常基本的PHP教程,并且正在创建一个计算器,这样我就可以获得$ _GET,$ _POST和一些通用语法。
我在名为functionadvanced.php的php文件中创建了一个非常基本的php函数calc();
。所有这一切都需要2个数字,一个算子,做数学并吐出结果(就像我说的,非常基本的教程)。该功能有效,所以我不会发布代码。
我有另一个名为calc.php的php文件,它有我的计算器表单。这是代码:
<?php
include "functionadvanced.php";
$number1 = $_POST['num1'];
$number2 = $_POST['num2'];
$operator = $_POST['op'];
?>
<html>
<body>
<form action='calc.php' method='POST'>
<input type='textbox' name='num1' value="<?php echo $_GET['$number1']; ?>"/>
<select name="op" selected="<?php echo $_GET['$operator']; ?>">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type='textbox' name='num2' value="<?php echo $_GET['$number2']; ?>"/>
<input type='submit' value='=' />
<input type='text' name='result' value="<?php echo calc($number1,$number2,$operator); ?>" />
</form>
</body>
</html>
表单实际上有效,并显示calc函数吐出的正确值,但当页面回发时,它不会在字段中保留已发布的返回值。我以为我想用$ _GET来获取$ _POST中发布的值?
答案 0 :(得分:1)
$_GET
是指在query string中传递的信息(index.php?id=123
给出$_GET['id'] = '123'
),而$_POST
用于表单信息。这些大致(但不完全)与匹配的http request methods对应。
所以你想再次使用$_POST
,或者只使用你已经从$_POST
读取的变量(如$number1
)。
注意:我知道这只是一个学习过程,但是这种天真的方法容易受到XSS的影响,所以在开始使用之前要仔细阅读...
答案 1 :(得分:1)
为什么在从$ _POST中获取值时使用$ _GET?你只需要使用它们。并且还应该添加默认值
<?php
include "functionadvanced.php";
$number1 = isset($_POST['num1'])?$_POST['num1']:0;
$number2 = isset($_POST['num2'])?$_POST['num2']:0;
$operator = isset($_POST['op'])?$_POST['op']:'+';
?>
<html>
<body>
<form action='calc.php' method='POST'>
<input name='num1' value="<?php echo $number1; ?>"/>
<select name="op" selected="<?php echo $operator; ?>">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input name='num2' value="<?php echo $number2; ?>"/>
<input type='submit' value='=' />
<input name='result' value="<?php echo calc($number1,$number2,$operator); ?>" />
</form>
</body>
</html>
另外,没有type =“textbox”,只有默认的文本。如果你需要一个文本框,你应该使用