2009-03-13 2 views
0

현재 링크를 통해 올바르게 호출되는 jQuery.js를 사용하는 javascript 파일 'score.js'가 있습니다. score.js의 코드는 다음과 같습니다jquery javascript 함수를 통해 SESSION 변수를 사용하여 MySQL 업데이트

function originalUpdateScore(answer,correct){ 
if (answer == correct) 
{  
$.post('updateScore.php'); 
} 
window.location.reload(true); 
} 

이 기능은 'updateScore.php'를 호출

<?php 
include("dbstuff.inc"); 
$con = mysqli_connect($host, $user, $passwd, $dbname) 
or die ("Query died: connection"); 

$updateScore = "UPDATE `user` SET `tempScore`=`tempScore`+1 
    WHERE (user.Username='$_SESSION[logname]')"; 

mysqli_query($con, $updateScore); 

?> 

데이터베이스가 제대로 업데이트되지 않는 그러나. 내가 선을 교체하는 경우 :와

$updateScore = "UPDATE `user` SET `tempScore`=`tempScore`+1 
       WHERE (user.Username='$_SESSION[logname]')"; 

: 123pf 세션 변수가 올바르게 업데이트 자바 스크립트를 호출하는 PHP 파일에 포함 된 값입니다

$updateScore = "UPDATE `user` SET `tempScore`=`tempScore`+1 
       WHERE (user.Username='123pf')"; 

. 세션 변수를 사용하는 것이 왜 작동하지 않습니까? 쿼리에서 잘못 호출하고 있습니까?

미리 감사드립니다.

답변

5

session_start은 updateScore.php 내부 어디에서 전화 하시겠습니까?

세션을 시작하지 않은 경우 세션 변수를 사용할 수 있다고 생각하지 않습니다.

+0

ypur 응답을 주셔서 감사합니다 .... 그것은 그렇게 단순한 것으로 믿을 수 없습니다! 고맙습니다. –

1

$ _SESSION [ 'logname']을 (를) 제어 하시겠습니까? 그렇지 않다면, 누군가는 쉽게 자신의 로그 이름을 변경하여 SQL을 주입하고 손상 시키거나 데이터베이스를 손상시킬 수 있습니다. 당신이 바로 사기꾼까지 같이 연주하여 자신을 개방하고

$_SESSION['logname']="'; DROP TABLE user;-- "; 

: 그들은이 일 자신의 LOGNAME을 설정할 수 있다면 예를 들어, 사용자 테이블을 잃을 수 있습니다. 이 시나리오에서는 모든 사용자가 언제든지 updateScore.php를 방문하여 통계를 늘릴 수 있습니다.이 스크립트는 답변을 확인하거나 JS가 점수를 확인하기 위해 작성한 토큰을 확인하지 않기 때문에 백 엔드 (PHP)에서 검증하지 않고도 프론트 엔드 (자바 스크립트)에서 이러한 종류의 논리를 유지하는 것은 좋지 않습니다. javascript & AJAX는 사용자 경험을 향상시킬 수있는 매우 유용한 바로 가기이지만 유일한 유효성 검사기로 신뢰할 수 없습니다.

+0

답장을 보내 주셔서 감사합니다. $ _SESSION [ 'logname']은 (는) 다른 곳에서 관리됩니다. 귀하가 언급 한 문제를 해결하기 위해 노력할 것입니다. –

0

아마도 약간의 오류 일 뿐이지 만 질문에 표시 한 코드는 $ _SESSION [logname]을 사용하며 $ _SESSION [ 'logname']이어야합니다.

관련 문제