나는 내 웹 사이트의 형태에 문제가있다. 양식 값은 해당 데이터베이스의 갱신에 사용되는 매개 변수 인 $ _POST 값과 같습니다.
빈 양식 값을 업데이트하고 싶지 않습니다. 그러나 필자는 입력 영역을 의무화하고 싶지 않습니다.
즉, 업데이트하고 싶지 않은 입력 영역에 값을 입력 할 필요없이 특정 콘텐츠 만 업데이트 할 수 있습니다. 그러나 이것에 문제가 있습니다. 빈 양식 값이 업로드되므로 데이터베이스의 값이 공백 값으로 변경됩니다. 나는 SO와 인터넷을 통해 튜토리얼을 찾았고, 유일한 (기능적인) 것들은 입력 박스를 의무적으로 만드는 것들이다. 그건 내가 어떻게 작동 할 것인가가 아니기 때문에 적합하지 않습니다.
나는이 작업을 수행하는 가장 좋은 방법은 제출 단추가 설정되면 입력 영역의 "이름"특성을 javaScript를 통해 변경하는 것입니다. 값이 비어 있거나 null 인 경우 . 나는 이것을하는 법을 알지 못하며 이것이 가능한지 또는 최선의 방법인지를 알지 못한다.
(첫째, 형태 자바 스크립트)
<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 인젝션에 취약하다는 것을 알고 있습니다. 나는 모든 것을 준비하고 실행하기 위해 노력하고 있으며, 일단이 모든 것이 설정되면 웹 사이트가 온라인 상태가되기 전에 보안 문제를 조사 할 것입니다.
나는이 문제를 일주일 넘게 겪어 왔으며 그로부터 벗어나는 길을 찾지 못했습니다.
미리 감사드립니다.
편집
나는 내가 해결하는 사람을위한 두 개의 답을 선택할 수 바랍니다. 그들 둘 다 바로 저를 문제의 해결로 이끌었고, 각자 제가 저의 코드에서 구멍을 볼 수 있도록 도와주었습니다. 둘 다 선택할 수 없기 때문에 마지막 문제를 해결하는 데 도움을 준 사람을 선택했습니다. 정말 고마워요!
제목에 이미 답변이 있습니다 :'if' : http://php.net/manual/en/control-structures.if.php 그리고 이미 스크립트의 다른 부분에서 사용하고 있으므로, 정신 블록은'query()'호출을 조건부로 만들기 위해 그것을 사용하지 못하도록합니까? –
"작동 시키려고"하는 것에 대한 변명을 그만두고 준비된 진술을 사용하기 시작하십시오. 문제를 해결하는 것보다 더 많은 문제를 해결할 수 있습니다. 규칙적인 방식으로 사용하면 문제를 추적하는 데 몇 시간이 걸릴 수 있습니다. 이 경우 문자 그대로 코드가 두 줄 더 추가되어 실수로이 코드가 실수로 생산에 들어갈 때 상처를 입을 수 있습니다. 코드는 사용자가 보지 않을 때 수행하는 경향이 있습니다. – tadman
미안하지만 바보 같으면. 나는 일종의 혼란스러운 방식으로 코드를 배우고있다. 그 다음에 더 많은 노력을 기울일 것이고 준비된 진술을 배울 것입니다. 고맙습니다. –