2016-05-29 152 views
-3

好吧,我在我的智慧結束在這裏。我正在爲一位朋友建立一個網站,以展示他的工作。每一塊都有它自己的頁面。在這些網頁上,我們有一個鏈接使用php填充表單域

<a class="btn" href="../contact_2.html">Contact us about this item</a> 

這需要我們的聯繫方式頁面,用戶有望取得聯繫之前,以填補收入細節。我們想要做的是讓「主題」字段填充鏈接被點擊的頁面主題的名稱。即你正在(../port_pages/38mmspruce.html),你點擊「聯繫我們」鏈接,當你到達「contact.html」頁面時,主題字段已經填充了「38mm Spruce」。 現在,表單功能完美 - $ _POST方法正在使用,它發送表單,因爲它應該。然而,試圖讓主題領域充滿活力正在讓我轉彎。我得到的最接近是與這個網站:

<label for="subject">Subject *</label> 
<input id="subject" type="text" name="subject" class="form-control" 
placeholder="Please enter the subject you'd like to discuss *" 
value="<? php echo $_POST='subject'?>" 
rows="1" required="required"> 

與填充主題領域:

<? php echo $_POST='subject' ?> 

而不是實際的主題。我已經嘗試了這一點,我已經將每一次出現的$ _POST更改爲$ _GET,但它返回相同的結果。如果我將錨點更改爲:

<a class="btn" href="../contact.php">Contact us about this item</a> 

它在不加載表單頁面的情況下關閉電子郵件。我已經嘗試將查詢字符串添加到錨點,但它們不返回任何數據。我知道這一定非常簡單,但我已經對我的頭撞了近一個星期了,儘管試圖研究這個問題的每一個可能的變化,我找不到正確的答案。下面是相關網頁代碼:

contact.php

<?php 


$from = 'Demo contact form <[email protected]>'; 
$sendTo = 'Demo contact form <[email protected]>'; 
$subject = $_POST['subject']; 
$fields = array('name' => 'Name', 'email' => 'Email', 'subject' => 
'Subject', 'message' => 'Message'); 
$okMessage = 'Contact form succesfully submitted. Thank you, I will get 
back to you soon!'; 
$errorMessage = 'There was an error while submitting the form. Please 
try again later'; 

try 
{ 
$emailText = "You have new message from contact 
form\n=============================\n"; 

foreach ($_POST as $key => $value) { 

    if (isset($fields[$key])) { 
     $emailText .= "$fields[$key]: $value\n"; 
    } 
} 

mail($sendTo, $subject, $emailText, "From: " . $from); 

$responseArray = array('type' => 'success', 'message' => $okMessage); 
} 
catch (\Exception $e) 
{ 
$responseArray = array('type' => 'danger', 'message' => $errorMessage); 
} 

if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && 
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
$encoded = json_encode($responseArray); 

header('Content-Type: application/json'); 

echo $encoded; 
} 
else { 
echo $responseArray['message']; 
} 


?> 

conatact.js

$(function() { 

$("#contact-form").submit(function() { 

    var url = "contact.php"; 


    $.ajax({ 
     type: "POST", 
     url: url, 
     data: $(this).serialize(), 
     success: function (data) 
     { 
      var messageAlert = 'alert-' + data.type; 
      var messageText = data.message; 

      var alertBox = '<div class="alert ' + messageAlert + ' 
alert-dismissable"><button type="button" class="close" data- 
dismiss="alert" aria-hidden="true">&times;</button>' + messageText + 
'</div>'; 
      if (messageAlert && messageText) { 
       $('#contact-form').find('.messages').html(alertBox); 
       $('#contact-form')[0].reset(); 

      } 
     } 
    }); 
    return false; 
}); 

}); 

最後,HTML(編輯的組成部分整版公佈的要求。 )

<body> 

<!-- Navigation --> 
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation"> 
    <div class="container"> 

     <div class="navbar-header"> 
      <button type="button" class="navbar-toggle" data- 
    toggle="collapse" data-target="#bs-example-navbar-collapse-1"> 
       <span class="sr-only">Toggle navigation</span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
      </button> 
      <a class="navbar-brand" href="index.html">Those That 
       Know</a> 
     </div> 

     <div class="collapse navbar-collapse" id="bs-example-navbar- 
     collapse-1"> 
      <ul class="nav navbar-nav navbar-right"> 
       <li> 
        <a href="index.html">Home</a> 
       </li> 
       <li> 
        <a href="about.html">About</a> 
       </li> 
       <li> 
        <a href="mainportfolio.html">Portfolio</a> 
       </li> 

       <li class="active"> 
        <a href="contact_2.html">Contact</a> 
       </li> 


        </ul> 
       </li> 
      </ul> 
     </div> 
     <!-- /.navbar-collapse --> 
    </div> 
    </nav> 



    <!-- Page Content --> 
<div class="container"> 

    <!-- Page Heading/Breadcrumbs --> 
    <div class="row"> 
     <div class="col-lg-12 text-left"> 
      <h1 class="page-header">Contact 
       <small>Get in touch</small> 
      </h1> 
      <ol class="breadcrumb"> 
       <li><a href="index.html">Home</a> 
       </li> 
       <li class="active">Contact</li> 
      </ol> 
     </div> 

    </div> 
    <!-- /.row --> 



    <!-- Content Row --> 

     <!-- Map Column --> 

     <!-- Contact Details Column --> 

      <div class="row"> 
     <div class="col-md-6"> 
      <img class="img-responsive" src="images/About Main Pic.png" 
    alt=""> 
     </div> 
     <div class="col-md-6"> 
      <h2>Contact Details</h2> 
      <h2>Those That Know HQ<br>Wallsend-on-Tyne<br> 
      </h2> 
      <p><i class="fa fa-envelope-o"></i> 
       <abbr title="Email">E</abbr>: <a 
    href="mailto:[email protected]">[email protected]</a> 
      </p> 
      <p><i class="fa fa-clock-o"></i> 
       <abbr title="Hours">H</abbr>: Open 24 hours</p> 

      <ul class="list-unstyled list-inline list-social-icons"> 
       <li> 
        <a class="btn btn-social-icon btn-facebook" 
    href="#"><i class="fa fa- 
    facebook-square fa-2x"></i></a> 
       </li> 
       <li> 
        <a class="btn btn-social-icon btn-envelope"><i 
class="fa fa-envelope-square fa-2x"></i></a> 
       </li> 
       <li> 
        <a class="btn btn-social-icon-large btn-instagram" 
href="#"><i class="fa fa-instagram fa-2x"></i></a> 
       </li> 
       <button onclick="goBack()">Back</button> 

     </div> 
    </div> 

      </ul> 

     </div> 
    </div> 


    <div class="container"> 

     <div class="row"> 

      <div class="col-lg-12"> 

       <h1>Get in touch with <a href="contact_2.html">Those 
That Know</a></h1> 

       <p class="lead">If you'd like to contact me about 
placing an order, or about anything you've seen on the site, please 
fill in the form below.</p> 
       <p>Please include information about the piece you've 
been looking at. It'll help us to get started on your order.</p>  


       <form id="contact-form" method="post" 
action="contact.php" name="contact-form" role="form"> 

        <div class="messages"></div> 

        <div class="controls"> 

         <div class="row"> 
          <div class="col-md-6"> 
           <label for="form_name">Name *</label> 
           <input id="form_name" type="text" 
name="name" class="form-control" placeholder="Please enter your name 

*" required="required"> 
          </div> 

          <div class="col-md-6"> 
           <label for="form_email">Email *</label> 
           <input id="form_email" type="email" 
name="email" class="form-control" placeholder="Please enter your email 
*" required="required"> 
          </div> 

          <div class="col-md-12"> 
           <label for="form_subject">Subject * 
</label> 
           <input id="form_subject" type="text" 
name="subject" class="form-control" placeholder="Please enter the 
subject you'd like to discuss *" 
           value="<? php echo $_POST['subject'];? 
>" 
           rows="1" required="required"> 
          </div> 

          <div class="col-md-12"> 
           <label for="form_message">Message * 
</label> 
           <textarea id="form_message" 
name="message" class="form-control" placeholder="Your message here *" 
rows="4" required="required"></textarea> 
          </div> 

          <div class="col-md-12"> 
           <input type="submit" class="btn btn- 
success btn-send" value="Send message"> 
          </div> 

          <div class="col-md-12"> 
           <p class="text-muted"><strong>* 
</strong> These fields are required.</p> 
          </div> 
         </div> 
        </div> 


       </form> 

      </div><!-- /.8 --> 

     </div> <!-- /.row--> 

    <!-- /.container--> 

     <footer> 
     <div class="row"> 
      <div class="col-lg-12"> 
       <p>Copyright &copy; Those That Know 2016</p> 
      </div> 
     </div> 
    </footer> 
    <script> 

function goBack() { 
window.history.back(); 

} 



</script> 




    <script src="https://code.jquery.com/jquery-1.12.0.min.js"> 
</script> 
    <script 
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/ 
bootstrap.min.js"> 
</script> 
    <script src="js/contact.js"></script> 
</body> 
</html> 

正如您所看到的,它是Bootstrap表單,並附帶了.js和.php文件。我已經將郵件設置更改爲真正的郵件設置進行測試,以確保它可以正常工作,但是我根本無法弄清楚如何使php'echo'成爲頁面主題進入表單中的相關字段。我還刪除了所有在鏈接中的頁面名稱後添加查詢字符串的嘗試,因爲我無法使其中的任何一個工作。我真的需要直接回答這個問題 - 這是我第三次在這裏問過,沒有任何工作。我認爲很明顯,我的技能非常薄弱,但我正在努力解決這個問題,這真的會幫助我解決一系列新問題。 提前感謝您的幫助。

+2

'echo $ _POST ='subject'' < - typo? – hjpotter92

+0

第一個地方出現一個錯誤:'<?php echo $ _POST ='subject'?>'必須是'<?php echo $ _POST ['subject']?>'。否則,你會覆蓋'$ _POST'並且'true'會被回顯。 – Jeff

+1

'<?php echo $ _POST ['subject']?>'保證會產生一個XSS漏洞。使用輸出過濾來解決這個問題。參考:https://www.owasp.org/index.php/Cross-site_Scripting_(XSS) – swa66

回答

1

重命名contact_2.html到contact_2.php所以它得到由PHP解釋器解析。

<a class="btn" href="../contact_2.html">Contact us about this item</a> 

相應地更改HREF。

最後更換您喜歡@manniL說<? php echo $_POST='subject' ? >

<?php if (!empty($_POST['subject'])) echo $_POST['subject']; ?> 

+0

嗨農場,我試過了。當我將錨點中的引用更改爲contact_2.php時,當我單擊該鏈接時,它將轉到帶有成功消息的新頁面,並且收到一封電子郵件。 contact_2.html中的表單未加載。不管怎麼說,還是要謝謝你。還有什麼建議? – Conkerface

+0

看着你的評論,你可能會事先錯過一個分號。 contact_2.php中有更多的php代碼嗎?你能發佈那個contact_2.php的內容嗎? – farmio

+0

嗨@farmio,我把contact_.php的名字改回了contact_2.hmtl,因爲.php擴展名只是拋出一個空白頁面。我已經在上面發佈了contact.php,但是如果有幫助,我會將完整的contact_2.html頁面添加到原始帖子中?感謝您參與並幫助我! – Conkerface

0

相反的echo $_POST='subject',這裏使用正確的語法:

echo $_POST['subject'];