2011-07-26 16 views
-2

私はこれらの要素を持っている検索フォームを持っている:mysqlの検索フォームの質問

<style type="text/css"> 
body,td,th { 
    color: #FFF; 
} 
body { 
    background-color: #060; 
} 
</style> 
<div align="center"> 
    <p>&nbsp;</p> 
    <p>&nbsp;</p> 
    <p>&nbsp;</p> 
    <p>&nbsp;</p> 
</div> 
<?php 
mysql_connect ("localhost", "xxxx","xxxxxxx") or die (mysql_error()); 
mysql_select_db ("xxxxxxx"); 

$term = $_POST['term']; 

$sql = mysql_query("select * from Patients where ID like '%$term%'"); 


while ($row = mysql_fetch_array($sql)){ 
    echo 'ID: '.$row['ID']; 
    echo '<br/> First Name: '.$row['firstname']; 
    echo '<br/> Last Name: '.$row['lastname']; 
    echo '<br/> Valid Until: '.$row['validto']; 
    echo '<br/><br/>'; 
    } 

あるとしてそれは素晴らしい作品が、私はそれがサーバから日付を取得し、データベースにvalidtoフィールドにそれを比較する必要がありますサーバーの日付がvalidtoの日付と等しいかそれより前であれば、 "Status:Valid"をエコーする必要があります。それ以外の場合は "Status:Invalid"と表示されます。

+0

あなたは、SQLインジェクションの脆弱性を持っているすべての最初: – Ibu

+0

あなたは、各文字列$にはhtmlspecialcharsを使用する必要がありますwhileループの行の値。これは、ユーザーが入力したテキストにHTMLマークアップが含まれないようにします。 –

答えて

0

なぜ

<?php 

$curDate = date('Y-m-d'); 
$validTill = strtotime($row['validto']); 
... and can we compare it... 

?> 
1

を追加しないで、このエリアには注意が必要です

$term = $_POST['term']; 

は、あなたがあなたの比較を行うことができます

$term = mysql_real_escape_string($_POST['term']); 

次のようになります。

$today = date("Y-m-d"); // mysql default date format 

$sql = "SELECT * FROM Patients 
     WHERE ID LIKE '%$term%' 
     AND validto <= '$today'"; 
0

mysqlだけで日付を簡単に確認できます。

$sql = mysql_query("select Patients.*, IF(validto > NOW(), 'Valid', 'Invalid') AS status from Patients where ID like '%$term%'"); 

while ($row = mysql_fetch_array($sql)){ 
    echo 'ID: '.$row['ID']; 
    echo '<br/> First Name: '.$row['firstname']; 
    echo '<br/> Last Name: '.$row['lastname']; 
    echo '<br/> Valid Until: '.$row['validto']; 
    echo '<br/> Status: ' . $row['status']; 
    echo '<br/><br/>'; 
    } 
0

validtoが日時の場合は、strtotimeとタイムスタンプ(int型)に変換することができます:

$validto = strtotime($row['validto']); 
$current_time = time(); 

if($current_time > $validto) { 
    echo 'invalid'; 
} else { 
    echo 'valid'; 
}