好吧,我在我的智慧結束在這裏。我正在爲一位朋友建立一個網站,以展示他的工作。每一塊都有它自己的頁面。在這些網頁上,我們有一個鏈接使用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">×</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 © 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'成爲頁面主題進入表單中的相關字段。我還刪除了所有在鏈接中的頁面名稱後添加查詢字符串的嘗試,因爲我無法使其中的任何一個工作。我真的需要直接回答這個問題 - 這是我第三次在這裏問過,沒有任何工作。我認爲很明顯,我的技能非常薄弱,但我正在努力解決這個問題,這真的會幫助我解決一系列新問題。 提前感謝您的幫助。
'echo $ _POST ='subject'' < - typo? – hjpotter92
第一個地方出現一個錯誤:'<?php echo $ _POST ='subject'?>'必須是'<?php echo $ _POST ['subject']?>'。否則,你會覆蓋'$ _POST'並且'true'會被回顯。 – Jeff
'<?php echo $ _POST ['subject']?>'保證會產生一個XSS漏洞。使用輸出過濾來解決這個問題。參考:https://www.owasp.org/index.php/Cross-site_Scripting_(XSS) – swa66