2017-02-26 113 views
1

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

这里的代码片段: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(); 
} 

回答

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 ['消息]代码...等

+0

我想知道......在链接方面,''message = success1'和'&message = success1'是否有区别? –

+0

@SebastianFarham是的。 '?'表示查询字符串的** start **,后面跟着一个变量名,一个'=',然后是它的值。随后的变量通过'&'附加到查询字符串,如下所示:'?var = value&var2 = value2&var3 = value3 ...'。 – Bytewave

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 
+0

好的。如果会话已经在session.php中设置了会怎么样? –

+0

然后在两个地方跳过session_start()。 – Wolen

+0

我试过了。我无法使用该变量。 –

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 
} 
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 
相关问题