私は私のウェブサイトのフォームに問題がありました。フォームの値は、対応する$ _POST値と同じです。これは、データベースの更新に使用されるパラメータです。
空のフォーム値を更新したくありません。しかし、私は入力領域に義務を負わせたくありません。
つまり、更新したくない入力領域に値を入力する必要がなく、特定のコンテンツのみを更新することができます。しかし、私はこれに問題があります。空のフォーム値がアップロードされているため、データベースの値は空白の値に変更されています。私はSOやインターネット上でチュートリアルを探しましたが、唯一の(機能的な)ものは、入力ボックスを義務的なものにするものです。それは私が働くつもりではないので、合わない。
送信ボタンが設定されている場合、入力領域の「名前」属性を空白に変更するか、Java Scriptを使用して値を空にするかnullにするかはわかりません。私はこれを行う方法を知らないし、これが可能かどうか、または最善の方法を知っていない。ここで
が問題に私の現在のコードです:
(最初、フォームANジャバスクリプト)
<script>
function validade(){
var formId = document.getElementById("configForm");
var allInputs = formId.getElementsByTagName("input");
var input, i;
for (i=0; input = allInputs[i]; i++){
if (input.value == null || input.value == "") {
input.name = "";
}
}
}
<form method="post" action="" id="configForm">
<label for="home">Home:</label>
<br>
<input type="text" id="home" name="home">
<br>
<label for="apendix">Apêndice:</label>
<br>
<input type="text" name="apendix">
<br>
<label for="about">Sobre:</label>
<br>
<input type="text" name="sobre">
<br>
<label for="contato">Contato:</label>
<br>
<input type="text" name="contato">
<br><br>
<input type="submit" value="Carregar" name="submit">
</form>
<?php require_once('editaForma.php'); ?>
(第二に、データベースクエリや$ _POSTの値:)
<?php //credentials
if (isset($_POST["submit"])){
$server = 'hypotetical';
$user = 'hypotetical';
$pw = 'hypotetical';
$BD = 'hypotetical';
//estabelece a conexão
$conn = mysqli_connect($server, $user, $pw, $BD);
if (!$conn) {
die ('<span style="color: #FF0000;">"connection failed: "</span>' . mysqli_connect_error());
}
$home = $_POST["home"];
$apendix = $_POST["apendix"];
$sobre = $_POST["sobre"];
$contato = $_POST ["contato"];
$query = "UPDATE form SET
home= '$home',
apendix= '$apendix',
sobre= '$sobre',
contato= '$contato'
WHERE id='1'";
//$query = "INSERT INTO form (home, apendix, sobre, contato) VALUES ('$home', '$apendix', '$sobre', '$contato')";
if (mysqli_query($conn, $query)){
echo "Alterações feitas com sucesso";
} else {
echo "ERRO!" . $query . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
}
?>
はい、私はDBがSQLインジェクションを受けやすいことを知っています。私はすべてを稼働させようとしていますが、これがすべて設定されたら、ウェブサイトがオンラインになる前にセキュリティ上の問題を調べます。
私はこの問題を1週間以上抱いていて、それを解決する方法は見つけられません。
ご連絡いただきありがとうございます。
EDIT
私は私が解決するもののために2つの答えを選択することができることを望みます。どちらも問題の解決に導かれ、それぞれが私のコードの穴を見るのを助けました。私は両方を選ぶことができないので、私は最後の問題を解決するために私を助けた人を選んだ。すべてありがとう!
あなたのタイトルにはすでに答えがあります: 'if':http://php.net/manual/en/control-structures.if.phpそしてあなたは既にあなたのスクリプトのどこかでそれを使っているので、メンタルブロックは 'query()'コールを条件付きで使用するのを妨げますか? –
"それを稼働させようとする"という言い訳を止め、準備されたステートメントを使い始める。彼らは作成するよりも多くの問題を修正します。規律ある方法でそれらを使用すると、追跡に時間がかかります。この場合、文字通り2行のコードが追加され、このコードが不注意に生産に入る場合は、傷つく世界を救うことができます。コードは、あなたが見ていないときに行う傾向があります。 – tadman
愚かな音がする場合は申し訳ありません。私は混沌としたやり方でコードを学習しています。それにもっと力を入れ、準備された陳述を学ぶでしょう。ありがとうございました。 –