【问题标题】:My HTML Form values are not being recognized我的 HTML 表单值未被识别
【发布时间】:2013-08-23 05:56:19
【问题描述】:

我不完全确定,但它看起来像是我的表单发布的值,例如我的第一个文本框的 Text1 未被 PHP 识别。

整晚都在和它搏斗,希望有人能帮忙吗?谢谢。

<?php
$dbhost = 'localhost';
$dbuser = 'xeuser';
$dbpass = 'xepass';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn )
{
 die('Could not connect: ' . mysql_error());
}

$sql = 'INSERT INTO `amis_q1`.`crop1_8_9` (
`IDENTIFICATION` , `ADD` , `MARKET` , `DISTRICT` , `ENUMERATOR` , `Seller` , `Name_of_Unit` , `Number_of_Sellers` , `Average_Weight` , `Estimated_Weights` , `Type_of_Seller` , `Tramsport` , `Source` , `Remarks` , `CHECKED` , `BY` , `SUPERVISOR` , `OFFICE` , `DATE` , `INITIALS`
)
VALUES 
(   $_POST['Text1'],'$_POST[Text2]','$_POST[Text3]','$_POST[Text4]','$_POST[Text5]','$_POST[Text6]','$_POST[Text7]','$_POST[Text8]','$_POST[Text9]','$_POST[Text10]','$_POST[Text11]','$_POST[Text12]','$_POST[Text13]','$_POST[Text14]','$_POST[Text15]','$_POST[Text16]','$_POST[Text17]','$_POST[Text18]','$_POST[Text19]','$_POST[Text20]'
)';

mysql_select_db('amis_q1');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
 die('Could not enter data: ' . mysql_error());
}
print 'Inputted';
mysql_close($conn);
?>

【问题讨论】:

  • 请停止你正在做的事情并阅读 PHP 教程。即使您的代码有效(这是一个非常基本的语法错误,由未转义的' 引起),它也将非常容易受到 SQL 注入的攻击。
  • 什么是Text1, Text2 .. ?
  • 贴出HTML,看服务器端代码也说不准
  • 你的HTML Form呢?
  • 您使用的是an obsolete database API,应该使用modern replacement。您也容易受到SQL injection attacks的影响,现代 API 可以让您更轻松地从 defend 中获得。

标签: php html forms


【解决方案1】:

总体问题:不要使用 mysql 函数,并阅读有关 SQL 注入的信息,因为从安全角度来看,您的代码(以及下面的正确代码)都存在极大缺陷。

除此之外,问题在于您在$sql 中使用了单引号。下面是做变量后半部分的正确方法:

$sql = ') VALUES (' . $_POST['Text1'] . ', ' . $_POST['Text2'] . ')';

...这是在 PHP 中连接字符串的正确方法。

【讨论】:

  • 值得注意的是,您绝对不能这样做,即使它修复了语法问题,它也会留下 gaping 安全漏洞。跨度>
  • 完全同意,这就是为什么我从第一句话开始,无论如何,这将不可避免地被OP完全跳过。
  • 您还没有修复字符串更改的任何内容。 $foo = "abc $def[hij] jkl"; 在功能上与 $foo = "abc " . $def['hij'] . " jkl"; 相同,我选择 -1,但无论如何,sql 注入警告都会是一个加号,所以... +0
  • 单引号和双引号有很大的不同,而且你的例子和OP的不一样。
  • 哇,有很多信息需要吸收。谢谢,我知道注入问题,只是想让一个基本的表单工作。我对此很陌生,现在必须非常明显。谢谢。
猜你喜欢
  • 2018-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多