2013-06-11 5 views
0

내 코드는 데이터를 가져 오는 대신 MySQL 테이블에 "활성화"라는 빈 레코드를 삽입합니다. 그것은 내가 아래로 벗겨 낸 activate.php를 호출합니다. 나는 또한 PHP에 익숙하지 않다는 것을 추가해야하지만 주입 공격에 대해 알고있다. 나는 원래 몇 가지 보안 문제를 다루었지만, 내가 말했듯이, 문제의 근원에 도달하기 위해 코드를 제거했다. 또한 양식 필드를 에코하면 MySql 테이블에 채워지지 않습니다. 어떤 아이디어? 미리 감사드립니다.PHP는 테이블에 빈 데이터를 삽입합니다

<?php 
$host = "host"; // Host name 
$username = "user"; // Mysql username 
$password = "pass"; // Mysql password 
$db_name = "db"; // Database name 
$tbl_name = "activate"; // Table name 

// Connect to server and select database. 

mysql_connect("$host", "$username", "$password") or die("cannot connect"); 
mysql_select_db("$db_name") or die("cannot select DB"); 

// Get values from form 

if (isset($_POST['submit'])) { 
    $esn = mysql_real_escape_string($_POST['esn']); 
    $esnverify = mysql_real_escape_string($_POST['esnverify']); 
    $zip = mysql_real_escape_string($_POST['zip']); 
    $comments = mysql_real_escape_string($_POST['comments']); 
} 

// Insert data into mysql 

$sql = "INSERT INTO $tbl_name (esn, esnverify, zip, comments) VALUES ('$esn', '$esnverify', '$zip', '$comments')"; 
$result = mysql_query($sql); 

// if successfully insert data into database, displays message "Successful". 

if ($result) { 
    echo "Successful"; 
    echo "<br />"; 
    echo $_POST['esn']; 
    echo "<br />"; 
    echo $_POST['esnverify']; 
    echo "<br />"; 
    echo $_POST['zip']; 
    echo "<br />"; 
    echo $_POST['comments']; 
    echo "<br />"; 
    echo "<a href='thankyou.html'>Back to main page</a>"; 
} 
else { 
    echo "ERROR"; 
} 

?> 

    <?php 

// close connection 

mysql_close(); 
?> 

Activate.html $_POST['submit']가 (이 경우 귀하의 변수 값이없는 것), 코드는 여전히 테이블에 데이터를 삽입을 시도합니다 설정되어 있지 않은 경우에도

<form method="post" action="activate.php"> 
<p><b>ESN:</b> <input type="text" id="esn" name="esn" maxlength="50"><br/> 
<b>Confirm ESN:</b> <input type="text" name="esnverify" id="esnverify" maxlength="50"><br/> 
<b>Zip:</b> <input type="text" name="zip" id="zip" maxlength="5"><br/> 

<p>Your comments:<br /> 
<textarea name="comments" rows="10" cols="40" id="comments" maxlength="500"></textarea></p> 

<p><input type="submit" value="Send it!"></p></form> 
+0

어떤 페이지에서'$ _POST' 변수를 받고 있습니까? – Kevin

+1

제출 버튼에'name' 속성이 없으므로이 조건'if (isset ($ _ POST [ 'submit']))'는 결코 만족스럽지 않습니다. 그것은 Lion

+0

라이온 감사합니다 !! 내 곱슬 괄호를 움직이면 해결됩니다 !! 다시 한번 감사 드리며, 나는 큰 도움을 주셔서 감사합니다. – JuStin

답변

1
<?php 
$host = "host"; // Host name 
$username = "user"; // Mysql username 
$password = "pass"; // Mysql password 
$db_name = "db"; // Database name 
$tbl_name = "activate"; // Table name 

// Connect to server and select database. 

mysql_connect("$host", "$username", "$password") or die("cannot connect"); 
mysql_select_db("$db_name") or die("cannot select DB"); 

// Get values from form 

if (isset($_POST['submit'])) { 
    $esn = mysql_real_escape_string($_POST['esn']); 
    $esnverify = mysql_real_escape_string($_POST['esnverify']); 
    $zip = mysql_real_escape_string($_POST['zip']); 
    $comments = mysql_real_escape_string($_POST['comments']); 


// Insert data into mysql 

$sql = "INSERT INTO $tbl_name (esn, esnverify, zip, comments) VALUES ('$esn', '$esnverify', '$zip', '$comments')"; 
$result = mysql_query($sql); 

// if successfully insert data into database, displays message "Successful". 

if ($result) { 
    echo "Successful"; 
    echo "<br />"; 
    echo $_POST['esn']; 
    echo "<br />"; 
    echo $_POST['esnverify']; 
    echo "<br />"; 
    echo $_POST['zip']; 
    echo "<br />"; 
    echo $_POST['comments']; 
    echo "<br />"; 
    echo "<a href='thankyou.html'>Back to main page</a>"; 
} 
else { 
    echo "ERROR"; 
} 

} 

?> 

    <?php 

// close connection 

mysql_close(); 
?> 

또한, HTML 코드에서 변경할 :

하는 이름은 = 버튼을 제출/입력 필드에 '제출'을 추가 할 수 있습니다.

+0

나는 중괄호를 바꿨지 만 지금은 페이지가 아무 것도하지 않고 심지어 반향 입력을하지 않습니까 ??? – JuStin

+0

@JuStin, 답장 됨 - 또한 라이온이 이미 답변 한 것을 볼 수 있습니다. :) – sinisake

1

. 이것이 빈 행이있는 이유입니다.

제출자 버튼에 이름 속성이 없기 때문에 라이온은 자신의 의견에서 $_POST['submit']이 설정되지 않으므로 항상 공백 데이터를 삽입합니다.

관련 문제