2015-11-18 3 views
0

Я не понимаю идею вставки пустых данных в базу данных, я пробовал много примеров из переполнения стека и других сайтов &, но никогда не нашел свое решение, пожалуйста, помогите мне.Зачем вставлять пустые данные в базу данных?

Это мой код:

<form action="index.php" method="post"> 
    <input type="email" class="incsub-mailchimp-field" name="email" placeholder="Enter your email address" required=""/> 
    <input type="submit" name="subscribe" class="incsub-mailchimp-submit" value="Subscribe"/> 
</form> 

<?php 
$email=""; 

if (isset($_POST['subscribe'])) 
{ 
    $email = $_POST['email']; 
} 

// attempt insert query execution 
mysqli_query($mysqli, ("INSERT INTO email_list (email,created) 
VALUES ('$email',now())")); 
?> 
+5

B потому что вы запускаете вставку всякий раз, когда страница __viewed__, а не только всякий раз, когда она отправляется с данными –

+1

Plus, '($ mysqli, (" INSERT' http://php.net/manual/en/mysqli.query.php> http://php.net/manual/en/mysqli.error.php не знаю, почему у вас есть все эти лишние ненужные скобки. –

+2

Замечательная уязвимость [sql injection attack] (http://bobby-tables.com). наслаждайтесь наличием вашего сервера pwn3d. –

ответ

0

Попробуйте это:

<?php 
$email=""; 

if (isset($_POST['subscribe'])) 
{ 
    $email = $_POST['email']; 
// attempt insert query execution 
mysqli_query($mysqli, ("INSERT INTO email_list (email,created) 
VALUES ('$email',now())")); 
} 
?> 

только вставить в базу данных, когда поле будет вывешен.

+0

Вероятно, вы получите больше 'if' предложений внутри, и каждый вложенный' if' будет медленнее. Я предпочитаю сначала проверять и возвращать, если это не нормально до кода обработки: 'if (! Isset ($ _ POST ['subscribe'])) { exit; // или возвращает } $ email = $ _POST ['email']; .......... ' – CGeorges

+1

' if() ... &&! Empty() {...} ' –

+1

Спасибо ** BlunT ** Теперь работаем правильно :) –

0

вы проверили IsSet (($ _ POST [ «подписаться»]), но Worte запрос вставки снаружи из, если условие

<html> 
<form action="index.php" method="post"> 
<input type="email" class="incsub-mailchimp-field" name="email" placeholder="Enter your email address" required=""/> 
<input type="submit" name="subscribe" class="incsub-mailchimp-submit" value="Subscribe"/> 
</form> 
</html> 
<?php 
$email=""; 
if (isset($_POST['subscribe'])) 
{ 
$email = $_POST['email']; 
mysqli_query($mysqli,"INSERT INTO email_list (email,created) VALUES ('$email',now())"); 
} 
?> 
0

Вы также можете сделать это с помощью этого метода, и я думаю, что это имеет смысл

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post"> 
    <input type="email" class="incsub-mailchimp-field" name="email" placeholder="Enter your email address" required=""/> 
    <input type="submit" name="subscribe" class="incsub-mailchimp-submit" value="Subscribe"/> 
</form> 

<?php 
$email=""; 

if ($_SERVER['REQUEST_METHOD'] == "POST") 
{ 
    $email = $_POST['email']; 

// attempt insert query execution 
mysqli_query($mysqli, ("INSERT INTO email_list (email,created) 
VALUES ('$email',now())")); 
} 
?> 

$_SERVER["PHP_SELF"] супер глобальная переменная, которая возвращает имя файла в данный момент скрипта. А использование htmlspecialchars(); предотвратит от атак сценариев кросс сайта

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