-1

SQL ステートメントに関しては、私が働いているこの会社では SQL インジェクションが発生しやすい古い SQL ステートメントを使用しています (彼らはすべて Web の経験があまりないコンピューター プログラマーです)。準備済みステートメントの使用。私はすでにそれについてたくさん読んだことがありますが、まだ少し不明確です。

たとえば、include(/mnt/configdb.php) を使用してから db_connect(); を使用しています。PHPファイルで、SQL(SQLiではなく)を使用してiniファイルを介して各SQL DBに接続します。サーバーを変更し、SQL 情報を更新する必要がある場合 (サーバーが移動した場合) に柔軟になる、より優れたメソッド/ステートメント、おそらく mysqli_connect() を使用したいと考えています。何が最もうまくいくかについて何か考えはありますか?mysqli_connect() 対 mysql_connect または関数呼び出しを使用してサーバー上のiniファイルに接続しますか?

たとえば、1 つの connect.php ファイルを作成し、アクセスする必要があるスキーマごとに複数のデータベース接続を持つように設定したい場合は、そのファイルと必要な PHP ファイルに sqli ステートメントを含めるだけです。接続する必要がある SQL DB にすべての変数を送信します。これについて最善の方法は何ですか、または既に持っているもの (以下) を変換して、それを sqli および準備済みステートメントに変換するにはどうすればよいですか? SQLi を使用する必要がありますか?? それとも、SQL に固執しますか?

サーバー上の configdb:

function db_config_cables()
{
//Parse and store the db ini file, this will return an associative array
global $dbhost,  $dbuser,  $dbpass,  $dbname;
//Point to global ini file
$config_info = parse_ini_file('config.ini', true);
//Call specific db
$dbhost = $config_info['tablename_here']['db_host'];
$dbuser = $config_info['tablename_here']['db_user'];
$dbpass = $config_info['tablename_here']['db_pass'];
$dbname = $config_info['tablename_here']['db_name'];
}

サーバー上のaccessdbファイル:

function db_connect()
{
global $dblink, $dbhost,  $dbuser,  $dbpass,  $dbname;
$dblink = @mysql_connect($dbhost,  $dbuser,  $dbpass) or die ('DB ERROR - Could not connect: '.mysql_error());
@mysql_select_db($dbname) or die ('DB Error - Could not select: '.mysql_error());
}
function close_db()
{
global $dblink;
@mysql_close($dblink) or die ('DB ERROR - Could not close: '.mysql_error());
}

データを SQL データベースに投稿するために使用される PHP ファイル:

require("/mnt/library/configdb.php");        
require("/mnt/library/accessdb.php");

//Connect to SQL DB
db_config_cables();
db_connect();

$unsafe_variable = $_POST['unsafe_variable'];

mysql_query("INSERT INTO tablename (column_name,...) VALUES('$unsafe_variable',...)")
/* close connection */
close_db();
4

2 に答える 2