페이지에 2 개의 버튼이 있습니다. 단추 중 하나는 3 개의 텍스트 상자를 통해 입력되는 날짜를 저장합니다. 다른 하나는 데이터 조작을 수행하는 함수를 호출합니다.HTML 버튼이있는 MySQL
이것은 위에서 언급 한 첫 번째 버튼부터 가지고 있습니다.
<input type="submit" name="gravarnext" value="Gravar" />
<?php
if (isset($_POST['gravarnext'])) {
if ($_POST['atextfield1'] <= 0 OR $_POST['atextfield2'] <= 0 OR $_POST['atextfield3'] <= 0 OR $_POST['atextfield1'] > 31 OR $_POST['atextfield2'] > 12 OR $_POST['atextfield3'] < 2013){ ?>
<script>window.alert("Um ou mais valores são inválidos (Dia 1-31/Mês 1-12/Ano 2013+).");</script>
<?php } else {
$qp = "UPDATE login.next SET dia = '".$_POST['atextfield1']."'";
$rqp = mysql_query($qp);
$qp = "UPDATE login.next SET mes = '".$_POST['atextfield2']."'";
$rqp = mysql_query($qp);
$qp = "UPDATE login.next SET ano = '".$_POST['atextfield3']."'";
$rqp = mysql_query($qp);
echo $_SERVER['PHP_SELF']; ?>
<script>window.alert("Data do próximo sorteio atualizada com sucesso!");</script>
<?php }
}
그리고 이것은
<button onclick="myFunction()">Finalizar</button>
<script>
function myFunction()
{
var r=confirm("Depois de carregar 'ok', todas as ações tomadas são irreversíveis. Desejas continuar?");
if (r==true)
{
<?php
//Refresha o palpite do utilizador para 0 e guarda o palpite antigo como ultpalpite
$qp5 = "UPDATE login.users SET ultpalpite = palpiteatual";
$rqp5 = mysql_query($qp5);
//Gera o número sorteado
$numsort = rand(1,50);
$qp2 = "UPDATE login.sorteio SET ultsorteio = '".$numsort."'";
$rqp2 = mysql_query($qp2);
$qp3 = "UPDATE login.next SET numsorteado = '".$numsort."'";
$rqp3 = mysql_query($qp3);
//Adiciona +1 ao vezesganhou do(s) vencedor(es)
$qp4 = "UPDATE login.users SET vezesganhou = vezesganhou + 1 WHERE ultpalpite = '".$numsort."'";
$rqp4 = mysql_query($qp4);
//Atualiza data do ultimo sorteio
$d = date('j');
$m = date('n');
$y = date('Y');
$aqp1 = "UPDATE login.sorteio SET diaultsort = '".$d."', mesultsort = '".$m."', anoultsort = '".$y."'";
$arqp1 = mysql_query($aqp1);
?>
}
else
{
return 1;
}
}
</script>
그래서, 내 문제는 내가 ("Gravar"라고 함) 첫 번째 단추를 클릭 할 때마다, 모든 기능을 제외하고 완벽하게 실행하는 것이있는 두 번째 버튼에서 각각의 코드 두 번째 단추 ("Finalizar"라고도 함)와 관련된 항목도 실행됩니다. 이것이 원인 일 수 있습니까? 그리고 SQL 취약점 및/또는 잘못된 코딩에 대해 걱정하지 마십시오. 이는 테스트 목적으로 만 사용됩니다.
당신의 문제는 성격이 다르지만 이것은 [악의적 인 SQL 주입]을 요구합니다. (http://en.wikipedia.org/wiki/SQL_injection) 모든 데이터 ... 보안에 관해서 [이 대답] (http://stackoverflow.com/a/15390836/1667004)을보십시오 ... 여기에서 문제가 발생하면 PHP가 콘텐츠가 사용자에게 전송되기 전에 SERVER 측에서 실행됩니다. JavaScript는 클라이언트 측 (브라우저)에 도달 할 때까지 평가되지 않습니다. 그래서 당신의'if' 조건은 아무것도하지 않고, myFunction()의 PHP 내용은 무엇이든 상관없이 실행됩니다 ... – ppeterka
나는 자바 스크립트와 PHP를 혼란시키고 있다고 생각합니다. 두 번째 버튼에 대한 PHP 코드는 항상 클라이언트에 DATA를 보내기 전에 서버에 의해 실행됩니다. – Frildoren