2013-08-22 2 views
-3

잘 모르겠지만 내 양식에 게시 된 값과 같습니다. 첫 번째 텍스트 상자의 Text1이 PHP에 의해 인식되지 않습니다.내 HTML 양식 값이 인식되지 않습니다.

밤새도록 씨름하고 있었는데, 누군가가 도울 수 있으니? 고맙습니다.

<?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); 
?> 
+2

수행중인 작업을 중단하고 PHP 자습서를 읽으십시오. 코드가 작동하더라도 (이스케이프 처리되지 않은 ''로 인해 발생하는 매우 기본적인 구문 오류입니다.) SQL 삽입에 ** 취약합니다 **. – meagar

+0

'Text1','Text2' 란 무엇입니까? –

+0

HTML을 게시하면, 서버 측 코드를 보면서 무엇이 잘못되었는지 알 수 없습니다. – tomaroo

답변

1

아치를 만들 문제 : 보안 측면에서 모두 매우 결함을 코드 (아래 올바른 코드)로 mysql 함수 및 SQL 주입에 대한 읽기를 사용할 수 있습니다하지 않습니다.

이외의 문제는 $sql에 작은 따옴표를 사용하는 것입니다. 변수의 마지막 부분을 수행하는 올바른 방법은 다음과 같습니다.

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

... 이것은 PHP에서 문자열을 연결하는 올바른 방법입니다.

+0

**이 작업을 절대해서는 안되며, 구문 문제를 수정하더라도 ** 보안 취약점이 남아 있습니다. – meagar

+0

전적으로 동의 했으므로 어쨌든 OP에서 완전히 건너 뛸 수밖에없는 첫 번째 문장부터 시작했습니다. – jterry

+0

문자열 변경 사항이 수정되지 않았습니다. '$ foo = "abc $ def [hij] jkl";은'$ foo = "abc"와 기능상 동일합니다. $ def [ 'hij']. "jkl"; '-1,하지만 SQL 주입 경고는 플러스가됩니다. 그래서 ... +0 –

관련 문제