2017-07-18 56 views
-2

我在我的簡單網站上有一個用戶登錄/註冊系統,一切都很好,但我希望有一個功能可以在單擊註銷按鈕時向用戶發送通用電子郵件。可能會說一些類似的請給我們發電子郵件,關於您在我們網站上的發現。登出時發送的電子郵件

該網站是一個娛樂公司,書出了嘉年華設備,註冊和登錄純粹是讓用戶查看價格,如果他們對實際產品感興趣。

我不知道在哪裏或如何實現這樣的事情。

我的理解是我必須創建一個查詢數據庫的請求從電子郵件列的電子郵件,如果用戶的電子郵件地址存在繼續發送電子郵件(如果他們在註銷點,那意味着電子郵件地址在數據庫中可用)然後一旦它被髮送登錄用戶並重定向到一個頁面。我只是不知道如何完成查詢。

任何建議,將不勝感激

ps的,我不知道你會需要才能看到我做了什麼,看看有什麼文件?

這是我的註銷頁面:

<?php 
require_once 'db.php'; 
session_start(); 

if (isset($_SESSION['username']) && !empty($_SESSION['username'])): 
    if (isset($_GET['action']) && !empty($_GET['action'])) { 

     $action = $_GET['action']; 

     if ($action == "logout") { 
      $stmt = $pdo->prepare("SELECT email FROM users WHERE email = ? "); 
      $stmt->execute([$_SESSION['username']]); 
      $email = $stmt->fetchColumn(); 

      $message = "Hellow you just used our website...."; 

      if (mail($email, "Feedback", $message)) { 
       // the email is sent now log the user out. 
       session_destroy(); 
       header("location:login_page.php"); 
       exit(); 
      } 

     } 

    } 
endif; 
?> 
+1

嗯,我想你應該在用戶登錄後將用戶的信息(如電子郵件,姓名等)存儲在會話變量中,因爲我想象你在查詢時是否檢查過該用戶是否存在於你的網站上,登錄將該信息保存在該會話變量中,然後在任何需要的地方使用它 – kikemnzz

+0

您正在使用核心php或任何MVC框架......? – GYaN

回答

0

你可以按照下面的步驟來實現這一目標 步驟1: 當用戶登錄時,拯救他的電子郵件ID在session。 I.e當登錄成功時,您必須發送一些「成功」響應並重定向到user page。因此,在此之前,如果登錄成功,請創建會話並將電子郵件ID存儲在其中。 login.php

<?php 
session_start(); 
//Some database actions... 

if($login == "success"){ // Just an example 
    $_SESSION["email"] = $EMAIL // This is the user Email Address. 
} 

?> 

第2步:

當用戶註銷時,他必須被重定向到logout頁面,你摧毀所有的sessions.You'll要調用觸發郵件功能在功能。 在logout.php

<?php 
session_start(); 

$EMAIL = $_SESSION["email"] // Get the previously saved email in login process. 

triggerMail($EMAIL); 


session_unset(); 
session_destroy(); 

header("location:home.php"); 
exit(); 


function triggerMail($email){ 

//Your email logic.. return either true or false. 

} 
?> 
+0

@kikemnzz謝謝你的建議。我腦海裏只有這個理論,不知道該怎麼做。 –

+0

謝謝你,我會實施你的建議到我目前的登錄頁面,然後做註銷步驟,並希望我做到了正確。 –

0

當用戶成功登錄在,如果他們使用他們的電子郵件地址登錄,然後存儲在一個會話中的電子郵件地址。然後在銷燬會話之前註銷,將電子郵件發送到存儲在會話中的電子郵件。

然後有這樣的退出鏈接:

<a href="logoutpage.php?action=logout">Logout</a> 

那麼你可以覈實,如果logoutpage用戶想註銷的行爲。

<?php 
session_start(); 
if (isset($_SESSION['currentUser']) && !empty($_SESSION['currentUser'])): 

    if (isset($_GET['action']) && !empty($_GET['action'])) { 

     $action = $_GET['action']; 

     if ($action == "logout") { 
      $message = "Hellow you just used our website.... what ever you want to write"; 

      if (mail($_SESSION['currentUser'], "Feedback", $message)) { 
       // the email is sent now log the user out. 
       session_destroy(); 
       header("location:loginPage.php"); 
       exit(); 
      } 

     } 

    } 
endif; 
?> 

NB:$_SESSION['currentUser']是你當 用戶登錄被創建和存儲他們的電子郵件會話。

那麼如果你不使用電子郵件地址作爲登錄用戶名,那麼你可以在用戶登錄前查詢電子郵件地址。然後發送電子郵件然後註銷。

<?php 
session_start(); 

if (isset($_SESSION['currentUser']) && !empty($_SESSION['currentUser'])): 
    if (isset($_GET['action']) && !empty($_GET['action'])) { 

     $action = $_GET['action']; 

     if ($action == "logout") { 
      $stmt = $dbh->prepare("SELECT email FROM users WHERE userID = ? "); 
      $stmt->execute([$_SESSION['currentUser']]); 
      $email = $stmt->fetchColumn(); 

      $message = "Hellow you just used our website...."; 

      if (mail($email, "Feedback", $message)) { 
       // the email is sent now log the user out. 
       session_destroy(); 
       header("location:loginPage.php"); 
       exit(); 
      } 

     } 

    } 
endif; 
?> 

我你使用的mysqli或PDO因爲你沒有指定你的問題太多,其API中號不退出肯定的是,上述使用PDO。

+0

我正在使用PDO,我不確定要提供什麼樣的信息,因爲我並不完全瞭解我自己如何解釋我正在嘗試做什麼 –

+0

有沒有你使用$ _GET的原因?爲什麼im問無處不在我讀人說get得不安全,應該用$ _POST代替。對於noob問題抱歉。 –

+0

我得到這個錯誤警告:郵件():「sendmail_from」沒有在php.ini中設置或自定義「發件人:」頭在第17行D:\ xamp \ htdocs \ test \ logout.php中缺少你上面的幫助腳本。我改變了上面的細節來匹配我目前的詳細信息 –