Сохранение значений через POST в ОЧЕНЬ базовой форме php - PullRequest
1 голос
/ 04 сентября 2010

Я прохожу очень простое руководство по php и создаю калькулятор, чтобы я мог освоить $ _GET, $ _POST и некоторый общий синтаксис.

Я создал очень простую php-функцию calc(); в php-файле с именем functionadvanced.php. Все, что он делает, это берет 2 числа, оператор, делает математику и выкладывает результаты (как я уже сказал, очень простой урок). Функция работает, поэтому я не буду публиковать код.

У меня есть другой 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, но когда страница отправляется обратно, она не сохраняет опубликованные значения обратно в полях. Я думал, что должен был использовать $ _GET, чтобы получить значения, опубликованные в $ _POST?

Ответы [ 2 ]

1 голос
/ 04 сентября 2010

зачем использовать $ _GET, когда вы взяли значения из формы $ _POST?вам просто нужно их использовать.и также следует добавить значения по умолчанию

<?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", только текст, который используется по умолчанию.если вам нужно текстовое поле, вы должны использовать

1 голос
/ 04 сентября 2010

$_GET относится к информации, передаваемой в строке запроса (index.php?id=123 дает $_GET['id'] = '123'), а $_POST для информации о форме.Они примерно (но не точно) соответствуют http-запросам .

Так что вы хотите снова использовать $_POST или просто использовать переменные, которые вы уже прочитали из $_POST (например, $number1).

ПРИМЕЧАНИЕ. Я знаю, что это всего лишь учебный процесс, но этот наивный подход уязвим для XSS , поэтому прочтите его, прежде чем начать жить с чем-либоважно ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...