2017-02-26 13 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はい。 '?'はクエリ文字列の**開始**を示し、その後に変数名、 '='、そしてその値が続きます。それ以降の変数は、 '?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

を持って、あなたは同じに再びリダイレクトする必要はありません。ページ。

他の回答で言及したように、ページ上部のフォームを処理します。

成功または失敗後にメッセージを表示するには、メッセージを変数に格納します。後でfromを指定すると、メッセージ変数がエコーされます。

// 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 
関連する問題