0

基本上,我有一个 HTML 表单,它链接到不同位置的 php 文件以执行操作,目前我正在使用该表单来更新用户配置文件,然后将它们发送回 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

您可以在重定向回文件时发送参数。

例子

如果(mysql_query($update_query)){

     header('location:editprofile.php?msg="success to save"');

}
else
{
    header('location:editprofile.php?msg="failed to save"');
} 

甚至你也可以发送标志

if(mysql_query($update_query))
{
 header('location:editprofile.php?flag=0');
}else
{

header('location:editprofile.php?flag=1');
}

并检查您的 editprofile.php 文件中 flag 的值以显示正确的消息。

于 2013-06-10T08:17:29.163 回答
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

您可以通过两种方式做到这一点:

  1. 在链接中发送查询结果,如可能被篡改的 GET

  2. 在具有您的表单的同一页面中处理表单,如下所示

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