使用Php重定向到同一页面以及成功消息

时间:2017-02-26 00:44:39

标签: php redirect concatenation

重定向到同一页面后显示成功消息的最佳方法是什么?我一直在考虑用javascript做这个,但也许有办法用Php做到这一点?用户从 profile.php 提交并被重定向到同一页面。我想抓一个变量......我可以在$_SERVER['HTTP_REFERER']之后连接吗?什么是最好的方法?

这里有一段代码:query.php

$stmt->execute() or die(mysqli_error($db)); 

if($stmt){
 // echo "Data Submitted succesfully";
  header('Location: ' . $_SERVER['HTTP_REFERER']);
exit;
  }
$stmt->close();
$db->close();
}

4 个答案:

答案 0 :(得分:1)

您可以使用会话。只需启动会话,将消息保存在全局数组$_SESSION中,然后在profile.php中检查$_SESSION是否设置了您的密钥并且它不为空显示它。之后,您可以在$_SESSION中取消设置密钥。

<强> query.php

<?php
session_start();
//your code
if($stmt) {
    $_SESSION['myMessage'] = 'Some message';
    //your code
}
//rest of your code

<强> profile.php

<?php
session_start();
//your code
if(isset($_SESSION['myMessage']) && $_SESSION['myMessage'] !== '') {
    //display message or do with it what you want
}
//rest of code

答案 1 :(得分:1)

您可以跳过会话,并将url查询参数作为代码或消息传递。

$stmt->execute() or die(mysqli_error($db)); 

if($stmt){
 // echo "Data Submitted succesfully";
  header('Location: ' . $_SERVER['HTTP_REFERER'] . '?message=success1');
exit;
  }
$stmt->close();
$db->close();
}

然后有代码检查$ _GET ['message] ...... etc

答案 2 :(得分:0)

如果您在同一页面处理表单,则无需进行任何重定向。 达到预期结果的解决方案将是这样的:

  • 将表单处理代码放在PHP脚本的最顶层,即 profile.php 页面。
  • 使用布尔变量保存->execute()语句的状态,并在代码的稍后位置使用相同的变量。

所以代码就像这样:

// Declare a boolean variable at the beginning
$status = false;

    // your code
    $status = $stmt->execute(); 
    $stmt->close();
    $db->close();
}

if($status){
    // Data submitted succesfully
}else{
    // Data couldn't get submitted
}

答案 3 :(得分:0)

如果要在同一文件中处理表单,则无需再次重定向到同一页面。

正如其他答案所述,您处理页面顶部的表单。

要在成功或失败后显示消息,请将消息存储在变量中。稍后如果设置了,则回显消息变量。

// Check if form was submitted

  if(isset($_POST['submit'])) { // I name the submit button "submit"
      // process the form

      if ($stmt->execute()) {
          $message = "<div> Success </div>";
      } else {
          $message = "<div> Failed </div>";
      }
  }

// Display The form and the message if not empty

  if (! empty($message)) {
      echo $message;
     } 

// Form