2016-04-02 20 views
0

私はフォームのキーでランダムな質問を生成する以下の配列を持っています。PHP、キー付きランダム配列

私は、問題は、問題がデータベースに保存されているキーを頼まれるたびに、大部分のためのものではないされて

...後で使用するために私のデータベース内のキー、例えばパスワードの回復などを保存します質問された質問。 ...

正常に動作し、すべての接続および検証

<?php 
    include("questions.php"); 
    $dbh= $pdo->prepare("INSERT INTO users (secQ) values (?)"); 
    $dbh->bindParam(1, $secQ); 
    $dbh->execute(); 
?> 

そして、これは私のquestions.phpです:ここで

は、キー(secQ)を保存するための私のinsert.phpです

<?php 
    function secQ(){ 
     $questions = array(); 

     $questions[0] = "1"; 
     $questions[1] = "2"; 
     $questions[2] = "3"; 
     $questions[3] = "4"; 
     $questions[4] = "5"; 

     $rand_key = array_rand($questions, 1); 
     return array($rand_key, $questions[$rand_key]); 
    } 
    $q = secQ(); 
    $secQ = $q[0]; 
    $question = $q[1]; 
?> 

これは、secQがデータベースに挿入される前に、 にはinclude( "questions.php")があるからです。これは、フォーム内の要求された質問以外のランダムに異なるキーを再び生成する可能性があります。

おかげlooot

+1

'$ dbh'!==' $ stmt' – Rizier123

+0

申し訳ありませんが実際のコードでは正しく動作しますが、 –

+0

このコードを編集して、フォームはすべて同じファイルにありますか? –

答えて

0

これは良い解決策かもしれません:

次のように私たちは、PHPファイル間の通信にセッションを使用することができます。

insert.phpに:

$secQ = $_SESSION['secQ']; 

questions.php:

$_SESSION['secQ'] = $secQ; 

これはうまくいきますが、データをデータベースに挿入する直前にinsert.phpのセッションを開始するときに、このメソッドのセキュリティが心配です。

これについてのコメントは、多くの助けになります、ありがとうございます。