2011-01-24 4 views
0

私は現在、高校の出席システムを開発中です。現在、$ _GETメソッドを使用しているので、データを送信するための私のメソッドは比較的面倒です。私はまた、たくさんのSQLクエリを実行しています。私はコードを簡素化するための助けを受けることができるかどうか疑問に思っていました。

このフォームは、学生IDのクラスIDを取得することによって生成されます。出席が取られた場合、ステータス(Absent、Present、Tardy)が取得されます。または、管理者から免除された場合、「Abused」とマークされます。

これはすべて$ _GETによって処理されます。これは、実行中のループです。

私が$ _POSTの代わりに$ _GETを使用している理由は、動的情報をフォームにループして処理する方法がわからないからです。任意のヒント?申し訳ありませんが私は完全にはっきりしていない:私は本当にこれを単純化する方法を見つけるしようとしているので、$ _GETに大きく依存していない(これは巨大なセキュリティリスクですが、賢くない)

ありがとう!

+0

日付.. UNIXのタイムスタンプを使用することをお勧めします。この方法で、「3日前」のレコードを選択する際の柔軟性が向上します。 また、PHPの$ _POSTは$ _GETと同じ方法でアクセスできます。配列は配列です。 –

+0

'$ _GET'は' $ _POST'よりもセキュリティ上のリスクはほとんどありません。どちらもあなたのアプリケーションを破壊したい人が自由に変更できます。しかし、 '$ _POST'を使う理由は2つです:(1)(Well-behaved!)検索エンジンはウェブサーバーに' POST'リクエストを送信しませんが、パラメータ化されたURLを見つけたら 'GET'を送りますそれを覚えているときどき無意味なサイトを壊す)。 (2)ブラウザは、GETだけでどれくらいの情報を提出することができるかについては厳しい制限があります。これはかなり悲惨な金額ですが、POSTではかなり多くのデータを送ることができます。 – pinkgothic

答えて

1

まあ、$ _POSTは$ _GETとまったく同じように使用されています。入力フォームをgetではなくpostを使用するように変更する必要があります。

SQLの場合、JOINを使用して他のテーブルのデータにアクセスします。これは基本的にはあなたがやっていることなので手動で行い、必要なものだけを選択して、ユニークなリターンを期待してください。

ああ、ところで、なぜそれがクラスプロジェクトや何かのためでなければ車輪を再発明するには、Moodleをチェックしてください、出席のためのモジュールやものがありますし、かなりの機能があります。

+0

お返事ありがとうございます。私はMoodleを調べました。主な問題は、私の学校が評価に非常にユニークなアプローチをしていることです。だから、とにかく書き直してしまいます。 非表示の入力フィールドを使用せずにフォームデータを送信するのはどうですか?今は隠れた入力フィールドを使用していて、whileループは使用しています。 –

+0

Moodleがオープンソースであり、あなたの学校がそれほどユニークなアプローチをしていない可能性があります。誰かが変更可能なものを作っている可能性があります。隠された入力フィールドに関しては、学生IDやクラスIDなどの情報を処理するスクリプトにエンドユーザが変更する必要のない情報を得るための完全な有効なメソッドです(また有効なボットを捕まえる方法は、ハニーポットフィールドと呼ばれる、埋められる必要があるように見える空の隠しフィールドを頻繁に埋め込むためです)。彼らは$ _POSTと$ _GETを同じ方法で使用します。 – Phoenix

+0

大丈夫、おそらく私はそれを難し​​い方法でやっているかもしれないと思った。時には重複したエントリーがなぜデータベースに入れられるのかという考えはありますか?データを挿入する前にmysql_num_rowsをチェックしているので異常です。存在する場合は更新する必要があります。関連する行は、$ count変数を持つ2番目のスクリプトの最後に向かっています。 スクリプトは新しいフィールドを挿入してはいけませんが、既存のものを更新するだけでも、教師はデータを何度か送信しているようです。 –

関連する問題