2009-03-13 9 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); 

?> 

データベースが正しく更新されていませんが。

123pfは、セッション変数は、それが正しく更新JavaScriptを呼び出すPHPファイルに含まれている値である
$updateScore = "UPDATE `user` SET `tempScore`=`tempScore`+1 
       WHERE (user.Username='123pf')"; 

:と

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

:私はラインを交換する場合。なぜセッション変数の使用はうまくいかないのですか?クエリで間違って呼び出していますか?

ありがとうございます。

答えて

5

session_startはupdateScore.phpのどこにでも呼び出していますか?

セッションを開始していない場合は、セッション変数が使用可能とは思われません。

+0

ypur応答ありがとうございました....それはそれが何か簡単だったとは信じられません!ありがとうございました。 –

1

また、 $ _SESSION ['logname']の制御がありますか?もしそうでなければ、誰かが簡単にログ名を変更してSQLを挿入し、データベースに損害を与える可能性があります。あなたが右の不正行為まで、このように再生することによって自分自身を開いている

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

:彼らはこれをする彼らのログ名を設定することができました場合たとえば、あなたは自分のユーザーテーブルを失う可能性があります。このシナリオでは、ユーザーはいつでもupdateScore.phpにアクセスして統計情報を増やすことができます。そのスクリプトは回答を確認したり、スコアがOKであるとJSが構築するトークンをチェックしたりしないためです。この種のロジックをバックエンド(PHP)で検証せずにフロントエンド(javascript)に保存することは悪い考えです。 javascript & AJAXはユーザエクスペリエンスを向上させる非常に役立つショートカットですが、唯一の妥当性チェッカとして信頼することはできません。

+0

あなたの回答に感謝します。$ _SESSION ['logname']は他の場所で管理されています。 –

0

おそらく転写エラーですが、質問に表示されたコードは$ _SESSION [logname]を使用しています。$ _SESSION ['logname']にする必要があります。

関連する問題