2017-02-26 115 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 
相關問題