このタスクを実行する方法を網羅的に検索しました。私は、div内のコンテンツをPHP文に処理できる変数に変換する際に問題があります。私はAjaxFormを使ってみました。私はAjaxを試しました。フォーム内にあるdiv内のコンテンツを他のフォームデータと共にデータベースに入れる方法
ここに私のフォームコードは "library.php"というタイトルの下にあります。ここで私はID "入力"とのdivがあります。私は、このdivのデータを取得しようとしています。これは、 "Public"または "Private"のいずれかのオプションになります。私は、ここでdatabase.phpでの
<form method="post" action="library.php" id="form3">
<a id="libOptPP" class="select">
**<div id="input" class="input" name="Privacy">
</div>**
<div id="libOptPP2" class="select-options">
<ul>
<li id="pub" value="1"><span>Public</span> (logo) </li>
<li id="priv" value="2" class="selected"><span>Private</span></li>
</ul>
</div>
</a>
<div class="libOptCS">
<span class="bbCT">
<button type="submit" name="create"> Create </button>
</span>
</div>
</form>
データを提出するために作成ボタンを使用して進みます、私は、変数を送信しようとAjaxを使用しますLibrary.phpの頭部内にあるスクリプトですDatabase.phpの "プライバシー"。この変数には、前のコードブロックに記述されているdivのテキストが含まれます。これは "Public"または "Private"のいずれかのオプションになります。 divのID名を使用する代わりに、私は先に進み、クラスを使用して ".select .input"を選択しました。
<script>
$(document).ready(function main() {
$("create").click(function() {
var privacy = $(.select .input).text();
.ajax({
type: "POST",
url: ../../database/database.php,
data: "privacy="+privacy,
dataType: "html",
async: false,
success: function(data) {
alert(data);
}
});
});
});
</script>
私のデータベースにフォームデータを入力するためのPHPコードです。前のコードで説明したように、作成ボタンをクリックすると、データが適切なテーブルおよび後続の行に転送されます。
if (isset($_POST["create"])) {
$Privacy = mysqli_real_escape_string($db, $_POST['privacy']);
$ETH = mysqli_real_escape_string($db, $_POST['ETH']);
$Email_Phone_Number = $_SESSION['Email_Phone_Number'];
if ($Privacy === "Public") {
$sql = "INSERT INTO library (Title, Privacy, Bio, User_iD)
VALUES ('$ETH', '$Privacy', 'testbio', (SELECT User_iD FROM logstart WHERE Email_Phone_Number='$Email_Phone_Number'))";
mysqli_query($db, $sql);
}
if ($Privacy === "Private") {
$sql = "INSERT INTO library (Title, Privacy, Bio, User_iD)
VALUES ('$ETH', '$Privacy', 'testbio', (SELECT User_iD FROM logstart WHERE Email_Phone_Number='$Email_Phone_Number'))";
mysqli_query($db, $sql);
}
if (mysqli_query($db, $sql)) {
echo "YES!";
} else {
echo "No!";
}
}
どこか変数が特定されていません。 「作成」ボタンを押すと「不明なインデックス:プライバシー」のポップアップが作成されます。言い換えれば、$ _POST ['privacy']には私が必要とするデータが含まれていません。それは私がそれを識別し、さらに残りのコードを使用できるように、PublicまたはPrivateでなければなりません。
PHPはわかりませんが...なぜ入力コントロールを使用していないのですか?非表示、テキスト、またはテキストエリアのいずれであってもですか?また、作成ボタンのクリックイベントにバインドしていますが、送信ボタンです。preventDefaultを呼び出さないので、コードが実行される前にフォームが送信されている可能性があります。 – upsidedowncreature
あなたのコードはSQLインジェクション攻撃に対して脆弱です。パラメーター化された照会とプリペアドステートメントを使用して、悪意のある入力値を使用して攻撃者がデータベースを侵害しないようにする必要があります。 http://bobby-tables.com/には、PHP/mysqliを使用して質問を安全に書く方法の例と同様に、リスクの説明が記載されています。 – ADyson