2012-02-22 9 views
0

には空白を送信する方法を、私はいくつかのチェックボックスが含まれているとチェックボックスのいずれかで、それは自民党 'の値を含むフォームを持っています。一度これをデータベースに提出すると、そこにスペースがあるので値は記録されません。この問題を解決するにはどうすればよいですか?以下は、私のフォームの関連ビットです:MySQLデータベース

<label>Party Standing For Election</label> 
    <input name="Conservatives" type="checkbox" value="Conservatives" /> Conservative 
    <input name="Liberal Democrats" type="checkbox" value="Liberal Democrats" /> Liberal Democrats 
    <input name="Labour" type="checkbox" value="Labour" /> Labour 

それはこのPHPページに行く:

<?php 

$name = $_REQUEST['name']; 
$date = $_REQUEST['date']; 
$month = $_REQUEST['month']; 
$year = $_REQUEST['year']; 
$labour = $_REQUEST['Labour']; 
$libdems = $_REQUEST['Liberal Democrats']; 
$conservatives = $_REQUEST['Conservatives']; 


$con = mysql_connect("****************************"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db('******', $con); 

$sql="INSERT INTO elections (name_of_election, date, month, year, party1, party2, party3) VALUES ('$name','$date', '$month','$year','$labour', '$libdems', '$conservatives')"; 

if (!mysql_query($sql,$con)) 
    { 
     die('Error: ' . mysql_error()); 
    } 
    else 
    { 
     echo '<h2>An Election Has Been Created</h2>'; 

    } 
?> 

ヘルプ?あなたの主な問題を修正するための

+0

表 '選挙'のSQL CREATE構文を表示してください。 – ariefbayu

+2

私は '')に投票することをお勧めします。 DROP TABLE選挙; - 自分自身をパーティー。 – CanSpice

答えて

2

フォローする@ seanbreedenの答えが、@CanSpiceによってSQLインジェクションからフォームを保護するために、次のように変更します。

$name = mysql_real_escape_string($_REQUEST['name']); 
$date = mysql_real_escape_string($_REQUEST['date']); 
$month = mysql_real_escape_string($_REQUEST['month']); 
$year = mysql_real_escape_string($_REQUEST['year']); 
$labour = mysql_real_escape_string($_REQUEST['Labour']); 
$libdems = mysql_real_escape_string($_REQUEST['LiberalDemocrats']); // with updated change 
$conservatives = mysql_real_escape_string($_REQUEST['Conservatives']); 
// ... 
$sql="INSERT INTO elections (`name_of_election`, `date`, `month`, `year`, `party1`, `party2`, `party3`) VALUES ('$name','$date', '$month','$year','$labour', '$libdems', '$conservatives')"; 
+0

良いアドバイス!間違いなくこれを行う必要があります。 – seanbreeden

+0

それは完全にはしません。プレースホルダも使用してください。 – CanSpice

+0

こんにちは、araon、ありがとう。私は、SQL攻撃は、ユーザが提供されたボックスにいくつかのSQL文を入力する機会がある場合にのみ発生すると考えました。私のフォームにはチェックボックスとドロップダウンしか含まれていないので、どのようにして何ができるのでしょうか?おかげ –

0

誰もが任意の文字列を入れて、あなたのウェブページのHTMLを編集することができます簡単な方法で提供していなくても、アプリケーションに組み込むことができます。ネットワークを介して送信されたデータは、送信者を制御していると思われる場合でも敵対的とみなされます。