2013-04-30 251 views
-2

我有一個web服務器能夠發送來自gmail帳戶的電子郵件。我有一個基於SQL查詢生成動態表單的頁面等。然後,我有一個表單輸入您的電子郵件地址,然後重定向到另一個頁面,顯示「發送消息」,並且該頁面上的代碼發送電子郵件。但是,如何更改電子郵件的內容,使其成爲上一頁生成的表格?我不想重新創建整個表並將其設置爲一個變量,因爲我認爲有一個更有效的方法來完成它。任何幫助,將不勝感激。在PHP郵件發送HTML表格

「的search.php」(此頁基於由先前的頁面執行的查詢表)

<html> 
<head> 
<style type="text/css"> 
table { 
background-color: #C0C0C0; 
} 

th{ 
width: 150px; 
text-align:center; 
border-style: solid; 
border-width: 2px; 
border-color: black; 
background-color: #008080; 
font-family: Helvetica; 
} 
td { 
border-style: solid; 
border-width: 2px; 
border-color: black; 
font-family: Helvetica; 
background-color: #FFFF00; 
text-align:center; 
} 
body { 
background-color:#1C2932; 
} 

h1 { 
font-family: Helvetica; 
font-size: 24px; 
color: #989898; 
} 

p { 
font-family: Helvetica; 
font-size: 18px; 
color: #989898; 
} 

</style> 
</head> 
<body> 

<?php 
include 'tablegen.php'; 

if(isset ($_POST['term'])) { 
$x = $_POST['term']; 
    connect($x); 
    tableGen(); 
}//end main if 
//area 52 what is going on... 

echo "<form action='email.php' method = 'post'>"; 
echo "<p><b>Do you want this in an email?</b></p>"; 
echo "<input type='text' name='send'>"; 
echo "<input type='submit' name='submit' value='Send!' />"; 
echo "</form>"; 

?> 
<br></br> 
<form method="LINK" action="landing.php"> 
<input type="submit" value="Go Back!"> 
</form> 

</body> 
</html> 

「email.php」(此頁實際發送的電子郵件)

<html> 
<head> 
<style> 
body { 
background-color:#1C2932; 
} 
p { 
font-family: Helvetica; 
font-size: 18px; 
color: #989898; 
} 

</style> 
</head> 
<?php 

$email = $_POST['send']; 

$headers = array(
'From: [email protected]', 
'Content-Type: text/html', 
'Content-Type: text/css' 
); 



mail($email,'HTML Email','I want to send an HTML table!!!',implode("\r\n",$headers)); 
echo "<p>Email Sent!</p>"; 
?> 
</html> 

「tablegen.php」(用於顯示錶格的功能) - WORKS !!!

<?php 
function connect(){ 

    mysql_connect("localhost","root","water123") or die ('Error Reaching Database'); 
    mysql_select_db("MathGuide"); 


} 
    //Area 51, idk what I'm doing 
function tableGen($x) { 
$term=$x; 
$sql = mysql_query("select * from student_info where ID like '%$term%'"); 
echo "<h1>STUDENT DATA for ID: $search</h1>"; 
echo "<table>"; 
echo "<tr> 
<th>ID</th> 
<th>Project</th> 
<th>Starter Project</th> 
<th>Course</th> 
<th>KDs Completed in your Course</th> 
<th>Projects Completed</th> 
<th>Project 1</th> 
<th>P1KD1</th> 
<th>P1KD2</th> 
<th>P1KD3</th> 
<th>P1KD4</th> 
<th>P1KD5</th> 
<th>Project 2</th> 
<th>P2KD1</th> 
<th>P2KD2</th> 
<th>P2KD3</th> 
<th>P2KD4</th> 
<th>P2KD5</th> 
<th>Project 3</th> 
<th>P3KD1</th> 
<th>P3KD2</th> 
<th>P3KD3</th> 
<th>P3KD4</th> 
<th>P3KD5</th> 
<th>Project 4</th> 
<th>P4KD1</th> 
<th>P4KD2</th> 
<th>P4KD3</th> 
<th>P4KD4</th> 
<th>P4KD5</th> 
</tr>"; 

while ($row = mysql_fetch_array($sql)) 
{ 
echo "<tr><td>"; 
echo $row['ID']; 
echo "</td><td>"; 
echo $row['Project']; 
echo "</td><td>"; 
echo $row['Starter Project']; 
echo "</td><td>"; 
echo $row['Course']; 
echo "</td><td>"; 
echo $row['KDs completed in your course']; 
echo "</td><td>"; 
echo $row['Projects Completed']; 
echo "</td><td>"; 
echo $row['Project 1']; 
echo "</td><td>"; 
echo $row['P 1 KD 1']; 
echo "</td><td>"; 
echo $row['P 1 KD 2']; 
echo "</td><td>"; 
echo $row['P 1 KD 3']; 
echo "</td><td>"; 
echo $row['P 1 KD 4']; 
echo "</td><td>"; 
echo $row['P 1 KD 5']; 
echo "</td><td>"; 
echo $row['Project 2']; 
echo "</td><td>"; 
echo $row['P 2 KD 1']; 
echo "</td><td>"; 
echo $row['P 2 KD 2']; 
echo "</td><td>"; 
echo $row['P 2 KD 3']; 
echo "</td><td>"; 
echo $row['P 2 KD 4']; 
echo "</td><td>"; 
echo $row['P 2 KD 5']; 
echo "</td><td>"; 
echo $row['Project 3']; 
echo "</td><td>"; 
echo $row['P 3 KD 1']; 
echo "</td><td>"; 
echo $row['P 3 KD 2']; 
echo "</td><td>"; 
echo $row['P 3 KD 3']; 
echo "</td><td>"; 
echo $row['P 3 KD 4']; 
echo "</td><td>"; 
echo $row['P 3 KD 5']; 
echo "</td><td>"; 
echo $row['Project 4']; 
echo "</td><td>"; 
echo $row['P 4 KD 1']; 
echo "</td><td>"; 
echo $row['P 4 KD 2']; 
echo "</td><td>"; 
echo $row['P 4 KD 3']; 
echo "</td><td>"; 
echo $row['P 4 KD 4']; 
echo "</td><td>"; 
echo $row['P 4 KD 5']; 
echo "</td></tr>"; 
} 

echo "</table>"; 
}//end main if 
+0

您的mysql_query容易受到SQL注入指出,參見[此鏈接](http://stackoverflow.com/questions/60174/how-to-prevent- SQL注入在PHP中)的方式來避免它 – dequis 2013-04-30 01:31:40

+0

其實,無論何時你包括用戶輸入,你應該消毒它以某種方式,請參閱[這個其他鏈接](http://stackoverflow.com/questions/129677/whats-the-best -method-for-sanitizing-user-input-with-php/130323),因爲html中的其他$術語容易受到XSS的影響 – dequis 2013-04-30 01:33:35

+0

非常感謝您指出這一點!本週末我肯定會花一些時間來堵塞安全漏洞。由於數據已公開,因此我並不太擔心這一點,因爲我只是建立一個門戶網站來更快地搜索,而不是下載整個電子表格。無論如何,我可以通過電子郵件發送此表嗎? – Carpetfizz 2013-04-30 01:40:42

回答

1

你應該將其產生的表可以由兩個包含一個PHP文件中的代碼,把連接到MySQL的代碼,這不,在不同的生成表查詢和代碼的代碼功能。

個人而言,我會通過創建一個模板引擎的字符串生成的電子郵件中的表,但保持了「回聲」的基礎代碼,你可以使用ob_start,並與ob_get_clean得到的內容給一個變量。然後,您將發送第二個參數mail()中的此變量的內容,而不是讀取「HTML電子郵件」的字符串。

還要注意securityissues我在評論

+0

如果我可以添加註釋,您可以稍微改進一下答案:跳過那個更快的部分。這通常是誤導性的,只會促使年輕程序員專注於錯誤的事情。 – 2013-04-30 01:47:14

+0

是的,非常真實。謝謝。 – dequis 2013-04-30 01:50:12

+0

嗨!感謝你的回答,我試着將它們分解成函數,現在我在「search.php」上得到一個空白頁面。我是PHP新手,所以請原諒我的任何新手的錯誤。我更新了「search.php」的代碼,並添加了「tablegen.php」的代碼。 – Carpetfizz 2013-04-30 01:59:50