私は、li要素をクリックしたことによってトリガされる$ _POST経由でフォームを渡したい、クラスStudentのインスタンス化されたPHPオブジェクトを持っています。 javascriptコードがフォームを送信します。 $ _POSTにアクセスしてオブジェクトを取得し、オブジェクトのパラメータをPHP変数に代入して、入力フィールドにエコーしたいとします。 HTTPSを使用すると安全ですか?どのようにしてPHPオブジェクトをエンコードし、デコードしてフォームを通過させ、クラスStudentのオブジェクトとして取得して再構築できるようにするのですか?私は、JSONの使用、serialise、base64を見てきたので、これに近づける最善の方法は本当にわかりません。私がチェックした現在の質問は完全な解決策ではないようです。 (関係なく、トークンを使用するのかを信頼することはできませんHTTPリクエストから来て、何でも)
@$selected_student = $_POST['student_identifier'];
// instantiates the teacher object
$teacher = new Teacher();
$teacher->teacherId = $_SESSION['id'];
// getStudents method creates and returns an array of objects of class Student
$students = $teacher->getStudents($teacher->teacherId);
<form id="select_student" method='POST' action="<?php echo ($_SERVER['PHP_SELF']); ?>">
<?php
// iterates the student array displaying the name of each index in the array and setting the value as the student object that I want passed via the form submission
foreach($students as $studentObject) {
?>
<li>
<b><?php echo $studentObject->studentName; ?></b>
<input type="hidden" id="student_identifier" name="student_identifier" value='<?php echo serialize($studentObject); ?>'>
</li>
<?php
}
?>
</form>
あなたのフォームにXSSを開く 'action =" <?php echo($ _SERVER ['PHP_SELF']);?> ''を使ってcsrfトークンを使いません。 –
私は各フォーム提出でcrsfトークンを使用しています - 申し訳ありませんが、これはコードのスニペットです。 – jon
本当にあなたのコードからは分かりません。実際の 'student_identifier'や' $ studentObject'はどこにも使用されていません。簡単なIDで十分である(オブジェクトを検索する)ときに、データにオブジェクトを入れる理由がわからないのですが、大きなbase64文字列は好奇心でさらに調査することを奨励します。シリアル化はデータを保護することを指摘します。 –