代码之家  ›  专栏  ›  技术社区  ›  ItsPronounced Finn

以非常基本的php形式保留post中的值

  •  1
  • ItsPronounced Finn  · 技术社区  · 14 年前

    我将学习一个非常基本的PHP教程,并创建一个计算器,这样我就可以掌握$\u get、$\u post和一些通用语法。

    我创建了一个非常基本的PHP函数 calc(); 在名为functionadvanced.php的php文件中。它只需要取两个数字,一个算符,进行数学运算,然后输出结果(就像我说的,非常基础的教程)。函数工作,所以我不会发布代码。

    我有另一个php文件calc.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']; ?>"/> &nbsp;
        <select name="op" selected="<?php echo $_GET['$operator']; ?>">
               <option value="+">+</option>
               <option value="-">-</option>
               <option value="*">*</option>
               <option value="/">/</option>
        </select> &nbsp;
        <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函数发出的正确值,但当页面回发时,它不会保留字段中的回发值。我想我应该用一个美元获取贴在美元上的价值?

    2 回复  |  直到 10 年前
        1
  •  1
  •   grossvogel    14 年前

    $_GET 是指在 query string ( index.php?id=123 给予 $_GET['id'] = '123' ) $_POST 用于表单信息。这些大致(但不完全)符合匹配 http request methods .

    所以你想用 美元邮报 还是用你已经读过的变量 美元邮报 (像 $number1 )

    注意:我知道这只是一个学习过程,但这种幼稚的方法容易受到 XSS 所以,在和任何重要的事情一起生活之前,好好读一读…

        2
  •  1
  •   Sergey Eremin    14 年前

    为什么要在你抓取了$u post的值后使用$u 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; ?>"/> &nbsp;
        <select name="op" selected="<?php echo $operator; ?>">
               <option value="+">+</option>
               <option value="-">-</option>
               <option value="*">*</option>
               <option value="/">/</option>
        </select> &nbsp;
        <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”,只有默认的文本。如果需要文本框,应使用