2015-06-07 3 views
0

Как только вы входите на веб-страницу, она входит в таблицу SQL, даже если вы не отправляете ее сразу же после ввода веб-страницы, она отправляет пробел в таблицу SQL, вот коды как HTML-форму, так и форму PHP.Форма вставки PHP/MySQL

<form name="" method="POST" action=""> 
<input class="" type="text" name="a1" id="a1" class="placeholder" placeholder="Enter the FRATERNITY Name"> 
<input class="" type="text" name="a2" id="a2" class="placeholder" placeholder="Enter YOUR Name"> 
<style> 

<?php 

$host=""; 
$username=""; 
$password=""; 
$database_name=""; 
$table_name=""; 

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

$a1=$_POST['a1']; 
$a2=$_POST['a2']; 

$sql="INSERT INTO $table_name(groupname, founder)VALUES('$a1', '$a2')"; 
$result=mysql_query($sql); 

if($result){ 
echo "Group $a1 Has Been Created"; 

} 

else { 
echo "ERROR"; 
} 
?> 

<?php 
// close connection 
mysql_close(); 
?> 
+0

У вас есть уязвимость в SQL-инъекциях. – halfer

ответ

2

Необходимо проверить это, если это запрос на отправку, а затем выполнить только код. См. Ниже:

if($_SERVER['REQUEST_METHOD'] == "POST"){ 
    $host=""; 
    $username=""; 
    $password=""; 
    $database_name=""; 
    $table_name=""; 

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

    $a1=mysql_real_escape_string($_POST['a1']); 
    $a2=mysql_real_escape_string($_POST['a2']); 

    $sql="INSERT INTO $table_name(groupname, founder)VALUES('$a1', '$a2')"; 
    $result=mysql_query($sql); 

    if($result){ 
    echo "Group $a1 Has Been Created"; 

    } 

    else { 
    echo "ERROR"; 
    } 
    ?> 

    <?php 
    // close connection 
    mysql_close(); 
} 

Обратите внимание, что ваш код в его нынешнем виде уязвим для атаки SQL-инъекций. Я не использовал две строки ввода для защиты от этого.

+0

Спасибо за объяснение! Имеет большой смысл, я действительно ценю ваш ответ! –

+1

Добро пожаловать, и обратите внимание: 'mysql_ *' функции обесцениваются и будут удалены в будущем, поэтому используйте [PDO] (http://php.net/manual/en/book.pdo.php) вместо –

+0

. Я точно понимаю, что вы указали мне и добавили, но он все еще только освежает, когда ничего не происходит. ПОТОМУ ЧТО, он больше не отправляет пробелы в базу данных. –

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