Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php表单到Oracle-如何在插入之前处理表单数据_Php_Html_Oracle_Forms_Oracle11g - Fatal编程技术网

php表单到Oracle-如何在插入之前处理表单数据

php表单到Oracle-如何在插入之前处理表单数据,php,html,oracle,forms,oracle11g,Php,Html,Oracle,Forms,Oracle11g,当我从PHP表单插入或更新Oracle数据库时,我捕获表单数据并通过一个函数对其进行清理,该函数对数据进行修剪、条带斜杠和htmlspecialcharacters处理 我想保持符号,单引号和双引号在数据库中的原样 但是最近我想知道这个函数。我原以为这有助于sql注入,但OCI8通过绑定变量避免了这一点-我就是这么做的 如何处理单引号 是否允许单引号终止字符串 我想我可能需要重写一下这个函数——我需要它吗 有人能帮我检查输入($data)并给我反馈吗 <?php require('conn

当我从PHP表单插入或更新Oracle数据库时,我捕获表单数据并通过一个函数对其进行清理,该函数对数据进行修剪、条带斜杠和htmlspecialcharacters处理

我想保持符号,单引号和双引号在数据库中的原样

但是最近我想知道这个函数。我原以为这有助于sql注入,但OCI8通过绑定变量避免了这一点-我就是这么做的

如何处理单引号

是否允许单引号终止字符串

我想我可能需要重写一下这个函数——我需要它吗

有人能帮我检查输入($data)并给我反馈吗

<?php
require('conn.php');
require('db.php');
$conn = db_connect();

  $form1 = check_input($_POST['issueType']);
  $form2 = check_input($_POST['summary']);
  $form3 = check_input($_POST['endPointName']);
  $form4 = check_input($_POST['contactFirstName']);
  $form5 = check_input($_POST['contactLastName']);
  $form6 = check_input($_POST['contactEmail']);
  $form7 = check_input($_POST['contactPhone']);
  $form8 = check_input($_POST['description']);


  // trims data, strips extra characters, converts special characters to HTML entities

  function check_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
   }

  $insert = "INSERT INTO VTC_HELPDESK_ISSUES (ISSUE_TYPE, ISSUE_SHORT,ENDPOINT_NAME,CONTACT_FIRST_NAME,CONTACT_LAST_NAME, CONTACT_EMAIL,CONTACT_PHONE,ISSUE_DESC,SOLUTION,OTHER_COMPANY_TICKET_NUM,RESOLVED,AGENCY) VALUES (:issueType, :summary,:endPointName, :contactFirstName, :contactLastName,:contactEmail, :contactPhone, :description, :solution, :ticketNumber, :resolved, :agency)";

  $send = oci_parse($conn, $insert);

  //Binding makes it harder to submit anything directly to the Oracle DB
  oci_bind_by_name($send, ':issueType', $form1);
  oci_bind_by_name($send, ':summary', $form2);
  oci_bind_by_name($send, ':endPointName', $form3);
  oci_bind_by_name($send, ':contactFirstName', $form4);
  oci_bind_by_name($send, ':contactLastName', $form5);
  oci_bind_by_name($send, ':contactEmail', $form6);
  oci_bind_by_name($send, ':contactPhone', $form7);
  oci_bind_by_name($send, ':description', $form8);


  oci_execute($send);

因为“绑定对Oracle数据库性能很重要,也是避免SQL注入安全问题的一种方法”*,所以您可以停止对这些字段执行自己的检查输入()。具体来说,您的引号和符号将丢失到htmlspecialchars()

因为“绑定对Oracle数据库性能很重要,也是避免SQL注入安全问题的一种方法”*,所以您可以停止对这些字段执行自己的检查输入()。具体来说,您的引号和符号将丢失到htmlspecialchars()


通过绑定查询中的变量,您正在执行所有必要的操作,以防止数据库被注入。
check_input()
函数的目标是什么?标准做法是将数据精确地放入数据库中,并在输出时转义,因为您永远无法100%确定输出将显示在何处。与Visual Basic表单或API输出相比,网页将具有不同的卫生规则。@MonkeyZeus-我的目标只是为了安全,在数据库中不包含太多时髦的字符,并且在网页上显示它们,使其可读性和可更新性。@MonkeyZeus-因此,如果我允许在数据库中使用单引号,它们将显示在网页上,但是,当我从数据库获取数据并在更新页面上预填充时,字段会在引号处终止-???当显示网页的数据时,然后像这样使用和使用它
echo htmlEntes($row['DB_COLUMN',ENT_QUOTES)仅此而已。通过绑定查询中的变量,您正在执行所有必要的操作,以防止数据库被注入。
check_input()
函数的目标是什么?标准做法是将数据精确地放入数据库中,并在输出时转义,因为您永远无法100%确定输出将显示在何处。与Visual Basic表单或API输出相比,网页将具有不同的卫生规则。@MonkeyZeus-我的目标只是为了安全,在数据库中不包含太多时髦的字符,并且在网页上显示它们,使其可读性和可更新性。@MonkeyZeus-因此,如果我允许在数据库中使用单引号,它们将显示在网页上,但是,当我从数据库获取数据并在更新页面上预填充时,字段会在引号处终止-???当显示网页的数据时,然后像这样使用和使用它
echo htmlEntes($row['DB_COLUMN',ENT_QUOTES)仅此而已。