0

ニュースレターを購読または購読解除できるフォームがあります(これは機能します)。問題は、データベースにデータを挿入したいときに問題が発生することです。フォーム自体は次のとおりです。

<form action="subscriptionsedit2.php?CusID=&lt;?=$_GET[">
    " name="frmEdit" method="post"&gt; <?php  
    $objConnect = mysql_connect("localhost","root","root") or  die(mysql_error());  
    $objDB = mysql_select_db("NAW");  
    $strSQL1 = "SELECT ID, Titel FROM Mail";
    $strSQL = "SELECT * FROM Klant WHERE ID =  '".$_GET["ID"]."' "; 
    $objQuery = mysql_query($strSQL);  
    $objQuery1 = mysql_query($strSQL1); 
    $objResult = mysql_fetch_array($objQuery);
    if(!$objResult)  
    {  
    echo "Not found ID=".$_GET["ID"];  
    }  
    else  
    {  
    ?>

    <fieldset>
        <legend>Wijzig</legend>

        <table width="600" border="1">
            <tr>
                <th width="91">
                    <div align="center">
                        ID
                    </div>
                </th>
            </tr>

            <tr>
                <td>
                    <div align="center">
                        <?=$objResult["ID"];?>
                        </div>
                </td>
            </tr>
        </table><br>

        <table width="600" border="1">
            <tr>
                <th width="91">
                    <div align="center">
                        ID
                    </div>
                </th>

                <th width="91">
                    <div align="center">
                        Subscribe
                    </div>
                </th>

                <th width="91">
                    <div align="center">
                        Unsubscribe
                    </div>
                </th>
            </tr><?php 
            $i = 0;  
            while($objResult1 = mysql_fetch_array($objQuery1))  
            {  
            $i++;  
            ?>

            <tr>
                <td>
                    <div align="center">
                        <?=$objResult1["ID"];?>
                        </div>
                </td>

                <td>
                    <div align="center">
                        <input type="checkbox" name="sub" value="10">
                    </div>
                </td>

                <td>
                    <div align="center">
                        <input type="checkbox" name="sub" value="90">
                    </div>
                </td>
            </tr><?php  
            }  
            ?>
        </table>
    </fieldset><!-- content --><input type="submit" name="submit" value="Submit"> <input type="button" name="cancel" value="Cancel" onclick="window.location='klanten.php'"> <?php  
    }  
    mysql_close($objConnect); 
    ?>
</form> 

Subscriptionsedit2.phpの場合データは次のようにデータベースに挿入されます。

mysql_connect('localhost','root','root');
mysql_select_db('NAW') or die (mysql_error());

$Klant_ID = $objResult["ID"];
$Mail_ID = $objResult1["ID"];
$Status = $_POST['sub'];
$Datum = date("d-m-y");

$sql = mysql_query("INSERT INTO Subscriptions (Klant_ID, Mail_ID, Status, Datum) VALUES ('".$Klant_ID."', '".$Mail_ID."', '".$Status."', '".$Datum."')") or die (mysql_error());

これは私が得るエラーです:注意:未定義の変数:16行目の/var/www/Mail/subscriptionsedit2.phpのobjResult注意:未定義の変数:17行目の/var/www/Mail/subscriptionsedit2.phpのobjResult1

ご覧のとおり、変数$Klant_IDと$Mail_IDには値がありません。<?=$objResult["ID"];?>だから私の質問は、Klant_ID( )とMail_ID(<?=$objResult1["ID"];?>)を変数に正しく格納するにはどうすればよいですか?この質問が十分に明確であることを願っていますが、質問がある場合はコメントしてください^^。誰かがこれを行う方法についてアイデアを持っているなら、それは素晴らしいことです!

4

2 に答える 2

1

ところで、mysql、mysqli、またはPDO、フォームの送信$objResult["ID"]中には存在しません!

投稿変数を使用してフォームで送信する必要があります。

フォームの送信中に変数を送信するには、次のような操作を行う必要があります。

<input type"text" name="objResult" value="<?php echo $objResult["ID"]; ?>" />

そして、あなたはあなたの中でそれにアクセスすることができsubscriptionsedit2.phpます$_POST['objResult']

編集

表示したくない場合は、この入力を非表示にします。

<input type"hidden" name="objResult" value="<?php echo $objResult["ID"]; ?>" />
于 2013-03-19T14:40:39.990 に答える
0

そこにあるアプリは、インジェクション攻撃の影響を非常に受けやすくなっています。

まず、SQLステートメントでraw値$GET_とvaluesを使用しないでください。$POST_

次に、 -mysqli_の代わりに使用することは非推奨になり、削除されます。mysql_mysql_

第三に:使用する必要がある場合は、必ず使用しくださいmysql_mysql_real_escape_string

4番目:データベースの整数フィールドに挿入する場合は、値を引用符で囲まないでください。

5番目:さまざまなコードスニペットが相互に関連している場所はわかりませんが、ログファイルに$Klant_IDとの値をダンプ$Mail_IDして、実際に値が含まれていることを確認してください。問題は、SQLステートメント領域自体ではなく、コードの初期にある可能性があります。

于 2013-03-19T14:25:15.653 に答える