2014-03-30 126 views
3

我有一個HTML表單,其「action」屬性調用一個contact.php文件。問題是,我提交表單後,可見的文件是一個空白頁面,地址爲contact.php,我想再次看到主頁面的形式。如何在使用php提交表單後返回上一頁?

HTML: 
<form id="myForm" action="php-contact/contact.php" 
         method="post" class="contact_form" autocomplete="off" 
         role="form"> 
          <div class="form-group"> 
          <label for="input-subject">subject</label> 
          <input name="subject" type="text" class="form-control" id="subject" placeholder="your subject" maxlength="20"/> 
          </div> 

          <div class="form-group">  
           <label for="input-name">name</label> 
           <input name="name" type="text" class="form-control" id="name" placeholder="your name" maxlength="20"/> 
          </div> 

          <div class="form-group">  
          <label for="input-email">email address</label> 
          <input name="email" type="text" class="form-control" id="email" placeholder="your email" maxlength="40"/> 
          </div> 

          <div class="form-group" > 
           <label for="input-message">message</label> 
           <textarea name="message" cols="10" rows="10" class="form-control" id="comment" ></textarea> 
          </div> 

          <button name="myFormSubmitted" type="submit" class="btn btn-primary btn-lg btn-block">send</button> 
         </form> 

PHP: 
    <?php 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $subject = $_POST['subject']; 
    $message = $_POST['message']; 

    $to = "[email protected]"; 
    $message = ' 
    name: '.$name.' 
    email: '.$email.' 
    message: '.$message.' 
    '; 

$headers = 'From: [email protected]'; 

    if (
    mail($to, $subject, $message, $headers) 
) 
     echo"<script>alert('message send succesfully')</script>"; 
    else 
     echo"<script>alert('message not send')</script>"; 

?> 
+0

一個字:** AJAX **。 –

回答

4

添加JS您的警報,然後

echo "<script> 
      alert('message sent succesfully'); 
      window.history.go(-1); 
    </script>"; 
+0

我試着用你的解決方案,頁面返回:alert('message succeededfully'); window.history.go(-1); 「; else echo」「;?> –

+0

然後你的PHP代碼打破了某處尋找合適的開啓和關閉標籤 –

+0

這是工作,我把腳本放在php代碼之外....但是這個提示出現在空白處頁面,並且只在表單加載後。我想通過表單加載 –

0

在你contact.php文件重定向後,只需使用類似的PHP代碼的末尾:

header("location:yourfilenamehere.php");  

這將重定向回你指定的任何頁面。

+0

顯示警報(如果表單已正確發送)我在php代碼和工作後添加了此代碼: ...但返回頁面頂部,不要形成 –

+0

對不起,不知道你在問什麼?你的意思是把這個評論放在另一個答案上嗎?這與我提供的解決方案無關。 – Charlie74

+0

不,我希望當返回到index.html頁面時,它會特別爲這個表單所在的部分做準備。 –

0

你可以做兩件事情......

1)有你的PHP邏輯形式的文件,並提交到該文件。在文件頂部,放置如下內容:

if(isset($_POST['name'])) { 
// your sending logic 
} 

後跟您的表單。

2)使用header()函數重定向到您的表單。

header("Location: form.html"); 
+0

這不會在這裏工作,因爲他們已經以JavaScript警報的形式發送輸出 –

+0

@Hanky웃Panky的確如此。雖然不是我的第一選擇。也許header(「Location:form.php?send = success」);並檢查$ _GET ['發送']以顯示錶格上方的成功消息 –

+0

是的,這很好 –

0

我覺得發佈這個答案很不好,因爲它只是連接兩個其他的答案。

第一部分

Charlie74的這個頁面

// add the message you want to show to the user 
header("Location: yourfilenamehere.php?alertmsg=message+send+succesfully"); 
exit(); 

查詢字符串第二部分檢查了ALERTMSG名

See SO post for getParameterByName:

function getParameterByName(name) { 
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
     results = regex.exec(location.search); 
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 

在你的頁面上的答案重定向呼叫getParameterByName功能N:

<script> 
var msg = getParameterByName('alertmsg'); 

if (alertmsg.length > 0) { 
    alert(msg); 
} 
</script> 
8

二者必選其一$_SERVER["HTTP_REFERER"]或窗體上使用隱藏域與當前頁面的網址:

<form action="myAction.php"> 
    <input type="hidden" name="destination" value="<?php echo $_SERVER["REQUEST_URI"]; ?>"/> 
    <!-- other form inputs --> 
    <input type="submit"/> 
</form> 

myAction.php

<?php 
    /* Do work */ 
    if(isset($_REQUEST["destination"])){ 
     header("Location: {$_REQUEST["destination"]}"); 
    }else if(isset($_SERVER["HTTP_REFERER"])){ 
     header("Location: {$_SERVER["HTTP_REFERER"]}"); 
    }else{ 
     /* some fallback, maybe redirect to index.php */ 
    } 

然後即使如此,你應該有後備,以防某些原因客戶端不尊重HTTP重定向,如一些重定向JavaScript,一個元重定向和到目的地的鏈接。

+0

這是一種更好和更可靠的方式來將數據提交給數據庫時或變量附加到一個url。您不希望瀏覽器只返回一個頁面(這可能最終會多次提交表單或顯示錯誤),您希望它實際上轉到url,有效地使用新數據重新加載頁面,使用選項可將附加變量附加到url(如成功/錯誤消息)。 – testing123

相關問題