2013-06-11 2 views
0

Мой код вставляет пустую запись в таблицу MySQL «активировать» вместо получения данных activate.html. Он вызывает 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

<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'] не установлен (в этом случае ваши переменные не будут иметь значения), ваш код будет пытаться вставить данные в таблицу. Вот почему есть пустые строки.

Как сказал Лев в своем комментарии, поскольку ваша кнопка отправки не имеет атрибута имени, $_POST['submit'] никогда не будет установлен, и поэтому вы всегда будете вводить пустые данные.

Смежные вопросы