........ 依要求填入 mysql 語法。
<?php
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = '123qwe';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or mysql_error().PHP_EOL;
$sql = "select ........ ;" ;
mysql_select_db('dbi');
$retval = mysql_query( $sql, $conn );
while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
echo "{$row[0]}\t{$row[1]}";
}
?>
$_GET['plang'] 由網址加問號取得內容,如以下範例變數 plang=python。
http://kvm6.deyu.wang/sqlinj1.php?plang='python'
$_GET['plang'],使得其可以進行 sql injection。
$_GET['plang'] 以單引號括起來,以避免 sql injection。
preg_match 函數限制變數 $_GET['plang'] 只能非空白字元,否則印出 "Not Match"。
preg_match 函數限制變數 $_GET['plang'] 必須是小寫英文字母,否則印出 "Not Match"。
preg_match 函數限制變數 $_GET['plang'] 必須是 1 到 6 個小寫英文字母,否則印出 "Not Match"。
$_GET['plang'] 中的單引號、雙引號、倒斜線等符號,加上倒斜線跳脫其功能,並使用 echo 在 mysql 查詢命令之前印出變數 $_GET['plang'] 內容。