0

基本的に、アクションのために別の場所にあるphpファイルにリンクするHTMLフォームがあります。現在、フォームを使用してユーザープロファイルを更新し、editprofile.phpに送り返しています。基本的に editprofile.php の上部に、「プロファイルが更新されました」または「更新に失敗しました」の結果を表示したいクエリが送信された場合、問題は、クエリが別のファイルに。

私はこれをやろうとしました。

<?php
   if(!$query)
   {
     echo '<div class="editfail">Profile failed to update!</div>';
   } 
   else 
   {
     echo '<div class="editsuccess">Profile successfully updated!</div>';
   }
?>

これに関する問題を除いて、クエリはこのページで実行されていません。別のページから実行され、ヘッダーを使用して editprofile ページにリダイレクトされました。クエリが別の場所から実行されていますか?

4

3 に答える 3

1

必要がない限り、ヘッダー fxn をいじらないでください - output_buffer の設定などによっては、面倒な場合があります。

やりたいことをすべて 1 つのページで実行できます。

したがって、このようなもの - 一般的な慣例として、そしてある程度のセキュリティのために、フォームをそれ自体に投稿する必要があります - 他のページからの他のものを合格/不合格プロファイルロジックブロックに統合できます:

  <?php
   $query = htmlentities($_POST['profiletext']); #sanitize avec tu code du jour

   if(!$query || $query != 'someacceptablevalue))
   {
     #If it's not posted, or its not a good value, tell them it failed
     # and redisplay the form to try again

     $query_msg = '<div class="editfail">Profile failed to update!</div>';
     $profile_form = "<div_class='profile_rest_of_page stuff'>
           <form action='#' method='post'>
             <input type='text' id='profiletext' name='profiletext/>
           </form>
         </div>";
   } 
   else 
   {
     # They did it - Success, and link to next step
     $query_msg = '<div class="editsuccess">Profile successfully updated!</div>';
     $profile_form = 'No form needed - you did it';
   }

   #One block below handles all in 1 page with above logic:

   echo "<body>
          <div class='profile_message_container'>
             $query_msg
          </div>
         <div_class='profile_rest_of_page stuff'>
             $profile_redo<br/> You did it <a href='next'>next</a>
         </div>
        </body>
        ";       
  ?>
于 2013-06-10T08:28:03.360 に答える
0

これは、次の 2 つの方法で行うことができます。

  1. 改ざんされる可能性がある GET のようなリンクでクエリ結果を送信する

  2. 次のように、フォームがある同じページでフォームを処理します

if(isset($_POST['some_name'])) {
    // Process form
} else {
   // Display form
}
于 2013-06-10T07:35:35.667 に答える