2017-04-18 91 views
-1

後,我的客戶下訂單,我送使用下面的代碼的電子郵件確認,但我想,以防止PHPSESSID被包含在此電子郵件:不支持電子郵件PHPSESSID

$body = ""; 
    foreach ($_REQUEST as $Field=>$Value) { 
    if($Value != ''){ 
    $body .= "$Field: $Value\n\n"; 
    } 
    } 

在PHP文件的頂部,我有一個關於會話ID以下

<?php session_start(); ?> 
<?php if (!isset($_SESSION['id'])) : ?> 

不知何故,這必須創建一個PHPSESSID場,這是獲得由我的身體$代碼拿起一個值。

電子郵件輸出產生如下所示:

_fname: Mark 
_lname: Smith 
_Address_1: South St 
_Phone: 123-456-7890 
_email: [email protected] 
_Date_Needed: 4/19/17 
B1: Submit 
PHPSESSID: (some string of characters) 

有趣的是,B1提交和PHPSESSID都沒有,我現在用的變量,但代碼是找到這些值,並將其送回。 B1提交是一個惱人的,但我認爲PHPSESSID是一個可能的安全風險。

我使用$ _REQUEST從用戶獲取表單數據如下:

$_fname=$_REQUEST['_fname']; 
$_lname=$_REQUEST['_lname']; 
$_Address_1=$_REQUEST['_Address_1']; 

也許我應該改變,從$ _REQUEST至$ _GET,然後使用$ _GET在郵件生成呢?

+0

哪個是PHPSESSID?沒有代碼來支持這個問題。 –

+0

停止使用'$ _REQUEST' – nogad

+0

@nogad - 謝謝。但是,我應該用什麼來代替? – Bricked

回答

1

如果你的形式也越來越POST數據,然後只將其更改爲:如果它使用GET數據

foreach ($_POST as $Field=>$Value) { 
    if($Value != ''){ 
     $body .= "$Field: $Value\n\n"; 
    } 
} 

,將其更改爲的$_GET代替$_POST

+0

謝謝大家的建議。到目前爲止使用$ _POST解決了這個問題。我試過$ _GET,但是雖然解決了這個問題,但它也終止了所有輸出。我也嘗試了session_destroy(),但那沒什麼影響。 $ _POST是解決方案。謝謝 – Bricked

1

問題可能在於使用$ _REQUEST而不是$ _POST或$ _GET,具體取決於您的表單/標頭行爲。這就是說我會猜測,因爲你正在使用$ _REQUEST,所以你沒有對發送的數據做任何衛生處理。這可能會導致您的郵件系統被垃圾郵件發送者劫持,導致您的郵件被添加到反垃圾郵件黑名單中。您可能需要閱讀正確保護郵件系統或使用涵蓋這些問題的第三方庫。

會話ID由session_start()生成或重新生成/恢復;

+0

感謝您的意見 - 關於「消毒」我驗證用戶輸入刪除換行符和逗號。我還驗證了電子郵件/電話條目的正確格式,並確保所有數據輸入字段都是數字數據輸入。根據您對反垃圾郵件發送者的擔憂,這是否足夠「衛生」? – Bricked

+0

帕特里克 - 請看我更新的問題。我使用$ _REQUEST獲取表單數據。也許這是問題的一部分。 – Bricked

+0

會話ID不包含在get或post中,它是cookie數據的一部分。 Request是所有標題參數的組合,不僅僅是那些在表單中使用的參數,因此它被包含在內。 –

0

您提交的聲音就像是與輸入一個值。

您可以使用一個沒有任何值的提交類型的按鈕。

下面是一個例子,這裏的按鈕將不會出現在輸出了起來:

旁註:我這裏使用POST方法。如果這不能解決問題,我會簡單地刪除它。

<?php 

$body = ""; 
    foreach ($_REQUEST as $Field=>$Value) { 
    if($Value != ''){ 

    $body .= "$Field: $Value\n\n"; 

    // ... 

    } 
    } 

?> 

<form method="post"> 

    abc1: 
    <input name="abc1" value="abc1a" type="text"> 
    <br> 

    abc2: 
    <input name="abc2" value="abc2a" type="text"> 
    <br> 

    abc3: 
    <input name="abc3" value="abc3a" type="text"> 
    <br> 

    abc4: 
    <button name="abc4" type="submit">SUBMIT</button> 

</form> 
相關問題