0

次の php クエリを使用して、CMS システムにテーブルをインストールしています。

$q=new mysql("
INSERT INTO `adm` (`id`, `login`, `adm`, `passwd`, `czas`, `logged`, `ip`, `email`) VALUES
(0, 'admin', 1, PASSWORD('admin'), 0, 0, '0.0.0.0', 'admin@domain.com');
");

/settings/contact.inc.phpただし、電子メール admin@domain.com の代わりに、次のファイル内に保存された電子メールを使用したいと思います。

    <?php    
$emailaddress='admin@domain.com';
    ?>
4

6 に答える 6

3

ファイルをインクルードして変数を使用するだけです。

require_once("/settings/contact.inc.php");

$q=new mysql("
INSERT INTO `adm` (`id`, `login`, `adm`, `passwd`, `czas`, `logged`, `ip`, `email`) VALUES
(0, 'admin', 1, PASSWORD('admin'), 0, 0, '0.0.0.0', '$emailaddress');
");

SQLインジェクションに注意

この場合、 がどこ$emailaddressから来たのかがわかり、コンテンツを信頼できます。それ以外の場合は、コードをSQL インジェクションから保護する必要があります。

したがって、関数を使用して、準備済みステートメントを使用することをお勧めしますmysqli

次に、クエリ内の変数を疑問符または名前付きプレースホルダーに置き換えることができます。

"INSERT INTO `adm` (`id`, `login`, `adm`, `passwd`, `czas`, `logged`, `ip`, `email`) VALUES (0, 'admin', 1, PASSWORD('admin'), 0, 0, '0.0.0.0', ?);"

mysqli_stmt_bind_param関数$emailaddressを使用してバインドします。

于 2013-05-21T11:29:59.827 に答える
2

次のように簡単に使用できます。

$query = "INSERT INTO `adm` (`id`, `login`, `adm`, `passwd`, `czas`, `logged`, `ip`, `email`) 
          VALUES (0, 'admin', 1, PASSWORD('admin'), 0, 0, '0.0.0.0', '$emailaddress')";

注:ファイルを含める必要があり/settings/contact.inc.phpます。

必ずお読みください: SQL インジェクション攻撃! 代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事は、どちらを決定するのに役立ちます。

于 2013-05-21T11:29:52.797 に答える
1

ファイルをインクルードすると、以下のように all 変数を使用できます。

<?php include_once('/settings/contact.inc.php'); ?>
于 2013-05-21T11:36:21.487 に答える
1

/settings/contact.inc.php を含めて、$emailaddress 変数を使用できます。

于 2013-05-21T11:30:54.460 に答える
0

すべての回答が素晴らしかったので、すべてに投票しました。誰もが提案したその方法に加えて、 and を使用してそれを行うことができfopenますfread。私はその方法が単純な方法であることを知っていますが、私の方法は別の方法です。

$filePath = './settings/contact.inc.php';

$handle  = fopen($filePath,"r+");
$content = fread($handle,filesize($filePath));
$array = explode(" ",$content);
foreach($array as $word)
{
    if(filter_var($word, FILTER_VALIDATE_EMAIL))
    {
        $emailaddress = $word;
    }
}
fclose($handle);

$q=new mysql("INSERT INTO `adm` (`id`, `login`, `adm`, `passwd`, `czas`, `logged`, `ip`, `email`) 
VALUES
(0, 'admin', 1, PASSWORD('admin'), 0, 0, '0.0.0.0', '$emailaddress');");
于 2013-05-21T11:48:55.547 に答える