1

ユーザーが潜在的な従業員への参照レターをアップロードできるようにするアプリケーションを作成しています。

すべての参照は、URL の末尾に一意の文字列を含む電子メールで送信されます。たとえば、アドレスは www.mywebaddress?url=503241a20b5085_18720621 のようになります。

一意の文字列が有効かどうか (データベースに存在するかどうか) を判断するには、クエリ検索を実行する必要があります。ただし、参照が URL にアクセスしようとすると、セキュリティの質問に答える必要があります。そのため、回答が有効かどうか、以前にアップロードしたことがあるかどうかなどを確認して、リダイレクト先のページを決定する必要もあります。

しかし、クエリのために、私のコードでは、ユーザーが [送信] を 2 回クリックする必要があります。これは本当に面倒ですが、修正方法がわかりません。

これが私のコードの関連する抜粋です:

if ( isset ($_GET['url']) ) {
        $query = "SELECT * FROM ref_info WHERE url='" . $_GET['url'] . "'";
        $result = $db->execute($query);
        if ( empty ($result) ) {
            //error message

        } else {
            $url = $_GET['url'];

            if ( $_SESSION['validated'] ) {
                if ( $result[0]['uploaded'] ==1 ) {
                    $_SESSION['uploaded'] =true;
                } else {
                    $_SESSION['uploaded'] =false;   
                }

                include_once("process_upload.php"); 

            } else { 
                if ( empty($result[0]['answer']) ) {
                    include_once("security.php");

                } else {
                    include_once("security_check.php");
                }
            }
        }

}

フォームを 1 回だけ送信する必要があるように、何かできることはありますか?

提案をお寄せいただきありがとうございます!!

4

1 に答える 1

1
if ( isset ($_GET['url']) ) {
        $query = "SELECT * FROM ref_info WHERE url='" . $_GET['url'] . "'"; //that is really not secure. Take a look at mysql_real_escape_string or something like that in yor $db
        $result = $db->execute($query);
        if ( empty ($result) ) {
            //error message

        } else {
            $url = $_GET['url'];
            if (empty($result[0]['answer']) ) { // page is just opened,form is not yet submitted - ask sequrity question
                include_once("security.php");    
            } else { //oh. Submit is done - let me check if it is Ok
                include_once("security_check.php");
            }
            if ( $_SESSION['validated'] ) { //validation is Ok? Yeah. Answer is not posted yet, so validation fails and we do nothing. Just show a form with a question
                if ( $result[0]['uploaded'] ==1 ) {
                    $_SESSION['uploaded'] =true;
                } else {
                    $_SESSION['uploaded'] =false;   
                }

                include_once("process_upload.php"); 

            } 
        }

}
于 2012-08-23T13:32:08.837 に答える