PHP получает данные из Firebird - PullRequest
0 голосов
/ 15 сентября 2018

мой вопрос обновляется.Мой новый вопрос таков:

  <?php

    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Headers: X-Requested-With');
    header('Access-Control-Allow-Headers: Content-Type');
    header('Access-Control-Allow-Methods: POST,GET,OPTIONS,DELETE,PUT');

    header('Cache-Control:public, max-age=100');

    if ($db = ibase_connect('111.222.333.444:C:\xx\xx\xx\xx\xx\xx.FDB', 'SYSDBA',
      'masterkey')) {



        $sql = "select * from STOK where barkodu='$barkodu'";

        $query =  ibase_prepare($sql);
        $rs=ibase_execute($query);


        if($row = ibase_fetch_row($rs)){

        $stok_adi = $row[2];

        $sonuc->stok_adi = $stok_adi;

      }

        ibase_close($db);

      } 
      else {
        $sonuc->durum = "cevapyok";
        }
      echo json_encode($sonuc);


    ibase_free_query($query);
    ibase_free_result($rs);
 ?>

Есть мои коды, он нормально работает с;

$sql = "select * from STOK";

Но я хочу это;

$sql = "select * from STOK where barkodu='$barkodu'";

Как можноя получаю $barkodu с постом http от внешнего?Спасибо.

Кстати;я изменил свой IP-адрес с помощью 111.222.333.444 и мою базу данных с C:\xx\xx\xx\xx\xx\xx.FDB для моей безопасности

1 Ответ

0 голосов
/ 15 сентября 2018

Предупреждение: я обычно не программирую на PHP, этот ответ основан на чтении документации и моих знаниях Firebird.

Ваш текущий код небезопасен и уязвим для внедрения SQL.Вместо использования строковой интерполяции для помещения вашего значения непосредственно в строку запроса, вы должны использовать вместо этого параметризованный запрос.

То есть вам нужно изменить код на:

$sql = "select * from STOK where barkodu=?";

$query = ibase_prepare($sql);
$rs = ibase_execute($query, $barkodu);

Илиесли вы не используете запрос повторно:

$sql = "select * from STOK where barkodu=?";
$rs = ibase_query($sql, $barkodu);

См. также

Если вместо этого ваш вопрос состоит в том, как получить параметр из сообщения формы, то я предлагаю вам взглянуть на Как получить вводзначение поля с использованием PHP или поиск учебника о том, как получить значения формы с использованием PHP;однако это проблема, не связанная напрямую с Firebird (и MySQL).

...