私はstudentIDが入力されたフォームを持っています。入力したstudentIDがデータベースにあるIDを確認したいのですが、次のページにフォームを投稿しています。 AJAX呼び出しを行う - そして、あなたが入力が本当に 乾杯PHP停止フォームから転載
答えて
を保持するために、セッションを行うことができますが、これは何をしたいのですか?
<form id = "form" action = "./?page=markandfeedback" method = "post">
<br>
Mark for:
<INPUT id="stud" onkeypress="return isNumberKey(event)" type="text" name="stud" value="Enter Student Number">
<input type="submit" value = 'Continue'>
<?
$studID = $_POST['stud'];
$module2 = $_SESSION['module'];
$ex = $_POST['exer'];
$studerr = array();
$sql = 'SELECT * FROM `student`, `modules` WHERE `studentID` = '.$studID.' AND `moduleCode` = '.$_SESSION['module'];
$result = mysql_query ($sql);
// echo $_SESSION['module'];
if ($result == NULL) { // nothing found
echo "the student id you entered is not in the database";
}
else {
$_SESSION['student'] = $studID;
Header("Location: http://www.whereever.com/"); // send the browser where you want
exit();
}
?>
EDIT: 私は他の回答に行きました。私はあなたがmysqlの注入を正しくチェックすると仮定します。私はAJAXをすべて動作させて実装することをお勧めします。私の解決策の背後にあるアイデアは、問題を可能な限り簡単に解決することでした。あなたはそれから派手な何かをしたい場合は、可能性:
- は、idが
- を提示するためにあなたのJavascriptを教えて見つからなかったことを、PHPを経由して、全体のフォームを生成し、入力フィールドにユーザーに伝えますいくつかの方法で情報
- AJAXを使用してください。誰もがAJAXでフォームを愛しています。
- ユーザーが有効なIDを入力したと想定することもできます。あなたはidが実際に有効であるかどうかを確認します。そうでない場合は、フォームにユーザを戻し、PHPにエラーメッセージを出力するように指示します(おそらくgetを介して)。この可能性は通常ではありません。私には利点があるかどうかはわかりません。
ユーザーからのデータを必要としない場合は、mysql_num_rowsヒントも便利です。私はあなたがSELECT *のためにデータで何かしたいと思った。
を開始する場所を次の2つの異なる方法
- AJAXでこれを行うことができます知ってはいけない
をstudentIDページにエラーが表示されない場合あなたのサーバーに接続し、そのIDが存在する場合はエラーを表示します。それ以外の場合は次のページに進みます。
- PHP - フォームに隠れた入力を置き、フォームのアクションを同じページにして、入力フィールドの$ _POST ['field_name'];
そして、あなたは別のページへのアクションを作成し、変数をバック返すか、エラーメッセージ
ユーザ名のチェックを行うコントローラを個別に作成します。
ajaxを使用して、ユーザーの入力が有効かどうかを確認します。
ですから、このようなものがあります:
<input id="stud" onchange="checkStudentId(this)" />
<script>
function checkStudentId(inputElement) {
var id = inputElement.value();
$.ajax({
url: "test.html",
context: {id:id}
}).done(function() {
// Check the return result
});
}
</script>
ここでは、あなたが実際に学生の把握するために、いくつかの方法でサーバーに接続する必要がありjqueryのAJAX http://api.jquery.com/jQuery.ajax/
Ajaxを使用している質問執筆者をひいきにするつもりはないが、現在のレベルを少し上回る可能性があります。 – davidjwest
素敵なUX拡張ですが、実際に検証の問題を解決していません。私が私の答えで指摘したように - これが失敗するいくつかの方法があります。 – gregmac
すべてを解決しようとしていません。作者は私が本当に複雑なものにしたくないように、プログラミング上はとても緑色に見えます。 XSSやSQLInjectionを理解するように彼に尋ねるのは、おそらく彼がやろうとしていることです。表現のように、たわごとがファンに当たるまで、あなたは彼に話そうとしていることを理解していませんが、そうすると、彼は学び、忘れることはありません。 – Churk
への参照です存在する。この状況で通常行うことは、サーバーにフォームを送信し、サーバー側で検証を実行することです。生徒がいる場合は、「次の」ページに戻ります。生徒が存在しない場合は、同じフォームをエラーメッセージと共にもう一度返す(またはロケーションヘッダーを使用してリダイレクトする)。
もう一つの一般的な方法は、(私は他の多くの人が推薦されて参照する)非同期にチェックするためにAJAX要求を使用することです。 学生IDの入力を完了し、リアルタイムで効果的にエラーメッセージを表示しているので、実際に検証を行っている場合にのみ、この方法をお勧めします。このように、AJAXは素早いユーザーのフィードバックを提供するのに便利ですが、実際の解決策はありません。これにかかわらず、フォームがとにかく提出されたとき、または最低でもフォームが無効なIDで送信されたときにどうなるかを検討し、処理する必要があることに注意してください。
-
このチェックをバイパスすることができます
- 人々
- は、別のユーザーがチェックが行われた時間との間に学生IDを削除した可能性があり(クライアント側からのすべての要求が敵対的とみなされ、あなたが暗黙的に何を信頼することはできません)効果的にあなたが仕事の量を倍にしているので、フォームは、
- が誤って合格または否定応答意味をなさないをonSubmit AJAXを行う
を認識しないように、検証を引き起こし、あなたのコード内の誤りがある可能性が提出されましたサーバーを2つのハンドルにする別々のリクエストを連続して送信します。それは単に問題に対する誤った答えです。
この実装の最大の問題は、すべてが混じっているので、すぐに非常に毛深くて難しくなることです。
ここでは、テンプレート言語(PHPコードとHTMLマークアップの混在)のようにPHPを使用してヒントを開始し、ビュー(HTML)とPHPコードを切り離したフレームワークMVC patternという人口を使用しているので、このコードはコントローラと呼ばれます。サーバーの応答方法を制御するためです)。これは、プロフェッショナルな開発者がどのように働くかです。 Kohana、CakePHP、およびZendはすべて、かなり一般的なMVCフレームワークの例です。これらはすべて専門的に使用されています。
これを試してみてください:
は<?
if(isset($_POST['stud'])){
$studID = $_POST['stud'];
$module2 = $_SESSION['module'];
$ex = $_POST['exer'];
$studerr = array();
$host="hostname";//your db host
$user="user";//your db user
$pass="pass";//your db pass
$conn=mysql_connect($host,$user,$pass);
$sql = 'SELECT * FROM `student`, `modules` WHERE `studentID` = '.$studID.' AND `moduleCode` = '.$_SESSION['module'];
$result = mysql_query ($sql,$conn);
if(mysql_num_rows($result)>0){//the id was found in the DB, do whatever here...
echo $_SESSION['module'];
$_SESSION['student'] = $studID;
Header("Location: http://www.whereever.com/");//redirect to wherever
$error=false;
}
else{//id was not found
$error=true;}
}//end of isset
?>
<? if($error===true){?> <div> The id was not found.... </div> <?}?>
<form id = "form" action = "<? echo $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; ?>" method = "post">
<br>
Mark for:
<INPUT id="stud" onkeypress="return isNumberKey(event)" type="text" name="stud" value="Enter Student Number">
<input type="submit" value = 'Continue'>
それでは、これがすることです:ユーザーヒットはDBに、conectsを提出し、チェックするとIDが存在する場合...それがないならば、それはwherever.com
にリダイレクト(コメントを参照)、エラーがなければmessegeが表示されます。 db変数の値を自分自身($host, $user, $pass
)に変更してください。
- 1. XamarinフォームProgressBar停止
- 2. C#フォーム移動停止イベント
- 3. 回転と移動を停止する
- 4. cssで回転アニメーションを停止する
- 5. フォームを送信してからFirefoxを停止する
- 6. jQueryがbeignからフォームを停止しない
- 7. キャッシングからjavascriptを停止
- 8. 配列の転載
- 9. 回転オブジェクトは、中回転を停止さ/境界
- 10. 停止ユーザーの私のページを残してからユーザーを停止するには、フォーム
- 11. jQuery停止フォームの検証submit
- 12. インターネットエクスプローラで提出するフォームを停止
- 13. WindowsフォームOnClosingスレッドを停止する
- 14. jQuery:フォームのデフォルトアクションを停止する
- 15. 回転時にアニメーションを中断/停止できますか?
- 16. iOS - アプリケーション外からのUILocalNotificationの停止
- 17. リロードからMKMapViewを停止する
- 18. performSelectorの停止:実行中から
- 19. タイマーからNSRunLoopを停止する
- 20. 通知からバックグラウンドサービスを停止する
- 21. 他のアクティビティからasynctaskを停止
- 22. php cliバッチスクリプトがランダムに停止する
- 23. 出力バッファをPHPで一時停止
- 24. .htaccess画像アップロードディレクトリのPHPを停止
- 25. タイマーの起動と停止PHP
- 26. AJAXでリフレッシュ停止は、Javascript、PHP
- 27. 出力を停止するPHP()が
- 28. Apache Tomcatからアプリケーションをアンデプロイ/停止する前にプロセス/スレッドを停止する
- 29. PHP:条件が満たされたらImplodeを停止する
- 30. C#タイマー停止後のイベントハンドラーの停止
あなたはSQLインジェクションに**広く開かれています**あなたがまだいなければあなたはハッキングされます**。この問題を完全に回避するには、PDOで準備されたクエリを実行する方法を学びます。 – Brad
mysql_num_rowsについて聞いたことがありますか?クエリを使用して結果が返され、それに応じて動作するかどうかを確認し、0の場合はエラーを表示し、そうでない場合はユーザーに処理を続行させることができます。 http://php.net/manual/en/function.mysql-num-rows.php – davidjwest